[OS] 5장 - CPU 스케쥴링
5장 - CPU Scheduling
- 보통 프로그램은 CPU 작업과 IO작업이 번갈아 일어남
- CPU burst : CPU 작업이 연속적으로 실행되는 구간
- I/O burst : I/O작업이 연속적으로 실행되는 구간
- Interactive job에게 적절한 response 제공 요망
- CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용
- 여러 종류의 job(process)이 섞여 있기 때문에 CPU Scheduling이 필요함
- CPU job은 문제가 되지 않으나, I/O job은 사람과 interactive하기 때문에 I/O job에게 cpu를 줘야 함
- I/O Bound Process
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
- many short CPU bursts
- CPU Bound Process
- 계산 위주의 job
- few very long CPU bursts
CPU Scheduler & Dispatcher
- CPU Scheduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고름
- 운영체제 안에서 CPU Scheduling하는 코드
- Dispatcher
- CPU를 누구한테 줄지 결정을 했으면 실제로 주는 과정
- 이 과정이 context switch
- CPU 스케쥴링이 필요한 경우
- Running → Blocked (예: I/O 요청하는 시스템 콜) → nonpreemptive(자진 반납)
- Running → Ready (예: timer interrupt) → preemptive(강제로 빼앗음)
- Blocked → Ready (예: I/O 완료 후 interrupt) → preemptive
- Terminate → nonpreemptive
Scheduling Criteria
Performance Index(=Performance Measure, 성능 척도)
- CPU utilization
- Throughput
- Turnaround time(소요 시간, 반환시간)
- CPU를 쓰러 들어와서 나가기 까지의 시간
- Waiting time
- CPU를 Ready Queue에서 기다리는 시간
- CPU를 얻었다가 뺏겼다가 사용했다가를 반복하는데 이 때 기다리는 시간의 총합
- Response time
- Ready Queue에 들어와서 첫 CPU를 얻기까지 걸리는 시간
Multilevel Queue
- Ready Queue를 우선순위를 여러개로 나누어 관리 함
- foreground :
- background(batch) : 상호작용을 하지 않기 때문에 FCFS
MultiLevel Feedback Queue
- 결국 MQ는 자신의 우선순위를 바꾸지 못함, MFQ에서는 프로세스들이 우선순위를 바꾼다.
- CPU burst가 짧은 애들한테 우선순위를 먼저주고, 긴 애들은 점점 내려간다.
- 밑으로 갈수록 할당시간이 늘어나다가, 결국 FCFS에 도달하여 모두 처리할 수 있도록 함
CPU가 여러개 있는 경우의 스케쥴링
- Homogeneous Processor
- Symmetric Multiprocess : 모든 CPU들이 대등해서 모든 CPU가 스케쥴링
- Asymmetric Multiprocess : 하나의 CPU가 데이터 접근과 공유를 책임지고 나머지를 컨트롤 함
Real Time Scheduling
- Hard real time system
- 미리 real time을 파악해서 데드라인을 맞출 수 있도록 스케쥴링
- Soft real time system
- 반드시 데드라인을 맞추지 않아도 됨
- soft real-time task 우선순위를 일반 프로세스보다 높게 가지게하여 먼저 처리하게 한다.
Thread Scheduling
- 프로세스 안 쓰레드의 스케쥴링은 어떻게 할 것인가?
- Local Scheduling : User Level Thread
- Global Scheduling : OS가 쓰레드의 존재를 암
참고자료
반효경 교수님의 운영체제 강의를 참고하였습니다. (https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f)