CPU 스케줄링
CPU 스케불링 : ready queue안에, 즉 메모리 안 여러 프로세스가 대기하고 있을 때 어떤 프로세스를 먼저 CPU 서비스 받게 할 것인지 스케줄링함.
즉 CPU에게 다음에 어떤 일을 하게 할 것인지 스케줄링하기 때문에 CPU 스케줄링이라고 불린다.
CPU 스케줄링은 선점과 비선점 방식으로 나뉘어진다.
CPU 스케줄링의 종류 : 선점 스케줄링과 비선점 스케줄링
-
선점 방식 : Time Sharing System에서 타임 슬라이스가 모두 소진되거나 더 높은 우선 순위 프로세스가 발생되었을 때 현 프로세스로부터 CPU를 강제로 회수할 수 있는 것을 말한다.
-
비선점 방식 : 프로세스가 자원을 할당 받았을 경우, 자원을 스스로 반납할 때까지 계속 그 자원을 사용하도록 허용하는 정책이다.
즉 선점 방식은 한 프로세스가 다른 프로세스가 실행 중인데도 중간에 cpu를 가로챌 수 있는 것이고, 비선점 방식은 중간에 cpu를 가로챌 수 없는 것이다.
스케줄링의 척도(Scheduling criteria)
- CPU Utilization (CPU 이용률) : a - b - c (80% 이용) < b - a - c (100% 이용) 이용률이 높을수록 좋다.
- Throughput (처리율) : 시간당 작업 처리율. 작업 처리율이 높을수록 좋다.
- Turnaround time (반환 시간) : 작업이 ready queue에 들어가서 작업을 끝내고 나올 때까지의 시간. 위의 천이도에서 프로세스가 생성되고 종료되기까지의 시간. 반환 시간이 적을수록 좋다.
- Waiting time (대기시간) : CPU 서비스를 받기 위해 ready queue에서 얼마나 기다렸는지이다. 대기 시간이 적을수록 좋다.
- Response time(응답시간) : Interactive system에서 중요. 응답 시간이 적을수록 좋다.
CPU Scheduling Algorithms(CPU 스케줄링 알고리즘)
- First-Come First-Served (FCFS) : 먼저 큐에 온 프로세스가 먼저 서비스된다.
- Shortest-Job-First (SJF) : 작업시간 짧은 프로세스를 먼저 서비스한다.
- Priority : 우선순위가 높은 순으로 먼저 서비스한다.
- Round-Robin(RR) : 돌면서 순서대로 서비스한다.
- Multilevel Queue : queue를 여러 개 둔다.
- Multilevel Feedback Queue : queue를 여러 개 둔다.
1. First-Come First-Served (FCFS)
- 간단하고 공정함.
- FCFS가 꼭 좋은 성능을 가진 것은 아니다. 예시 : 평균 대기 시간과 비교하기.
1 ) P1 -> P2 -> P3 순서로 job queue에 도달했을 때 FCFS 같은 경우에는 아래와 같이 프로세스가 실행됨.
p1과 p2, p3의 순서로 프로세스가 실행되니 average waiting time을 계산해보면 17 msec이 도출된다.
2) 반면 p2 -> p3 -> p1의 순서로 프로세스가 실행된다고 해보자.
p2과 p2, p3의 순서로 프로세스가 실행되니 average waiting time을 계산해보면 3msec이 도출된다.
따라서 FCFS의 방식이 항상 성능이 좋은 것이 아니라는 것을 알 수 있다.
이렇듯 CPU 실행시간이 긴 프로세스가 앞에 오는 것을 호위효과라고 한다.
- 호위효과 : 왕이 가면 시중이 따라가듯, cpu 실행시간이 긴 프로세스가 앞에 나와 나와 나머지 프로세스가 뒤에서 오랫동안 기다리는 것을 말한다.
- FCFS는 비선점 스케줄링에 속한다.