패스트캠퍼스 컴퓨터 공학자 따라잡기 온라인 완주반
운영체제(이준희 님) 파트를 수강하며 공부한 내용을 정리한 자료입니다.
배너: godori님이 만드신 배너 메이커 활용
선점형과 비선점형 스케쥴러
선점형 스케쥴러 (Preemptive Scheduling):
하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음.
비선점형 스케쥴러 (Non-preemptive Scheduling):
하나의 프로세스가 끝나지 않으면 다른프로세스는 CPU를 사용할 수 없음
선점형과 비선점형 스케쥴러 차이
- 비선점형: 프로세스가 자발적으로 blocked 상태로 들어가거나 실행이 끝났을 때만 다른 프로세스로 교체 가능
- 선점형: 프로세스 running 중에 스케쥴러가 이를 중단시키고 다른 프로세스로 교체 가능
그림1. 선점형과 비선점형 스케쥴러 비교
- 위 그림에서 선점형 스케쥴러의 경우 2칸의 시간이 흐를 때마다 실행 중인 프로세스를 중단시키는 것을 가정하고 있다.
스케쥴링 알고리즘 조합
스케쥴링 정책(policy)에 따른 스케쥴러 구분
- FIFO(FCFS), SJF, Priority-Based는 어떤 프로세스를 먼저 실행시킬 지에 대한 알고리즘 (이들 자체만으로는 비선점형 스케쥴링에 가깝다)
- Round-Robin은 시분할 시스템을 위한 기본 알고리즘 (선점형 스케쥴러)
그림2. 스케쥴링 알고리즘 조합 예시
- 시분할 (2초 단위)
- 프로세스 상태 고려
- 정적 우선순위 기반
- 선점형
위 예시의 경우 시분할 기준이 되는 타이머 시점에서만 우선순위 체크하는 것으로 가정
참고로 마우스나 키보드의 반응이 느린 경우는 스케쥴러가 해결해야 하는 이슈가 있는 것이다.
사용자가 프로그램을 원활하게 사용하기 위해서는 다양하고 복잡한 스케쥴러 알고리즘이 필요하다.
프로세스의 특성에 따라 인터랙티브, IO, CPU 중심 프로세스 등으로 미리 구분할 수 있다면 보다 개선된 스케쥴링이 가능하다.