상세 컨텐츠

본문 제목

[운영체제] 선점 스케줄링 / 비선점 스케줄링

ETC

by jeonghojin 2023. 4. 4. 22:03

본문

프로세스 

  • 실행중에 있는 프로그램(Program)을 의미
  • 스케줄링의 대상이 되는 작업(Task)과 같은 의미
  • 프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고 있는데, 실제로는 스레드 단위로 스케줄링을 한다.
  • 프로그램을 실행하면, 실행을 위해 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다.

스케줄링

  • 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.
  • 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.
  • 스케줄링의 종류에는 장기, 중기, 단기 스케줄링이 있다.

 
장기 스케줄링

  • 어떤 프로세스가 시스템의 자우너을 차지할 수 있도록 할 것인가를 경정하여 준비상태 큐로 보내는 작업
  • 작업 스케줄링, 상위 스케줄링

중기 스케줄링

  • 어떤 프로세스들이 CPU를 할당 받을 것인지 경정하는 작업을 의미.
  • CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 부류시킨 후, 활성화해 일시적으로 부하를 조절.

단기 스케줄링

  • 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미.
  • 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행
  • 프로세서 스케줄링, 하위 스케줄링

프로세스 상태

생성 :
- 사용자에 의해 프로세스가 생성된 상태
준비 :
- CPU를 할당받을 수 있는 상태.
- 가장 높은 우선순위를 갖는 프로세스가 다음 순서에 CPU를 할당 받음.
실행 :
- CPU를 할당받아 동작(점유)중인 상태
대기 :
- 프로세스 실행 중 입출력(I/O)처리 등으로 CPU를 양도하고 처리 완료까지 기다리는 상태
- 대기 리스트는 우선순위가 존재하지 않음.
종료 :
프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행 종료한 상태

프로세스 상태 전이

디스패치(Dispatch)
준비 상태 > 실행 상태
- 준비 리스트에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 CPU를 할당
타이머 런 아웃(Timer Run Out)
실행 상태 > 준비 상태
- 지정된 시간이 초과되면 CPU 반납 후 다시 준비 상태로 전이
블록(Block)
실행 상태 > 대기 상태
- 지정된 할당 시간을 초과하기 전 입출력 또는 기타 사건이 발생하면 입출력이 완료될 때까지 대기 상태로 전이
웨이크 업(Wake-up)
대기 상태 > 준비 상태
- 어느 순간 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 알려주고 준비 상태로 전이

프로세스 스케줄링 유형

선점형 스케줄링 

  • 하나의 프로세스가 CPU를 차지하고 잇을 때, 우선 순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
  • 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
  • 주로 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용된다.
  • 많은 오버헤드를 초래한다.
  • 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요하다.

인터럽트용 타이머 클록 :
하나의 시스템 내에서 동작하는 장치들을 감시하기 위해 주기적인 신호를 발생하는 것으로, 하나의 프로세스가 자원을 독점하지 못하도록 방지하기 위해 사용된다.


라운드 로빈(Round Robin)

프로세스가 도착한 순서대로 프로세스를 디스패치하지만 정해진 시간 할당량(또는 시간 간격)에 의해 실행을 제한한다. 즉, 시간 할당량을 매 프로세스에 주고 할당된 시간 안에 완료되지 못한 프로세스는 준비 큐의 맨 뒤에 배치되도록 하여 CPU를 독점하지 않고 공평하게 이용될 수 있게 한다.

 
장점

  • 모든 프로세스가 프로세서의 동일한 점유율과 제한된 대기시간으로 공정해 기아상태가 발생하지 않는다.
  • 실행 큐에 프로세스 수를 알고 있을 때 구현이 용이하다.
  • 강한 상호작용과 프로세스의 짧은 응답시간, 특히 프로세스 최악의 응답시간을 알 수 있다.
  • 작업 길이가 다양할 때는 이전 작업을 마친 후보다 규정 시간량을 마치고 다음 작업으로 이동하기 때문에 평균 대기시간이 FIFO와 최소작업 우선 스케줄링보다 적다.

단점

  • 성능은 규정 시간량의 길이에 따라 달라지므로 작업이 비슷한 길이가 좋다. 너무 길면 FIFO와 다를게 없고 너무 짧으면 문맥교환이 지나치게 많이 이루어져 오버헤드가 크다.
  • 하드웨어 타이머가 필요하다.
  • 미완성 작업은 각 규정 시간량을 마친 후 프로세서를 기다리므로 평균 처리 시간이 높다.

SRT (Shortest Remaining Time First)

Round Robin + SJF 를 합한 개념
즉 Round Robin 방식으로 일정한 타임 슬라이스 만큼 CPU를 할당해서 작업을 한 후, 작업이 완료되지 않은 상태에서 시간이 완료되면 준비 큐에 넣어놓고 다음 프로세스를 준비 큐에서 가져올 때 기준을  SJF 개념으로 작업시간이 가장 짧은 프로세스를 선택해서 일정한 타임 슬라이스 만큼 CPU를 할당한다는 개념
 

 
장점

  • SJF 스케줄링과 평균 대기 시간을 비교했을 때 SRT 스케줄링의 평균 대기 시간이 더 짧다.

단점

  • 현재 실행 중인 프로세스와 큐에 있는 프로세스의 남은 시간을 주기적으로 계산하고, 남은 시간이 더 적은 프로세스와 컨텍스트 스위칭을 해야한다. SJF 스케줄링에는 없던 작업이 추가된 것이다.
  • 운영체제가 프로세서의 종료 시간을 예측하기가 어렵고 아사 현상이 일어나기 때문에 잘 사용하지 않는다.

* 아사 현상 : 우선권이 낮은 프로세스는 영원히 실행되지 못함. 불공평. *기아현상
 


