CPU scheduling 개요


process priority

프로세스마다 우선순위가 다르다. 왜 다를까? I/O bound process는 cpu를 조금 쓰고 I/O 작업을 하는데 오랜 시간을 쓰기 때문에 우선순위가 높고 CPU bound process는 cpu 작업을 오래하기 때문에 우선순위가 낮다.

I/O bound process를 빨리 실행시켜 입출력장치를 끊임없이 작동시키고, 그 다음 CPU bound process에 집중적으로 CPU를 할당해주는게 효율적이다.

scheduling queue

image.png

운영체제는 메모리로 적재되고 싶은 프로세스,CPU를 이용하고 싶은 프로세스, 입출력장치를 이용하려는 프로세스들을 scheduling queue에 삽입하여 줄을 세운다.

ready queue: cpu를 이용하고 싶은 프로세스들이 서는 줄 waiting queue: 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄

preemptive & non-preemptive scheduling

preemptive scheduling: 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 강제로 다른 프로세스에게 할당할 수 있는 스케줄링 방식

non-preemptive scheduling: 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 쓸 수 없음

preemptive는 자원의 독점을 막고 골고루 분배할 수 있지만 context-switch에서 오버헤드가 발생 non-preemptive는 context-switch는 적어 오버헤드는 적지만, 프로세스가 골고루 자원을 사용할 수 없음

CPU scheduling algorithm


First Come First Served scheduling

준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식이다. 가장 공정해 보이지만, 때때로 프로세스들이 기다리는 시간이 매우 길어질 수 있다.

convoy effect: 짧은 시간을 실행하기 위해 오래기다리게 되는 현상

Shortest Job First scheduling

이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식. 비선점형 알고리즘이다.