복습!
- 프로세스와 스레드
- 프로세스 : 부모, 자식 프로세스 처럼 그대로 같은 코드를 실행하는 형태
- 스레드 : 같은 코드를 그대로 복사하는 형태가 아닌 유용하게 복사해 사용하는 형태
# 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 |