하루에 한 문제

스케줄러 (scheduler) + Job,Ready,Device Queue란? 본문

CS/운영체제

스케줄러 (scheduler) + Job,Ready,Device Queue란?

dkwjdi 2021. 5. 18. 10:44

프로세스를 스케줄링하기 위해서는 세 가지의 Queue(Job, Ready, Device)가 존재한다.

 

Job Queue

우선 이를 설명하기전에 long-term(장기) 스케줄러에대해 알아보자

long-term스케줄러는 보조기억장치에 존재하는 프로세스 중 어떤 프로세스를 주 메모리로 load할 지 결정하는 역할을 해준다.

하지만 현대의 시분할 시스템에서 사용되는 OS는 일반적으로 장기 스케줄러르 두지 않는다. 과거에는 적은 양의 메모리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어 장기 스케쥴러가 이를 조절하는 역할을 했지만 현대의 OS는 프로세스가 시작되면 장기 스케줄러 없이 바로 메모리에 적재(ready)된다.

즉 Job Queue는 보조기억장치에 있는 프로세스가 메모리로 load될 때 보조기억장치에 형성되어 있는 큐라고 할 수 있다.

 

 

Ready Queue

마찬가지로 Ready Queue를 보기 전에 short-term(단기) 스케줄러에 대해 먼저 알아보자

shor-term(단기) 스케줄러는 현재 메모리에 올라와있는 프로세스 중 어떤 프로세스가 CPU점유권을 가질 지 결정해주는 스케줄러이다.

 

즉 Ready Queue는 현재 메모리 내에 있으면서 CPU를 할당받기 위해 기다리고 있는 프로세스들이 모여있는 큐이다.

 

 

Device Queue

Ready Queue가 메모리에 있다면 Device Queue는  Device Controller에 있다. Device Controller는 쉽게 말해서 하드웨어 그 자체이다.

 

만약 현재 Running에서 실행중인 Process1에 I/O Request가 들어오면 Process1는 CPU점유권을 잃고 asleep상태로 가게 된다. 이때 Device controller안에 있는 buffer의 Device Queue로 들어가게 된다.

 

이때 I/O작업이 모두 끝나게 되면 다시 Ready Queue로 들어가게 된다!

 

 

한가지 주의할 점은 running 상태에서 asleep상태로 갈 때 PCB정보들은 Ready Queue에서 사라지고 Device Queue로 간다. 그렇다면 I/O작업이 끝난 뒤, ready 상태에서 running상태로 갈 때, 이전에 수행했던 값들은 어떻게 가지고 갈까??이 개념이 바로 context switching(문맥교환)이다. 

 

그리고 위에서 단기, 장기 스케줄러에 대해 설명했기 때문에 남은 중기 스케줄러까지 마저 설명하겠다.

 

Midium-term(중기) 스케줄러

만약 asleep 상태에서 ready로 넘어가지 못하거나 ready에서 running 상태로 넘어가지 못하는 상황이 발생한다고 생각해보자. 결과적으로 실행은 되지 않으면서 계속해서 메모리를 잡아먹고 있는 비효율적인 상황일 것이다.

이럴 경우 메모리에 load되어있는 비효율적인 프로세스를 다시 하드디스크로 쫒아낸다(swap-out). 

그리고 나중에 필요헤 의해 다시 메모리로 돌아올 수 도 있다(swap-in)

이 과정을 스케줄링 하는 스케줄러가 Midium-term(중기)스케줄러이다.




참고

https://kosaf04pyh.tistory.com/191?category=1032510

https://operatingsystems.tistory.com/entry/OS-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC-scheduler?category=495588

https://k39335.tistory.com/32

https://operatingsystems.tistory.com/entry/OS-Job-Queue-Ready-Queue-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Device-Queue?category=495588

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

Preemption and Non-Preemption  (1) 2021.05.18
Context Switching(문맥교환)  (0) 2021.05.18
멀티 프로세스와 멀티 스레드  (0) 2021.05.18
프로세스 간 통신 (IPC, Inter Process Communication)  (0) 2021.05.18
Thread(쓰레드)란?  (0) 2021.05.17
Comments