1. 스케줄링
- 메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할지 정하는 것
- 스케줄링을 사용함으로써 다중 프로그래밍이 가능해지고, CPU 이용률을 극대화 시킬 수 있다
[ 용어 정리 ]
- 응답시간 (Response Time)
: 사용자가 데이터 입력 후, 출력이 이루워 질 때까지의 시간
- 반환 시간 (Turnaround Time)
: 프로그램 시작 후, 끝날 때 까지의 총 시간
- 대기 시간 (Waiting Time)
: 프로세스들이 준비 상태로 대기큐에서 기다린 시간의 총 합
- CPU 이용률
: 총 경과 시간 대비 CPU가 순수하게 사용자 프로세스를 수행 한 시간의 비
- 처리량 (Throughput)
: 단위 시간당 처리 된 프로세스 개수
2. CPU 스케줄링 종류
1) 비선점 스케줄링
- 프로세스가 CPU를 점유하고 있다면, 다른 프로세스가 뺏을 수 없는 방식
- 프로세스 배치에 따라 효율성 차이가 많이 남
- 선점 스케줄링에 비해 오버헤드가 상대적으로 적음
(1) FIFO
- 준비 큐에 도착한 순서대로 CPU 할당 받음
- 도착한 순서대로 CPU를 할당하므로, 공정한 방식
(2) SJF (Shortest Job First)
- 대기 큐에서 수행시간이 가장 짧은 프로세스 먼저 실행
- 공평성이 어긋남
- 처리시간이 긴 프로세스의 경우, 처리시간이 짧은 프로세스가 계속 들어온다면 영영 CPU를 할당 받지 못할수도 있음
=> 기아 (Starvation)현상 발생
(3) 우선순위(priority) 스케줄링
- 우선순위가 높은 순서대로 처리
- 기아현상 발생 가능
(4) HRN (Highest Response ratio Next)
- SJF스케줄링에 aging기법을 합친 방법
- 기아 현상을 해결하기 위해 대기 시간이 길어지면 우선 순위를 높인다
- 공평성이 완전히 해결 된 것은 아님
2) 선점 스케줄링
- 프로세스가 CPU를 할당받아 실행 중이더라도, 운영체제가 CPU를 강제로 뺏을 수 있는 방식
- 처리시간이 매우 긴 프로세스가 CPU를 독점적으로 사용하는 것을 막을 수 있음
=> 효율적인 운영가능
- 잦은 Context Switching으로 오버헤드가 많이 발생 함
(1) SRT (Shortest Remaining Time)
- 짧은 시간 순서대로 프로세스 수행
- SJF의 선점형 버전
(2) RR (Round Robin)
- 각 프로세스에 CPU 할당시간을 부여하고, FIFO처럼 수행 함
- 할당 시간이 너무 크면 FIFO와 다를 바가 없어지고, 너무 작으면 오버헤드가 커짐
(3) MQ : 다단계 큐 (Multi Level Queue)
- ready 큐를 여러개 사용 함
- 각각의 큐에는 우선순위가 있음
- 우선 순위가 높은 큐에 속한 모든 프로세스가 처리되야 다음 우선 순위 큐를 처리 가능
- 우선 순위는 바뀔 수 없음
(4) MFQ : 다단계 피드백 큐 스케줄링 (Multilevel Feeadback Queue)
- MQ에서 우선순위 변경이 가능 한 방식
- 큐와 큐 사이 이동이 가능하다
- 다단계 큐의 공평성 문제를 완화시킴