스케줄러
Ready Queue에 존재하는 프로세스들을
특정한 우선순위를 기반으로 CPU를 할당받게 하는 역할로
장기, 중기, 단기 스케줄러가 있다.
프로세스를 스케줄링하기 위한 queue의 종류
1. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
2. Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당 받기를 기다리는 프로세스의 집합
3. Device Queue : Device I/O 작업을 대기하고 있는 프로세스 집합
장기 스케줄러 Long - Term Scheduler
수행할 job이 10개, 메모리에는 6개 밖에 올릴 수 없는 상황
job 10개 중 6개를 골라서 올려야 하는데 이때 job을 고르는 역할을 하는 것이 장기 스케줄러
따라서 잡 스케줄러라고 불리기도 한다.
ready queue에 적재하는 메모리와 디스크 사이의 스케줄링을 담당하는 스케줄러인데, I/O bound 중심의 프로세스들과 CPU bound 프로세스들의 적절한 비율을 조절해 올린다.
* I/O bound process : 입출력 많은 프로세스 (이 비율이 높으면 놀고 있는 cpu 많아짐)
CPU bound process : CPU가 계산을 해줘야 하는 비중이 큰 프로세스 (이 비율이 높으면 사용자와 상호적이지 못해서 실시간적인 의미 없어짐)
1. 어떤 프로세스를 Ready Queue에 삽입할지 결정
2. 메모리와 디스크 사이의 스케줄링을 담당
3. 프로세스에 메모리를 할당
4. 메모리에 동시에 올라가 있는 프로세스의 수를 조절
5. 프로세스의 상태[new -> ready(inmemory)]
단기 스케줄러 Short - Term Scheduler
장기 스케줄러를 통해서 job을 6개를 고른 상태
CPU에서 하나를 수행완료하고 나머지 job중 에서 하나를 골라야하는데 이걸 골라주는 스케줄러
따라서 CPU 스케줄러라고 불리기도 한다.
CPU가 낭비되지 않게 A라는 프로세스가 수행되다가 사용자의 입력을 받기 위해 cpu가 대기하는 상황이 되면 바로 B 프로세스로 교체해서 수행시킨다. 그러다 사용자의 I/O가 끝나면 다시 A프로세스를 cpu로 불러온다.
최소 100밀리 세컨즈마다 수행되어 단기 스케줄러라 불린다.
장기 스케줄러와 단기 스케줄러 -> CPU 스케줄러
요즘엔 virtual memory management가 발달해서 job이 10개면 메모리로 10개가 다 올라온다.
즉, 장기 스케줄러의 의미가 없다는 것인데, long term이 없다면 short term의 의미가 무색해지기 때문에 주로 CPU 스케줄러라고 불린다.
1. CPU와 메모리 사이의 스케줄링을 담당하며 CPU 스케줄러라고도함
2. Ready Queue에 존재하는 프로세스들 중 스케줄링 알고리즘에 따라 CPU를 할당할 프로세스 선택
3. 프로세스의 상태[ready -> running -> waiting -> ready]
중기 스케줄러 Medium - Term Scheduler
장기/단기 이후에 나왔다. 위에서 말했듯이 현재 개념은 가상 메모리개념이기 때문에 중기 스케줄러 또한 이용되지 않는다.
장기 스케줄러에 의해 10개 중 6개의 job을 올려서 수행중인 상태
CPU가 수행하려고 보니 감당하기엔 너무 많아 문제가 생겨 6개 중 2개를 내려보내면 상황이 해결될 것
6개 중 뭘 내려보낼지 결정하는 것이 중기 스케줄러의 역할
Swapper라고도 불린다.
프로세스를 내릴 때 우선순위가 가장 낮은 프로세스나 일정 시간 동안 활성화되지 않았던 프로세스들을 내린다.
프로세스를 내리고 (swapping out) 다시 올려지는 (swapping in) swapping과정을 수행하기 때문에 swapper라고 불린다.
1. 메모리에 적재된 프로세스의 수를 동적으로 조절
2. 메모리적재된 프로세스의 수가 많을 때 메모리를 통째로 디스크의 스왑 영역에 저장(Swap Out)
3. 프로세스의 상태[ready -> suspended]
<참고>
https://kmseop.tistory.com/119 https://jhnyang.tistory.com/372
'🔥 > OS' 카테고리의 다른 글
[운영체제] 인터럽트 Interrupt (0) | 2021.08.25 |
---|---|
[운영체제] 프로세스 주소 공간 (0) | 2021.08.25 |
[운영체제] 프로세스와 스레드의 차이 (0) | 2021.08.18 |
[운영체제] CPU 스케줄러 (0) | 2021.08.11 |
[운영체제] PCB와 Context Switching (0) | 2021.08.04 |