Post

CPU 스케줄링 개요

CPU 스케줄링 개요

핵심 내용 요약

  • CPU 스케줄링: 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 방법을 의미합니다.
  • 프로세스 우선순위: 프로세스마다 우선순위가 다르며, 이는 PCB에 명시됩니다.
  • 스케줄링 큐: 운영체제는 효율적인 스케줄링을 위해 준비 큐와 대기 큐 등 다양한 큐를 사용합니다.
  • 선점형 vs 비선점형 스케줄링: 선점형 스케줄링은 프로세스가 이용 중인 자원을 빼앗을 수 있는 방식이며,
    비선점형 스케줄링은 프로세스가 자원을 독점할 수 있는 방식입니다.

CPU 스케줄링이란?

모든 프로세스는 CPU를 필요로 하고, 모든 프로세스는 먼저 CPU를 사용하고 싶어 합니다.

운영체제는 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 기다리게 할지를 결정하는데,
이를 CPU 스케줄링(CPU scheduling)이라고 합니다.

CPU 스케줄링은 컴퓨터 성능과 직결되는 중요한 문제로,
프로세스들에게 현명하게 CPU를 배분하지 못하면 실행해야 할 프로세스들이 실행되지 못하거나,
불필요한 프로세스들이 주로 실행되는 무질서한 상태가 발생할 수 있습니다.

프로세스 우선순위

프로세스들은 각기 다른 우선순위를 가집니다.

우선순위가 높은 프로세스는 빨리 처리해야 하는 프로세스를 의미합니다.
예를 들어, 입출력 작업이 많은 프로세스는 우선순위가 높습니다.

이 부분을 처음에는 이해하지 못 했는데, 입출력 작업이 많은 프로세스는 프로세스의 대기상태로 많이 전환되므로
문맥교환이 자주일어나서 최대한 우선순위를 낮추는 줄 알았지만 반대로 우선순위가 높았다.
어짜피 대기 상태가 될 것이 분명하므로 먼저 실행해서 대기 상태로 가있는게 효율적이다.

프로세스는 일반적으로 CPU 버스트(CPU burst)입출력 버스트(I/O burst)를 반복하며 실행됩니다.
CPU 집중 프로세스(CPU bound process)는 CPU 버스트가 많은 프로세스이고,
입출력 집중 프로세스(I/O bound process)는 입출력 버스트가 많은 프로세스입니다.

운영체제는 프로세스마다 우선순위를 부여하고, PCB에 우선순위를 명시하여 효율적으로 CPU를 배분합니다.

또한 운영체제가 아닌 사용자가 직접 프로세스의 우선순위를 설정할 수도 있습니다

옛날에 오버워치 최적화 꿀팁이라면서 작업관리자에서 오버워치 프로세스의 우선순위를 최우선으로 설정했던 기억이 났다.

스케줄링 큐

운영체제는 CPU를 사용하고 싶은 프로세스들, 메모리에 적재되고 싶은 프로세스들,
특정 입출력 장치를 사용하고 싶은 프로세스들을 스케줄링 큐(scheduling queue)로 관리합니다.

대표적인 큐로는 준비 큐(ready queue)대기 큐(waiting queue)가 있습니다.

  • 준비 큐: CPU를 이용하고 싶은 프로세스들이 서는 줄.
  • 대기 큐: 입출력 장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄.

운영체제는 준비 큐와 대기 큐에서 프로세스를 선택하여 CPU를 할당합니다.

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

운영체제는 프로세스가 CPU를 사용 중인 상황에서 다른 급한 프로세스가 CPU를 요청하면 두 가지 방법을 선택할 수 있습니다:

  1. 선점형 스케줄링(preemptive scheduling):
    프로세스가 자원을 사용하고 있더라도 운영체제가 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 방식.
  2. 비선점형 스케줄링(non-preemptive scheduling):
    프로세스가 자원을 사용하고 있을 때 해당 프로세스가 종료되거나
    스스로 대기 상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없는 방식.

현재 대부분의 운영체제는 선점형 스케줄링 방식을 채택하고 있습니다.
선점형 스케줄링은 자원을 골고루 배분할 수 있지만, 문맥 교환 과정에서 오버헤드가 발생할 수 있습니다.
반면, 비선점형 스케줄링은 문맥 교환 횟수가 적어 오버헤드가 적지만, 한 프로세스가 자원을 독점할 수 있습니다.


확인 문제

  1. 프로세스 스케줄링에 대해 옳지 않은 것을 고르세요.
    • 운영체제는 우선순위를 토대로 프로세스들을 스케줄링합니다.
    • 운영체제는 스케줄링 큐를 사용하여 스케줄링할 프로세스들을 관리합니다.
    • 준비 큐에는 준비 상태인 프로세스들이, 대기 큐에는 대기 상태인 프로세스들이 삽입됩니다.
    • 선점형 스케줄링은 프로세스가 이용 중인 자원을 빼앗을 수 없는 방식을 의미합니다.
  2. 선점형 스케줄링과 비선점형 스케줄링에 대해 옳지 않은 것을 고르세요.
  • 선점형 스케줄링은 어느 한 프로세스가 자원을 독점할 수 없는 스케줄링 방식입니다.
  • 선점형 스케줄링은 문맥 교환 과정의 오버헤드가 비선점형 스케줄링에 비해 적습니다.
  • 비선점형 스케줄링은 어느 한 프로세스가 자원을 독점할 수 있는 스케줄링 방식입니다.
  • 비선점형 스케줄링은 문맥 교환 과정의 오버헤드가 선점형 스케줄링에 비해 적습니다.
This post is licensed under CC BY 4.0 by the author.