선점형 스케쥴러와 비선점형 스케쥴러가 명시적으로 나온 이유는 선점형 스케쥴러를 구현하는 것이 어렵기 때문이라고 한다.
그 이유를 살펴보자.
- 선점형 스케쥴러 ( Preemptive Scheduling )
하나의 프로세스가 다른 프로세스를 대신해 프로세서(CPU)를 차지할 수 있으며, 시분할 시스템이 가능함 - 비선점형 스케쥴러 ( Non-Preemptive Scheduling)
하나의 프로세스가 끝나지 않으면, 다른 프로세스는 CPU를 사용할 수 없음. 즉, 스케쥴러가 실행되고 있는 프로세스를 선점할 수 없음.
시분할 시스템이 불가함.
선점형과 비선점형의 차이
- 비선점형
프로세스가 자발적으로 Blocking 상태로 들어가거나, 실행이 끝났을 때만 다른 프로세스로 교체가 가능함
첫 프로세스 실행시간이 긴 경우 응답시간이 길어질 수 있음 - 선점형
프로세스 running 중 스케쥴러가 이를 중단하고 다른 프로세스로 교체가 가능함
비선점형과 달리 첫 프로세스의 실행시간이 길더라도 시분할의 시간 단위에 따라 다른 프로세스로 바뀌어 실행하기에 응답시간이 짧아질 수 있음
스케쥴러 구분
- 비선점형 스케쥴러: FIFO, SJF, Priority-based
- 선점형 스케쥴러: RoundRobin [ 시분할 시스템을 위한 기본 알고리즘 ]
최신 알고리즘은 위 스케쥴링 정책을 복합적으로 조합함
'Study > Computer Science' 카테고리의 다른 글
[HTTP] URI, 웹 브라우저 요청 흐름 (0) | 2021.05.12 |
---|---|
[HTTP] 인터넷 통신 (0) | 2021.05.10 |
[OS] 프로세스간 커뮤니케이션 - IPC(InterProcess Communication) (0) | 2021.05.10 |
[운영체제] 프로세스 스케쥴링 (Process Scheduling) (0) | 2021.03.25 |