운영체제
2. CPU 스케줄링
홍비
2022. 5. 7. 20:01
인프런의 [그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 내용이다.
간단하게 들은 내용을 정리한 것으로, 더 자세한 내용을 원한다면 위 강의를 구매하는 것을 추천한다.
짧은 강의 형태로 단시간에 운영체제를 배우고 싶은 사람, 쉽게 운영체제를 배우고 싶은 사람에게 적합하다고 생각한다.
✏️ CPU 스케줄링 개요
- 운영체제가 모든 프로세스에게 CPU를 할당/해제하는 일
- 어떤 프로세스들에게 할당해야 하는가? 또 얼마나 할당해야 하는가?
- 프로세스를 담고 있는 PCB가 준비상태의 다중 큐를 참조
- 다중 큐는 큐(queue)라는 자료구조로 관리
✏️ 스케줄링 목표
- 리소스 사용률 - CPU 사용률이나 I/O 사용률 높이기
- 오버헤드 최소화
- 공평성 - 모든 프로세스에게 공평하게 CPU가 할당되어야 함. 우선순위는 시스템에 따라 달라질 수 있음.
- 처리량 - 같은 시간 내 더 많은 처리를 하는 것이 목표
- 대기시간 - 작업을 요청하고 실제 작업이 이루어지기 전까지 대기하는 시간이 짧은 것을 목표로 함
- 응답 시간 - 사용자의 요청이 얼마나 빨리 처리되는지
📌 처리량과 응답 시간의 목표를 같이 달성할 수 없음. 시스템에 따라 목표를 다르게 설정.
- CPU burst time - CPU가 일을 수행하는 시간
- I/O burst time - I/O 요청에 대한 응답을 기다리는 시간
✏️ FIFO
- First-In First-Out
- 일괄처리 시스템에 적절
- 먼저 들어온 프로세스가 완전히 끝나야 다음 프로세스 실행 가능 (ex. 마트 계산대)
- 단순하고 직관적
- Burst Time이 짧은 게 먼저 실행되면, 평균 대기 시간이 짧아짐
- Burst Time이 긴 게 먼저 실행되면, 평균 대기 시간이 길어짐
- 프로세스의 burst time에 따라 성능의 차이가 심하게 남 → 현대 운영체제에서 잘 쓰이지 않음
✏️ SJF
- Burst Time이 짧은 프로세스가 먼저 실행됨 → Burst Time이 짧은 프로세스가 계속 들어오면, Burst Time이 긴 프로세스는 계속 기다려야 함(알고리즘 구현 실패)
- 프로세스의 종료 시간 예측 힘듦
- FIFO보다 성능이 더 좋음
✏️ RR
- Round Robin
- 시분할 시스템에 적절
- FIFO 알고리즘의 단점 해결 - 할당된 시간을 정해두고, 그 시간이 지나면 강제로 다른 프로세스에게 일정 시간만큼 할당
- 타임 슬라이스 / 타임 퀸텀 - 프로세스에게 할당하는 일정 시간
- 오버헤드가 너무 크지 않는 최적의 타임 슬라이스를 찾는 것(windows-20ms, Unix-100ms)
- 오버헤드 - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간/메모리 등을 말함
✏️ MLFQ
- Multi-Level Feedback Queue
- 오늘날 운영체제에서 가장 일반적으로 쓰이는 CPU 스케줄링
- RR의 상위 호환
- CPU Bound Process - CPU 작업만, CPU의 사용률과 처리량이 제일 중요.
- I/O Bound Process - 1초 CPU, 10초 I/O. 응답 속도.
- 우선순위가 낮을수록 타임 슬라이스 크기가 커짐