CPU 스케쥴링이란?

GwanMtCat·2023년 9월 15일
0

CPU 스케쥴러는 프로세스가 생성된 후, 종료될 때까지 모든 상태 변화를 조정하는 일을 한다.
여러 프로세스의 상황을 고려하여, CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 한다.


CPU 스케쥴링의 규모

고수준 스케쥴링 (High Level Scheduling)

가장 큰 틀에서 이루어지는 CPU 스케쥴링으로 시스템 내의 전체 작업 수를 조절하는 것을 말한다.
작업 요청이 오면 스케쥴러가 시스템 상황을 고려하여 작업을 승인할지, 거부할지를 결정한다.


저수준 스케쥴링 (Low Level Scheduling)

가장 작은 단위의 스케쥴링으로 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 일이다. (준비 상태 => 실행 상태, 실행 상태 => 대기 상태, 대기 상태 => 준비 상태)


중간 수준 스케쥴링 (Middle Level Scheduling)

중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다. 일부 프로세스를 중지 상태로 옮김으로써, 나머지 프로세스가 원만하게 작동하도록 지원한다. 이는 프로세스 상태 중 보류 상태에 해당하며 (메모리에서 나와 스왑 영역으로) 저수준 스케쥴링 완만하게 이루어지도록 완충하는(buffer) 역할을 한다.


CPU 스케쥴링의 목적

CPU 스케쥴링의 목적은 모든 프로세스가 공평하게 작업하도록 하는 것이다.
특정 프로세스에 편중되지 않게 골고루 자원을 배분하면서도 공평성을 유지하고 안정적으로 동작해야 한다.
일반적으로 운영체제 프로세스는 일반 프로세스보다 우선적으로 CPU를 배정받는다.


스케쥴링 시 고려 사항

어떤 프로세스에 우선적으로 CPU를 할당할지 결정할 때 고려해야 할 사항이 있다.

선점형 스케쥴링

어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케쥴링 방식이다.
대표적인 예로는 인터럽트 처리가 있다.
문맥 교환같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점이다.

비선점형 스케쥴링

어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케쥴링 방식이다.
스케쥴러의 작업량이 적고, 문맥 교환에 의한 낭비도 적으나 CPU 사용 시간이 긴 프로세스 때문에 CPU 사용 시간이 짧은 여러 프로세스가 오랫동안 기다리게 되어, 전체 시스템의 처리율이 떨어진다.


프로세스의 우선순위

프로세스의 우선순위가 없다는 것은 모든 프로세스 중요도가 같다는 것으로 즉 모든 프로세스는 준비 상태에 한 줄로 서서 순차적으로 실행된다. 이는 준비 상태의 큐가 하나인 것과 마찬가지이다.

CPU 스케쥴러는 우선순위를 사용하여, 프로세스의 중요도를 관리한다. 커널 프로세스의 우선순위가 일반 프로세스보다 높다. 우선순위가 높다는 것은 더 빨리 자주 실행된다는 뜻이다.

같은 커널 프로세스라 하더라도 더 중요한 커널 프로세스는 우선순위가 높고, 덜 중요한 프로세스는 우선순위가 낮다.


CPU 집중 프로세스와 입출력 집중 프로세스

스케쥴링을 할 때 입출력 집중 프로세스와 우선순위를 CPU 집중 프로세스보다 높이면 시스템의 효율이 향상된다. 입출력 집중 프로세스는 잠깐 CPU를 사용한 후, 대기 상태로 이동하기 때문이다. 입출력 집중 프로세스가 CPU 집중 프로세스보다 실행 상태에 먼저 들어가는 경우를 사이클 훔치기라고 한다.


전면 프로세스와 후면 프로세스

전면 프로세스는 GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스를 말하고, 후면 프로세스는 사용자와 상호작용이 없는 프로세스를 말한다.

전면 프로세스는 사용자의 요구에 따라 즉각 반응해야 하지만, 후면 프로세스는 상호작용이 없으므로 전면 프로세스의 우선순위가 후면 프로세스보다 높다. 그만큼 후면 프로세스는 전면 프로세스보다 CPU를 할당받을 확률이 적다.


정리

우선순위가 높은 프로세스는 커널 프로세스, 전면 프로세스, 대화형 프로세스, 입출력 집중 프로세스이다.
우선순위가 낮은 프로세스는 일반 프로세스, 후면 프로세스, 일괄 작업 프로세스, CPU 집중 프로세스이다.

그러나 프로세스에 따라 대화형인지 일괄 작업인지 아니면 입출력 집중인지 CPU집중인지 구분할 수 없는 경우가 있어 대화형 프로세스와 일괄 작업 프로세스, 입출력 집중 프로세스와 CPU 집중 프로세스는 우선순위를 고려하기 어려울 수도 있다.


참조한 책 및 사이트

쉽게 배우는 운영체제
https://velog.io/@sunil1369/%EC%89%BD%EA%B2%8C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-4%EC%9E%A5
https://yansigit.github.io/blog/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-cpu-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81/

0개의 댓글