본문 바로가기
computer science/운영체제

[운영체제] 프로세스 스케줄러(단기,중기,장기)

by 박연호의 개발 블로그 2020. 2. 10.

이번 시간에는 스케줄러에 대해 공부해 보겠습니다. 스케줄러란 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭합니다. 스케줄러에는 장기, 단기, 중기 스케줄러가 있으며 이들에 대해 알아 보겠습니다.

 

저번 프로세스 상태에서 아래의 그림를 사용했는데 장기, 단기, 중기 스케줄러는 몇몇 부분을 의미합니다.

 

 

장기 스케줄러(long term scheduler) : 어떤 프로세스를 준비큐에 넣을 것인가 ?

 

작업 스케줄러라고도 부르며 어떤 프로세스를 준비비 큐에 삽입할지를 결정하는 역할을 합니다. 디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 되는데 이때 디스크에서 어떤 프로그램을 가져와 커널에 등록할지(준비큐에 등록할지) 결정합니다.

 

장기 스케줄러는 수십 초 내지 수 분 단위로 가끔 호출되기 때문에 상대적으로 속도가 느린 것이 허용됩니다. 또한 장기 스케줄러는 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 역할을 합니다.

 

하지만 현대의 시분할 시스템에서 사용되는 운영 체제에는 일반적으로 장기 스케줄러를 두지 않는 경우가 대부분입니다. 과거에는 적은 양의 메로리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어져 장기 스케줄러가 이를 조절하는 역할을 했지만 현대의 운영체제 에서는 프로세스가 시작되면 장기 스케줄러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 됩니다. 


단기 스케줄러(short term scheduler) : 어떤 프로세스에게 cpu를 할당해 줄 것인가 ?

 

CPU스케줄러라고도 하며 준비 상태의 프로세스 중에서 어던 프로세스를 다음 번에 실행 상태로 만들 것인지를 결정합니다. 시분한 시스템에서 타이머 인터럽트가 발생하면 단기 스케줄러가 호출됩니다.

 

일반적으로 스케줄러라 함은 단기 스케줄러를 의미하며 단기 스케줄러는 미리 정한 스케줄링 알고리즘에 따라 cpu를 할당 할 프로세스를 선택합니다.

 

단기 스케줄러는 밀리 세컨트(ms) 이하의 시간 단위로 매우 빈번하게 호출되기 때문에 수행 속도가 충분히 빨라야 합니다.


중기 스케줄러(medium term scheduler) : 메모리에 적재된 프로세스 수 관리

 

너무 많은 프로스스에게 메모리를 할당해 시스템의 성능이 저하되는 경우 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절하기 위해 추가된 스케줄러 입니다. 

 

만약 메모리에 많은 수의 프로세스가 적재되어 프로세스 당 보유하고 있는 메모리량이 극도로 적어지게 되면 CPU 수행에 당장 필요한 프로세스의 주소 공간조차도 메모리에 올려놓기 어려운 상황이 발생하게 됩니다 그렇게 되면 디스크 I/O가 수시로 발생하게 되어 시스템의 성능이 심각하게 저하될 수 있습니다. 이런 경우 메모리에 올라와 있는 프로세스 중 일부로 부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장해 둡니다. 이와 같은 행위를 스왑 아웃(swap out)이라고 합니다.

 

디스크로 스왑 아웃시켜야 하는 경우 봉쇄 상태에 있는 프로세스들을 첫번째로 스왑 아웃 시킵니다. 이유는 봉쇄 상태의 프로세스들은 당장 CPU를 획득할 가능성이 없기 때문 입니다. 

 

봉쇄 상태의 프로세스들을 스왑 아웃시켜도 문제가 해결되지 않는 경우 중기 스케줄러는 타이머 인터럽트가 발생해 준비 큐로 이동하는 프로세스를 추가적으로 스왑아웃 시킵니다. 중기 스케줄러는 이러한 방식으로 장기 스케줄러와 마찬가지로 메모리에 올라와 있는 프로세스의 수를 조절하는 역할을 합니다.

 

중기 스케줄러의 등장으로 프로세스의 상태에는 중지(suspenden, stopped) 상태가 추가 되었으며 중지 상태의 프로세스는 메모리를 통째로 빼앗기고 디스크로 스왑 아웃된다. 중지 상태는 중지 준비 상태봉쇄 중지 상태가 있다.

 

  • 중지 준비(suspenden ready) : 준비 상태의 프로세스가 중기 스케줄러에 의해 디스크로 swap out
  • 봉쇄 중지(suspenden block) : 봉쇄 상태의 프로세스가 중기 스케줄러에 의해 디스크로 swap out

중지 봉쇄 상태이던 프로세스가 봉쇄 되었던 조건을 만족하게 되면 이 프로세스의 상태는 중지 준비 상태로 바뀌게 된다 중지 상태에 있는 프로세스들은 중지 준비 상태이든 중지 봉쇄 상태이든 관계없이 메모리를 조금도 보유하지 않고 디스크에 통째로 스왑 아웃된 상태로 존재하게 된다.

 

 

'computer science > 운영체제' 카테고리의 다른 글

[운영체제] 문맥교환(Context Switching)  (1) 2020.02.16
[운영체제] CPU 스케줄링  (0) 2020.02.15
[운영체제] 프로세스 상태  (0) 2020.02.09
[운영체제] 단편화?  (1) 2019.03.03
[운영체제] 쓰레드란?  (0) 2019.03.02