본문 바로가기
CS/운영체제

스케줄러

by minkang 2021. 7. 24.

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