
CPU 스케줄링?
- 운영체제가 모든 프로세스에게 CPU를 할당/해제 하는 것
- 프로세스 특성과 상황을 고려하지 않으면 CPU가 효율적으로 쓰이지 못하고, 시스템 전체 성능(응답 속도, 처리율, 자원 활용)이 크게 떨어짐
다중 큐
- 준비 상태와 대기 상태는 큐라는 자료구조로 관리됨
- 프로세스 정보를 담고 있는 PCB가 준비/대기 상태의 다중 큐에 들어가서 실행되기를 기다림 → CPU 스케줄러에 의해 실행상태로 전환
스케줄링 목표
- 리소스 사용률 높이기
- 오버헤드 최소화
- 공평성
- 처리량 - 같은 시간 내에 더 많이 처리할 수 있는 방법을 목표로 함
- 대기시간 - 짧은 것을 목표로 함
- 응답시간 - 짧은 것을 목표로 함
→ 모두 최적화 하기에 어렵기 때문에 사용자가 사용하는 시스템에 따라 목표를 다르게 설정
CPU 스케줄링 알고리즘
- FIFO (비선점형)
- 먼저 들어온 프로세스가 완전히 끝나야 다음 프로세스 실행 가능
- 단순하고 직관적이지만 실행시간이 긴 프로세스를 처리하는 동안 뒤에 프로세스들이 기다려야 해서 CPU 사용률이 떨어짐
- SJF (비선점형)
- 짧은 작업 먼저 처리
- 어떤 프로세스가 얼마나 걸릴지 예측하기 힘들고, 실행시간이 긴 프로세스는 오랫동안 실행되지 않을 수 있음(뒤로 밀려나서)
- RR (선점형)
- 긴 프로세스에게 시간을 할당한 후 시간이 지나면 끝나지 않았더라도 다른 프로세스에게 일정 시간 할당 (타임 슬라이스)
- 타임 슬라이스 값에 따라 성능이 달라짐
- 시간을 잘개 조개면 컨텍스트 스위칭이 많이 일어나서 오버헤드가 큰 상황이 생김
- MLFQ (선점형)
- 우선순위를 가진 큐를 여러개 두고, 우선순위에 따라 처리
- 우선순위가 높으면 타임 슬라이스가 작고(빨리 처리 가능한 작업) 우선순위가 낮으면 타임슬라이스 크기가 커짐(처리 시간이 긴 작업)