Search

11-1 CPU 스케줄링 개요

Last update: @1/7/2023
혼자 공부하는 컴퓨터구조 + 운영체제

운영체제

09 운영체제 시작하기

10 프로세스와 스레드

11 CPU 스케줄링

12 프로세스 동기화

13 교착 상태

14 가상 메모리

15 파일 시스템

CPU 스케줄링(CPU scheduling) : 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
프로세스 우선순위
프로세스의 구분
입출력 집중 프로세스(I/O bound process) : 비디오 재생이나 디스크 백업 작업을 담당하는 프로세스와 같이 입출력 작업(I/O burst, 입출력 버스트)이 많은 프로세스
실행 상태보다는 입출력을 위한 대기 상태에 더 많이 머무르게 됨
CPU 집중 프로세스(CPU bound process) : 복잡한 수학 연산, 컴파일, 그래픽 처리 작업을 담당하는 프로세스와 같이 CPU 작업(CPU burst, CPU 버스트)이 많은 프로세스
대기 상태보다는 실행 상태에 더 많이 머무르게 됨
입출력 집중 프로세스를 먼저 처리하여 대기상태에 두면서 입출력장치를 끊임없이 작동시키고, 그동안 CPU 집중 프로세스를 처리하는 쪽이 효율적임
운영체제는 각 프로세스의 PCB에 우선순위를 명시하여 처리함
macOS 등의 유닉스 체계 운영체제는 ps -el 명령어를 통해 우선순위 확인이 가능함
스케줄링 큐(scheduling queue)
운영체제가 매번 일일이 모든 PCB를 검사하여 먼저 자원을 이용할 프로세스를 결정하는 일은 매우 번거로울뿐더러 오랜 시간이 걸리는 일임
CPU는 메모리로 적재되고자 하는 새로 생성되는 프로세스, CPU를 이용하고 싶은 프로세스, 특정 입출력장치를 이용하고 싶은 프로세스 등을 큐에 삽입함
스케줄링에서 이야기하는 큐는 반드시 선입선출 방식일 필요는 없음
종류
준비 큐(ready queue) : CPU를 이용하고 싶은 프로세스들이 서는 줄을 의미
대기 큐(waiting queue) : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄을 의미. 각 입출력장치별로 대기 큐가 별도로 존재함
선점형 스케줄링과 비선점형 스케줄링
선점형 스케줄링(preemptive scheduling) : 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
다시 말해 어느 하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링 방식
지금까지 필자가 설명한 스케줄링 방식이 선점형 스케줄링의 일종임
프로세스마다 정해진 시간만큼 CPU를 사용하고, 정해진 시간을 모두 소비하여 타이머 인터럽트가 발생하면 운영체제가 해당 프로세스로부터 CPU 자원을 빼앗아 다음 프로세스에 할당하는 방식은 선점형 스케줄링의 일종으로 볼 수 있음
현재 대부분의 운영체제가 차용하는 스케줄링 방식
장점 : 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있음
단점 : 문맥 교환 과정에서 오버헤드가 발생할 수 있음
비선점형 스케줄링(non-preemptive scheduling) : 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식
다시 말해 비선점형 스케줄링은 하나의 프로세스가 자원 사용을 독점할 수 있는 스케줄링 방식
만약 비선점형 스케줄링 방식으로 자원을 이용하는 프로세스가 있다면 다른 프로세스들은 그 프로세스의 사용이 모두 끝날 때까지 기다려야 함
장점 : 문맥 교환에서 발생하는 오버헤드는 선점형 스케줄링보다 적음
단점 : 모든 프로세스가 골고루 자원을 사용할 수 없음