핵심 키워드 : CPU 스케줄링, 우선순위, 스케줄링 큐, 준비 큐, 대기 큐, 선점형 스케줄링, 비선점형 스케줄링

운영체제는 CPU를 어떻게 프로세스에 배분하는지 알아본다.

프로세스 우선순위

당장이라도 실행할 수 있는 준비 상태인 프로세스들에게 공정하게 CPU를 배분하려면 어떻게 해야 할까?

우선순위가 높은 프로세스란 빨리 처리해야하는 프로세스들을 의미한다. 우선순위가 높은 프로세스에는 대표적으로 입출력 작업이 많은 프로세스가 있다.

이를 이해하려면 일반적인 프로세스가 어떤 과정을 거치며 실행되는지 생각해 보아야 한다. 대부분의 프로세스들은 CPU와 입출력을 모두 사용하며 실행된다. 달리 말하면 프로세스는 실행 상태와 대기상태를 반복하며 실행된다.

입출력 작업이 많은 프로세스를 먼저 실행하는 것이 왜 더 효율적일까?

그런데 프로세스 종류마다 입출력장치를 이용하는 시간과 CPU를 이용하는 시간의 양에는 차이가 있다.

입출력 집중 프로세스 : 비디오 재생이나 디시ㅡ크 백업 작업을 담당하는 프로세스와 같이 입출력 작업이 많은 프로세스, 실행 상태보다는 입출력을 위한 대기 상태에 더 많이 머무른다.

CPU 집중 프로세스 : 복잡한 수학 연산, 컴파일, 그래픽 처리 작업을 담당하는 프로세스, 대기 상태보다는 실행 상태에 더 많이 머무른다.

NOTE - CPU 버스트와 입출력 버스트

CPU를 이용하는 작업을 CPU 버스트라고 하고, 입출력장치를 기다리는 작업을 입출력 버스트라 부릅니다. 즉, 프로세스는 일반적으로 CPU 버스트와 입출력 버스트를 반복하며 실행된다고 볼 수 있다. 그래서 입출력 집중 프로세스는 입출력 버스트가 많은 프로세스, CPU 집중 프로세스는 CPU 버스트가 많은 프로세스라 정의 할 수 있다.

상황에 맞게, 그리고 프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 하기 위해 운영체제는 프로세스마다 **우선순위**를 부여한다. 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, PCB에 적힌 우선순위를 기준으로 먼저 처리할 프로세스를 결정한다.