스케줄러란?
- 한정적인 메모리를 프로세스가 효율적으로 사용 할 수있도록 작업을 할당시켜주는 역할을 한다.
Scheduling Queue 3가지
- Job Queue -> 모든 프로세스들이 들어있다.
- Ready Queue -> ready상태인 프로세스들이 들어있다.
- Device Queue -> I/O장치 사용을 대기하는 프로세스들이 들어있다.
장기 스케줄러 (long-term scheduler | job scheduler)
메모리는 한정되있는데 한번에 많은 양의 프로세스가 메모리로 올라올 경우 대용량 메모리(디스크)로 임시저장한다. 이 pool에 있는 프로세스중 어떤 프로세스를 ready queue로 보낼 지 결정하는 역할을 수행함
- 메모리 <-> 디스크의 스케줄링을 담당함
- 프로세스에 memory(및 각종 리소스) 할당
- degree of multiprogramming 제어
degree of multiprogramming (멀티 프로그래밍의 정도. 즉,수행중인 프로세스의 수)
- 프로세스의 상태를 제어 (new -> ready)
참고로 time sharing system에서는 장기 스케줄러가 없다. 곧바로 메모리에 올라가 ready상태가 된다.
단기 스케줄러 (short-term scheduler | CPU scheduler)
- CPU와 메모리 사이의 스케줄링을 담당함
- ready queue에 있는 프로세스를 running상태로 바꿀 지 결정하는 역할
(ready -> running -> waiting -> ready)
- 프로세스에 CPU를 할당하는 역할을 함(scheduler dispatch)
중기 스케줄러 (midium-term scheduler | Swapper)
- degree of multiprogramming 제어
- 여유공간 마련을 위해 프로세스를 메모리에서 디스크로 쫓아냄(swapping)
- 프로세스에게서 메모리를 deallocate
- 현 시스템에서 메모리에 너무많은 프로그램이 올라가는 것을 조절하는 스케줄러
- 프로세스의 상태 ready -> suspended
Process State - Suspended(stopped)
외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태인것을 의미한다.
전부 디스크로 Swap out 되며 Blocked 상태는 다른 I/O작업을 기다리는 상태이기 때문에 스스로 Ready state로 돌아갈 수 있지만 이 상태는 외부적인 이유로 suspending되었기 때문에 스스로 돌아갈 수 없다.