[OS] CPU Scheduling

touhou09·2024년 11월 9일
0

컴퓨터 이론

목록 보기
20/47

CPU Scheduling

OS가 어떤 process에 CPU 자원을 할당하고 어떤 process가 기다리도록 할지 결정하는 CPU 자원을 배분하는 과정을 CPU Scheduling이라고 한다.

process 우선순위

모든 process는 각자의 우선순위를 가지고 있다.
우선순위가 높은 process는 빠르게 처리해야하는 process를 의미하며 대표적으로는 I/O 작업이 많은 process이다.

대부분의 process는 CPU와 입출력장치 모두 사용하며 실행되는데, 이를 다르게 말하면 process는 실행 상태와 대기 상태를 반복하며 실행된다.

Process는 종류마다 I/O 장치를 사용하는 시간과 CPU를 사용하는 시간의 양에 차이를 가지고 있으며 디스크 백업, 비디오 재생 등과 같은 I/O 작업이 많은 process도 있고 복잡한 연산, 그래픽 처리 작업 등 CPU 작업이 많은 process도 있다.

이를 I/O bound processCPU bound process 라고 부른다.
CPU bound process와 IO bound process가 동시에 CPU 자원을 요구했다고 가정했을때, IO bound process를 가능한 할 빨리 실행시키면, IO 장치를 끊임 없이 작동시키고 그 다음 CPU bound proccess에 집중적으로 CPU를 할당하는 것이 더 효율적이기 때문에 IO bound process에 먼저 CPU를 할당시킨다.

위 상황처럼 모든 process가 CPU를 차례대로 돌아가며 사용하는 것보다 상황에 맞게 CPU를 배분하는 것이 더 효율적이다.
이를 위해 OS는 process마다 priority를 부여하고, 각 process의 PCB에 명시한 다음 PCB에 적힌 priority를 기준으로 먼저 처리할 process를 결정한다.

Scheduling Queue

다음에 CPU를 사용하거나 memory에 적재되기 위해 기다리고 있는 process들을 모든 PCB를 통해 일일이 탐색하면 시간이 너무 오래 걸리기 때문에 OS는 Scheduling queue를 구현하고 이를 관리한다.

OS는 memory에 적재, CPU 요청, IO장치 사용 등을 위한 process들을 Scheduling queue에 넣어 관리하도록 한다.

대표적으로 2가지 종류의 queue가 있는데 ready queuewaiting queue이다.
ready queue는 CPU를 이용하기 위한 process를 삽입하고 waiting queue는 IO장치를 이용하기 위한 process들을 삽입하는 queue이다.

OS는 PCB들이 queue에 삽입되는 순서대로 process를 하나씩 꺼내어 실행하되, priority가 높은 process를 먼저 실행한다.
priority가 낮은 processrk ajswj queue에 삽입되어 줄을 섰다고 할지라도 priority가 높은 process가 먼저 처리될 수 있다.

waiting queue또한 동일한 구조를 가진다.
같은 장치를 요구한 process들은 같은 waiting queue에서 기다리고 작업이 완료되어 interupt가 발생하면 OS는 waiting queue에서 작업이 완료된 PCB를 찾고 이 PCB를 ready 상태로 변경한 뒤 waiting queue에서 제거한다.

선점형과 비선점형 Scheduling

OS에서 process에 CPU를 사용하도록 허락하여 해당 process가 CPU를 사용하고 있다고 할 때, 갑자기 다른 process가 CPU를 즉시 사용해야 한다고 요청하는 경우 2가지 방식으로 처리 가능하다.

선점형 Scheduling
Process가 CPU를 비롯한 자원을 사용하고 있더라도 OS가 process로부터 자원을 강제로 빼앗아 다른 process에 할당할 수 있는 scheduling 방식을 의미한다.
이러한 방식은 process 마다 정해진 시간만큼 CPU를 사용하고 정해진 시간이 되면 interupt를 발생시키는 형태라고 할 수 있다.
어느 한 process의 자원 독점을 막고 process들에 골고루 자원을 배분할 수 있지만 그만큼 context switching에서 overhead가 발생할 수 있다.

비선점형 Scheduling
하나의 process가 자원을 사용하고 있다면 그 process가 스스로 대기 상태에 접어들거나 종료되기 전까지는 다른 process가 끼어들지 못하는 방식의 Scheduling이다.
만약 비선점형 Scheduling 방식으로 자워늘 이용하는 process가 있다면 다른 process들은 그 process의 사용이 모두 끝날때까지 기다려야한다.
context switching에서 발생하는 overhead가 선점형보다 적지만 하나의 process가 자원을 사용 중이라면 당장 자원을 사용해야 하는 상황이라도 무작정 기다릴 수 밖에 없다.

profile
Engineer가 되기 위하여

0개의 댓글