우선순위 스케줄링(Priority Scheduling)

 

  • 우선순위가 각 프로세스들에 연관되어 있으며, CPU 코어는 가장 높은 우선순위를 가진 프로세스에 할당된다.
  • 우선순위 결정은 내부적 요인과 외부적 요인으로 정의될 수 있다.
  • 우선순위 스케줄링은 선점형 또는 비선점형이 될 수 있다.

 
시작 시점에는 프로세스 p1뿐이므로 p1은 대기하지 않고 바로 실행된다. p1이 작업을 마치면 p2와 p3이 기다리고, 두 프로세스 중 p3의 우선순위가 p2보다 높기 때문에 p3이 먼저 실행되고, p3이 작업을 마치면 이어서 p2가 실행된다. 이 경우 총 대기 시간과 평균 대기 시간은 SJF 스케줄링과 같다.
 
우선순위 결정
내부적 우선순위 결정

  • 프로세스 유형 : 실시간 프로세스와 같은 유형은 즉각적인 처리가 필요하므로 다른 유형의 프로세스보다 우선순위가 높다.
  • CPU 사용량 : CPU 시간을 많이 사용하는 프로세스는 CPU를 독점하는 것을 방지하기 위해 우선순위가 낮다.
  • I/O 사용 : 디스크 릭기 쓰기와 같은 I/O 작업이 많은 프로세스의 경우 우선순위가 낮다.
  • 메모리 사용량 : 메모리를 많이 사용하는 프로세스는 리소스 경쟁을 방지하기 위해 우선순위가 낮다.
  • 대기시간 : 대기시간이 긴 프로세스는 기아를 방지하기 위해 우선순위가 높을 수 있다.

외부적 우선순위 결정

  • 사용자 우선순위 : 일부 운영체제 에서는 사용자가 명령이나 그래픽 인터페이스를 통해 자체 프로세스의 우선순위를 설정할 수 있다.
  • 시스템 관리자 우선순위 : 시스템 관리자는 보안 프로세스 또는 네트워크 데몬과 같이 시스템 작동에 중요한 프로세스에 대한 우선순위를 설정할 수 있다.
  • 리소스 요구사항 : CPU 시간, 메모리 또는 네트워크 대역폭과 같이 많은 리소스가 필요한 프로세스에는 높은 우선순위가 지정될 수 있다.
  • 외부 이벤트 : 일부 프로세스는 사용자 입력 또는 네트워크 이벤트와 같은 외부 이벤트에 의해 트리거 될 수 있다. 이러한 프로세스는 적시에 실행되도록 하기 위해 우선순위가 더 높아질 수 있다.

 
장점

  • 각 프로세스의 상대적 중요성을 정확히 정의할 수 있으며 다양한 반응으로 실시간 시스템에 사용가능하다.

단점

  • 무한 봉쇄

* 무한봉쇄(indefinite blocking)  : 실행 준비는 되어 있으나 CPU를 사용하지 못하는 프로세스는 CPU를 기다리면서 봉쇄된 것으로 간주할 수 있다.(Blocking)
 

  • 높은 우선순위 프로세스가 프로세서를 많이 사용하면 기아 상태가 발생한다.

*기아 상태(Starvation) : 부하가 과중한 컴퓨터 시스템에서는 높은 우선순위의 프로세스들이 꾸준히 들어와서 낮은 우선순위의 프로세스들이 CPU를 얻지 못하게 될 수도 있다.
* 낮은 우선순위의 프로세스들이 무한히 봉쇄뇌는 현상에 대한 해결방안은 Aging 기법이다. 
* Aging : 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시킨다.
 
 
 


비선점형 스케줄링

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법.
  • 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
  • 프로세스 응답시간의 예측이 용이하며, 일관 처리 방식에 적합하다.
  • 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있다.

 


FCFS  스케줄링

준비 큐에 도착한 순서대로 CPU를 할당하는 방식이다. 선입선출로 이루어진다.
 

 
장점

  • 알고리즘이 단순하고 공평하다

 
단점

  • 실행시간이 짧은 프로세스가 실행시간이 긴 프로세스를 계속 기다려야 하는 문제점이 있다. * 콘 보이 효과, 호위 효과
  • 보통 일괄 처리 방식에서 사용된다.

SJF (Shortest Job First)

  • 프로세스가 도착하는 시점에 따라 그 당시 가장 짧은 소요 시간을 갖는 프로세스가 종료시까지 CPU를 점유
  • CPU 요구 시간이 긴 작업과 짧은 작업 간의 불평등이 심해 기아현상 발생 가능성

장점

  • 콘 보이 효과를 완화
  • 평균 대기 시간에 있어서 최적 알고리즘
  • FCFS보다 평균 대기시간은 감소

* 콘 보이 효과 : CPU 사용시간이 긴 프로세스에 의해 사용시간이 짧은 프로세스들이 오래 기다리는 현상. 이로 인해 평균 대기시간이 길어지게 된다. * 호위효과
 
단점

  • 프로세스의 완료시간을 예측하기가 어려움

* 짧은 프로세스가 중간중간 치고 들어오기 때문에, 작업시간이 긴 프로세스는 계속 우선순위가 뒤로 ㅁ리릴 가능성이 있음*기아현상
 
 기아 현상을 Aging 기법으로 해결
> Aging 기법 : 자원이 할당되기를 기다린 시간에 비례하여, 높은 우선순위를 부여하는 기법
>우선순위가 뒤로 밀릴 때마다 카운팅하여 일정 카운팅이 초과하면 더이상 뒤로 밀리지 않게 하는 Aging 기법으로 해결
 


참고 :

더보기

관련글 더보기