OS 11 - CPU 스케줄링

11-1 CPU 스케줄링 개요

모든 프로세스는 CPU를 필요로 하기 때문에 운영체제는 각 프로세스마다 공정하고 합리적으로 CPU 자원을 할당해아한다.

스케줄링 큐


큐는 자료구조에서 FIFO이지만, 스케줄링에서의 큐는 FIFO 방식일 필요는 없다.


운영체제는 CPU를 쓰고 싶은 프로세스를 큐에 삽입하여 줄을 세우고, 특정 입출력장치를 이용하고 싶은 프로세스 역시 큐에 삽입하여 줄을 세운다. 이때, CPU를 이용하고 싶은 프로세스가 서는 줄을 준비 큐라고 하고, 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들의 줄을 대기 큐 라고 한다.

입출력이 완료되어 완료 인터럽트가 발생하면 운영체제는 대기 큐에서 작업이 완료된 PCB를 찾고, 이 PCB를 준비 상태로 변경한 뒤 대기 큐에서 제거하고, 준비 큐로 이동시킨다.


준비상태란? OS 10 - 프로세스와 스레드

CPU를 할당받았지만, 아직 차례가 아닌 상태


선전혐과 비선점형 스케줄링

갑자기 다른 프로세스가 CPU를 지금 당장 사용하길 요청했을 때,선점형 스케줄링과 비선점형 스케줄링이 가능하다.

  • 선점형 스케줄링
    • 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에게 할당할 수 있는 스케줄링 방식
    • 한 프로세스의 자원 독점을 막을 수 있고, 자원을 골고루 배분할 수 있다.
    • 문맥 교환 과정에서 오버헤드가 발생할 수 있다.

오버헤드란?

특정 기능을 수행하는데 드는 간접적인 시간, 메모리 등 자원을 말한다. 예를 들어, 10초가 걸리는 기능이 간접적인 원인으로 20초가 걸린다면, 오버헤드는 10초가 되는 것이다.


  • 비선점형 스케줄링
    • 프로세스가 종료되거나 대기 상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링 방식
    • 당장 자원을 사용해야 하는 프로세스는 다른 프로세스의 CPU 사용이 끝날 때까지 기다려야 한다.
    • 선점형 스케줄링보다 오버헤드가 적다.

대부분의 운영체제에서는 선점형 스케줄링 방식을 차용하고 있다.