[운영체제] CPU 스케쥴링 (1)
2022. 3. 16. 17:37ㆍCS/OS
- CPU burst : CPU만 실행되는 단계 (load, add, read)
- I/O burst : I/O만 실행되는 단계
: 사람이 사용하는 부분에서는 interactive한 job이 많이 나옴. CPU burst가 짧아지고 많아짐.
- CPU bound job : CPU를 많이사용하는 경우
- I/O bound job : I/O를 많이 사용하는 경우 (주로 interactive한 job. 사람과 맡닿아 있기 때문. 가능하면 i/o에게 우선적으로 주는 것이 CPU의 작업.)
- 누구에게 우선적으로 줄 것인가?
- 얼만큼 시간을 두고 뺏을 것이냐?
>> 주요한 이슈
CPU Scheduler & Dispatcher
(HW 아님. 운영체제 안에서 작동하는 코드)
- CPU Scheduler : ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. ( 운영체제 안에서 CPU를 스케쥴링하는 코드)
- Dispatcher : CPU 제어권을 CPU를 주는 과정. 프로세스에서 프로세스 넘겨주는 과정을 context switch라고 함.
- 언제 필요한가? 다음과 같은 상태 변화 있는 경우
- Running -> Blocked (I/O 요청하는 시스템 콜)
- Running -> Ready (할당 시간 만료로 Timer Interrupt)
- Blocked -> Ready (I/O 완료 후 인터럽트 : CPU 얻을 수 있는 권한을 줌.)
- Terminate : 더 이상 할 일 없음.
1-4 에서의 스케줄링은 nonpreemptive (= CPU를 갖고 있어도 실행 안되어서 강제로 빼앗지 않고 자진 반납.)
다른 스케쥴링은 preemptive (= 강제로 빼앗음.)
'CS > OS' 카테고리의 다른 글
[운영체제] CPU Scheduling (3) (0) | 2022.04.16 |
---|---|
[운영체제] CPU Scheduling (2) (0) | 2022.03.18 |
[운영체제] Process Management (2) (0) | 2022.03.16 |
[운영체제] Process Management (1) (0) | 2022.03.16 |
[운영체제] Process 3 (0) | 2022.01.24 |