[CS] CPU 스케줄링 개요

정은아·2024년 1월 26일
post-thumbnail

💡 운영체제는 CPU를 어떻게 프로세스에 배분하는지 알아보자!

프로세스 우선순위

  • 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링(CPU scheduling)라고 한다.
  • 비디오 재생 및 디스크 백업 등 입출력 작업이 많은 프로세스를 입출력 집중 프로세스(I/O bound process)라고 한다.
  • 수학연산, 컴파일, 그래픽 처리 등 CPU 작업이 많은 프로세스를 CPU 집중 프로세스(CPU bound process)라고 한다.
  • 운영체제는 프로세스의 중요도에 맞게 CPU를 이용할 수 있도록 우선순위(priority)를 부여한다.

💡 CPU 버스트와 입출력 버스트란?

  • CPU를 이용하는 작업을 CPU 버스트(CPU burst)라고 한다.
  • 입출력장치를 기다리는 작업을 입출력 버스트(I/O burst)라고 한다.
  • 입출력 집중 프로세스는 입출력 버스트가 많은 프로세스, CPU 집중 프로세스는 CPU 버스트가 많은 프로세스라고 정의할 수 있다.

스케줄링 큐(scheduling queue)

  • CPU, 메모리, 특정 입출력장치 등을 사용하고 싶은 프로세스들을 줄을 세워 스케줄링 큐로 구현하고 관리한다.
  • 큐는 자료 구조 관점에서 봤을 때 선입선출(FIFO) 자료구조이지만, 스케줄링에서 이야기하는 큐는 반드시 선입선출일 필요는 없다.
  • 운영체제가 관리하는 대부분의 자원은 큐로 관리된다.
  • CPU를 이용하고 싶은 프로세스들이 서는 줄을 준비 큐(ready queue)라고 한다.
  • 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세서들이 서는 줄을 대기 큐(waiting queue)라고 한다.

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

선점형 스케줄링(preemptive scheduling)

  • 프로세스가 사용하고 있는 자원을 운영체제가 프로세스로부터 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식을 말한다.
  • 더 급한 프로세스가 언제든 끼어들 수 있으므로 어느 한 프로세스의 자원 독점을 방지한다.
  • 문맥 교환 과정에서 오버헤드가 발생할 수 있다.

비선점형 스케줄링(non-preemptive scheduling)

  • 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링 방식을 말한다.
  • 문맥 교환 과정에서 오버헤드가 선점형 스케줄링보다 적다.
  • 그러나 모든 프로세스가 골고루 사용할 수 없다는 단점이 존재한다.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글