CPU의 스케줄링이란? / 선점형 스케줄링과 비선점형 스케줄링
선점형 스케줄링과 비선점형 스케줄링을 알아보기 전에
CPU의 스케줄링에 대해 알아보아야 한다.
CPU의 스케줄링이란?
=> 프로세스가 작업을 수행하려면 스케줄러로부터 CPU를 할당 받아야 한다.
CPU 스케줄러는 ready 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할 지 결정한다.
CPU 스케줄링을 각 프로세스에게 공평하게, 또 효율적이게 하기 위해서 고려해야 하는 사항들이 있다.
- 선점형 스케줄링과 비선점형 스케줄링
=> 선점(preemptive)이란 "빼앗을 수 있음"을 말한다.
즉, 선점과 비선점 스케줄링 방식은 어떤 프로세스가 CPU를 할당 받으면
이를 운영체제가 강제로 회수할 수 있는 스케줄링 방식인 지, 아닌 지에 대한 내용이다.
1. 선점형 스케줄링
-> 실행 상테에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있다.
-> 우선순위가 높은 프로세스를 먼저 수행할 때 유리하고
빠른 응답 시간을 요구하는 대화식 시분할 시스템에 유용하다.
-> 많은 오버헤드(overhead)를 초래한다.
(* overhead : 프로그램의 실행 흐름에서 나타나는 현상 중에 하나로, 특정 기능을 수행하는데 드는 간접적인 시간, 메모리 등 자원을 말함)
2. 비선점형 스케줄링
-> 어떤 프로세스가 실행 상태에 들어가면 그 프로세스가 끝나거나
CPU를 자진 반납하는 경우가 아니라면 계속 실행되는 것을 말한다.
-> 응답 시간을 예측할 수 있고 일괄 처리 방식이 적합하다.
-> 모든 프로세스에 요구에 대해 공정하다.
-> context switch에 대한 오버헤드도 없고 스케줄러가 할 일도 적어져 효율적일 수 있으나
전체 시스템의 처리율이 떨어지게 된다.