ESL 연구실 활동/Kernel of Linux

리눅스커널강의 5~6강

천숭이 2022. 4. 15. 19:10

복습!

  • 프로세스와 스레드
    - 프로세스 : 부모, 자식 프로세스 처럼 그대로 같은 코드를 실행하는 형태
    - 스레드 : 같은 코드를 그대로 복사하는 형태가 아닌 유용하게 복사해 사용하는 형태 

 

 


 

# Process state
– TASK_RUNNING(ready or running)
– TASK_INTERRUPTIBLE(wait) – becomes runnable if signal arrives
– TASK_UNINTERRUPTIBLE(wait) – not respond to signal
– TASK_ZOMBIE
– TASK_STOPPED : PCB만 남은 상태, parent만이 없앨 수 있음

 

# Timeslice

 다른 (급한)프로세스에게 CPU를 뺏겨서 실행하지 못하고 남은 시간

Timeslice가 0이면 readyList에 있을 필요 x

 


## Scheduling Algorithm 스케줄링 알고리즘

 

# Ready Queue

- cpu가 해결해야하는 일들을 queue로 관리, 이 때 우선순위별로 큐를 나누고

그 큐를 또 두종류의 배열로 이루어진 큐로 나눔 (아래 그림)

- binary 배열의 원소값이 0이면 해당 인덱스에 해당하는 head pointer 가 가리키는 배열은 비어있다는 뜻

- binary 배열의 원소값이 1이면 그 반대

 

 

## Kernel Preemption

 

# Mutual Exclusion    ***중요!***

- proces A와 processB가 메모리에 동시에 접근하게 되면 마지막 접근한 내용 빼고는 소실된다.

따라서, 프로세스 하나씩 접근하고 동작이 끝나면 다음 프로세스가 접근해야 한다.

 

 

리눅스 커널이 전역변수에 접근하지 않으면 cpu를 가져올 수 있음

 

 


6강 Scheduling

 

# Timer

전기 신호로 주기적인 interrupt 발생

 

# Real-time Clock

비전기적(비휘발성)으로 interrput 발생

 

# PIC

- (Programmable Interrupt Controller)

- pic에 initerrupt 요청이 들어오면 block시킨 후 작업 수행 . . .

  cpu가 신호를 주면 다시 요청 받는 상태로

- INTR : interrupt request

- IMR : 마스킹 되지 않으면 (0이 아니면) 실행가능.

         인터럽트 사용 유무 결정 가능

 

 

# CPU -> BUS -> I/O

'ESL 연구실 활동 > Kernel of Linux' 카테고리의 다른 글

리눅스커널강의 7~9강 (작성중)  (0) 2022.04.17
리눅스커널강의 3~4강  (0) 2022.04.15
리눅스 커널 강의 1~2강  (0) 2022.04.15
리눅스 커널 강의 0  (0) 2022.04.15