목차

  • 스케줄링의 개요
  • 스케줄링 시 고려사항
  • 다중 큐
  • 스케줄링 알고리즘

스케줄링의 개요

CPU 스케줄링이란?

CPU 스케줄링이란 대기중인 프로세스중에서 어떤 프로세스에게 CPU 사용권을 배정할 지 결정하는 것을 말한다. Processor scheduler라고도 부른다. 식당으로 비유하자면 홀직원의 역할과 비슷하다.

 

 

스케줄링의 단계
  • 고수준 스케줄링
    시스템 내의 전체 프로세스 수를 조절하는 것 ( 식당에서 손님을 받을지 말지 정하는 것 )
  • 중간 수준 스케줄링
    전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는 것 ( 주문을 천천히 받거나 요리를 바꾼다 )
  • 저수준 스케줄링
    어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 결정하는 것

 

스케줄링의 목적
  • 공평성
    모든 프로세스가 자원을 공평하게 배정받아야하며, 특정 프로세스가 배제되어선 안된다.
  • 효율성
    시스템 자원이 유휴 시간 없이 사용되도록 스케줄링을 하고, 유후 자원을 사용하려는 프로세스에는 우선권을 주어야한다.
  • 안정성
    우선 순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야한다.
  • 확장성
    프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 한다. 또한 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되게 해야 한다.
  • 반응 시간 보장
    응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간안에 프로세스의 요구에 응답해야한다.
  • 무한 연기 방지
    특정 프로세스의 작업이 무한히 연기되어선 안된다.

 


 

스케줄링 시 고려사항

우선 순위가 높은 프로세스에 CPU를 먼저 할당한다.

 

우선순위가 높은 프로세스는 커널 프로세스, 전면 프로세스, 대화형 프로세스, 입출력 집중 프로세스가 있다.

우선순위가 낮은 프로세스는 일반 프로세스, 후면 프로세스, 일괄 작업 프로세스, CPU 집중 프로세스이다.

 

  • 선점형 스케줄링
    어떤 프로세스가 CPU를 할당받아 실행 중이어도 운영체제가 강제로 제어가 가능한 방식
  • 비선점형 스케줄링
    어떤 프로세스가 CPU를 점유하면 다른 프로세스가 관여할 수 없는 방식

 

  • CPU 집중 프로세스
    수학 연산과 같이 CPU를 많이 사용하는 프로세스 (CPU 버스트가 많은 프로세스)
  • 입출력 집중 프로세스
    저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스(마찬가지로 버스트가 많다)

 


 

다중큐

프로세스를 효율적으로 관리하기 위해 큐를 여러개 두어 관리하는 것을 뜻한다. 준비 상태에서는 우선 순위에 따라 다중 큐를 운영하고, 대기 상태에서는 같은 입출력을 요구하는 프로세스들을 모아 다중 큐를 운영한다.

 

 

 


 

스케줄링 알고리즘

비선점형 스케줄링
  • FCFS 스케줄링(=first come first served)
    준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 스케줄링 방식
  • SJF 스케줄링
    준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짧은 작업부터 CPU를 할당하는 비선점형 방식
  • HRN 스케줄링
    CPU를 할당받기 위해 기다린 시간과 CPU 사용 시간을 고려해서 스케줄링하는 비선점형 방식

 

선점형 스케줄링
  • 라운드 로빈 스케줄링
    한 프로세스가 할당받은 시간(타임 슬라이스)동안 작업을 하다가 작업을 완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다리는 선점형 방식
  • SRT 스케줄링
    기본적으로 라운드 로빈 스케줄링을 사용하지만, CPU를 할당받을 프로세스를 선택할 때 남아있는 작업 시간이 가장 적은 프로세스를 선택하는 선점형 방식

 

선점형, 비선점형을 복합적으로 사용하는 스케줄링
  • 우선 순위 스케줄링
    프로세스는 중요도에 따라 우선 순위를 갖는데 이러한 우선 순위를 반영하여 CPU를 할당하는 방식. 선점형 혹은 비선점형으로 구현이 가능하다.
  • 다단계 큐 스케줄링
    우선 순위에 따라 준비 큐를 여러개 사용하는 비선점형 방식. 프로세스는 운영체제로부터 부여받은 우선순위에 따라 해당 우선순위 큐에 삽입되어 실행된다.
  • 다단계 피드백 큐 스케줄링
    다단계 큐 스케줄링과 기본적인 형태는 같지만 CPU를 사용하고 난 프로세스가 원래의 큐로 돌아가지않고 우선순위가 하나 낮은 큐의 끝으로 돌아간다. (현대의 운영체제가 주로 사용하는 방식)