CPU를 효율적으로 사용하기 위해 프로세스를 스케줄링한다.
프로세스를 스케줄링하기 위한 큐에는 3가지 종류(Job, Ready, Device)가 있다.
- Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 ( 보조기억장치에 형성되어 있는 큐 )
- Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받기 위해 기다리고 있는 프로세스의 집합
- Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합
장기 스케줄러
- 보조기억장치에 존재하는 프로세스 중 어떤 프로세스를 주 메모리로 load할 지 결정하는 역할
- 과거에는 메모리의 양이 적어 장기 스케쥴러가 조절하는 역할을 했지만 현대의 OS는 프로세스가 시작되면 장기 스케줄러 없이 바로 메모리에 적재(ready)된다.
- 메모리에 있는 프로세스의 수를 제어
단기 스케줄러
- 현재 메모리에 올라와있는 프로세스 중 어떤 프로세스가 어떤 프로세스가 CPU 점유권을 가질지 결정해주는 스케줄러
- CPU와 메모리 사이의 스케줄링을 담당
- Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정
- 프로세스에 CPU를 할당 (scheduler dispatch)
Device Queue
현재 Running에서 실행중인 Process1에 I/O Request가 들어오면 Process1은 CPU 점유권을 잃고 asleep 상태로 가게 된다. 이때 Device controller안에 있는 buffer의 Device Queue로 들어가게 된다. 그 다음 I/O 작업이 모두 끝나면 다시 Ready Queue로 들어가게 된다.
Ready Queue는 메모리에 있다면 Device Queue는 Device Controller에 있다. ( 하드웨어 )
중기 스케줄러
- asleep 상태에서 ready로 넘어가지 못하거나 ready에서 running 상태로 넘어가지 못하는 상황일때 즉, 실행은 되지 않으면서 계속해서 메모리를 잡아먹고 있는 비효율적인 프로세스들에 대해서 다시 하드디스크 영역으로 보낸다. (swap-out) 그리고 나중에 필요에 의해 다시 메모리로 돌아올 수도 있다. (swap-in) 이러한 과정을 스케줄링 하는 스케줄러이다.
'CS > 운영체제' 카테고리의 다른 글
교착상태 (DeadLock) (0) | 2021.07.27 |
---|---|
CPU 스케줄링의 종류 (0) | 2021.07.27 |
PCB & Context Switching (0) | 2021.07.20 |
프로세스 간 통신 (Inter Process Communication) (0) | 2021.07.20 |
프로세스와 스레드의 차이 (0) | 2021.07.19 |