728x90
CPU & I/O burst
- CPU burst : CPU를 사용하여 작업하는 부분
- I/O burst : I/O 작업을 수행하는 부분
- 프로그램은 CPU burst 와 I/O burst 번걸아서 연속적으로 실행된다.
CPU Burst Time의 분포
- I/O bound job : CPU 를 잡고 계산하는 시간 보다 I/O에 많은 시간이 필요한 job 이다. 위의 그래프에서 알 수 있듯이 CPU burst를 짧게, 빈도는 많이 사용할 것이다.
- CPU bound job : CPU를 잡고 계산을 위주로 하는 job이다. CPU를 길게 연속적으로 사용하며 CPU burst 빈도는 적게 일어난다.
- 여러 종류의 job (= process) 이 섞여 있기 때문에 CPU 스케줄링을 통해, 자원을 효율적으로 사용해야 한다.
- Interactive job 이 너무 오래 기다리지 않도록 빠른 시간안에 적절한 응답을 제공해주어야 한다.
CPU Scheduler & Dispatcher
CPU Scheduler
Ready 상태의 프로세스들 중에서 이번에 어떤 프로세스에게 CPU 자원을 줄지 고르는 것을 의미한다.
Dispatcher
실제로 CPU 제어권을 CPU scheduler 에 의해 선택된 프로세스에게 넘겨주는 부분이다. 이 과정을 context switch 라고 한다.
주의할 점 : CPU 스케줄러나, Dispatcher는 독립적인 하드웨어나 소프트웨어가 아니라, 운영체제 상에서 이러한 매커니즘이 코드로 구현된 운영체제 내의 기능이라고 이해하면 쉽다 !
CPU 스케줄링이 필요한 경우
- Running -> Blocked : ex. CPU 를 잡고 있다가 오래 걸리는 I/O 작업을 요청받은 경우
- Running -> Ready : ex. 할당 시간이 만료되어서 timer interrput 발생한 경우
- Blocked -> Ready : ex. 요청된 I/O 작업 완료 후 디바이스 컨트롤러가 interrupt 걸어서 프로세스의 상태가 ready로 바뀐 경우
- Terminate : ex. 프로세스가 종료되어 새로운 프로세스에게 넘겨주어야 하는 경우
1, 4 번 스케줄링의 경우 강제로 빼앗지 않고 자진 반납(non-preemptive)하는 경우이다. 2, 3 은 강제로 빼앗는 경우이다. (preemptive)
728x90
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 12. 임계구역(Critical Section) 문제 & 세마포어 (Semaphore) & 뮤텍스 (Mutex) (0) | 2023.07.23 |
---|---|
[운영체제] 11. CPU Scheduling (2) - CPU 스케줄링 알고리즘 : Multilevel Queue & Multilevel Feedback Queue (0) | 2023.06.25 |
[운영체제] 9 (2) Process Management (0) | 2023.06.25 |
[운영체제] 9. 시스템 콜의 종류 - fork() , exec(), wait(), exit() (0) | 2023.06.25 |
[운영체제] 8.Process Management 1 - 프로세스의 생성과 종료 (0) | 2023.06.25 |