선점형 스케쥴러와 비선점형 스케쥴러와 관련된 내용을 알아보자.
먼저, 선점형 스케쥴러란 하나의 프로세스가 다른 프로세스 대신에 CPU 프로세서를 사용하도록 하는 스케쥴링 기법이다.
반대로 비선점형 스케쥴러는 하나의 프로세스가 끝나지 않으면 다른 프로세스가 CPU 프로세서를 사용하지 못하도록 하는 스케쥴링 기법을 말한다.
섬점형 비선점형 차이
- 비선점형: 프로세스가 자발적으로 block 상태로 들어가거나 실행이 끝났을 때만 다른 프로세스로 교체
- 선점형: 프로세스 running 중에 스케쥴러가 이를 중단시키고 다른 프로세스로 교체
- 우선 순위가 더 높은 프로세스를 우선적으로 처리
- 대부분의 운영체제에서 선점형 스케쥴러를 사용
- 2초의 시분할 적용
스케쥴러 구분
- FIFO(FCFS), SJF, Priority-based 방식은 어떤 프로세스를 먼저 실행시킬지에 연관있는 알고리즘
- Round Robin 방식은 시분할 시스템을 기본으로 한 알고리즘
- 정적 우선 순위를 적용한 선점형 스케쥴링
스케쥴러 이슈
우리가 흔히 렉 걸렸다고 표현하는 컴퓨터 반응 이슈는 스케쥴링 알고리즘이 해결해야하는 문제이다.
이에 대부분의 운영체제는 이를 해결하기 위해서 현재도 지속적으로 스케쥴링 알고리즘을 수정하고 보완하는 작업을 진행하고 있다.
- 리눅스 스케쥴러: O(1), CFS와 같이 다양한 방식으로 변경
- 인터랙티브, IO, CPU 중심 프로세스로 미리 구분할 수 있다면 보다 개선된 스케쥴링 가능