손영배 블로그 누구나 쉽게 이해하고 습득하기
프로세스 스케줄러 본문
프로세스의 스케줄링을 위해서 OS는 큐(Queue)를 지원한다. (Queue는 Linked List로 구현되어 있다. header end PCB를 가리키는 포인터를 가지고 있다).
큐에는 job queue, ready queue, device queue,waiting queue가 있다.
- job queue는 프로세스가 시스템에 처음 들어와서 대기하는 큐
- ready queue는 주기억 장치에 적재되어 실행을 기다리는 프로세스를 유지하는 큐
- device queue는 장치를 사용하기 위해 기다리는 큐
- waiting queue는 특정한 event마다 대기하는 프로세스를 유지시켜주는 큐
근데 여기서 스케줄러는 각 큐마다 다음 차례의 프로세스를 결정하기는 기법이다. 크게 세 가지 종류
1. 장기 스케줄러(Long-term scheduler or job scheduler)
메모리는 한정되어 있는 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적을 디스크)에 임시로 저장된다. 이 pool에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue로 보낼지 결정하는 역할을 한다.
- 메모리와 디스크 사이의 스케줄링을 담당.
- 프로세스에 memory(및 각종 리소스)를 할당(admit)
- degree of Multiprogramming 제어 메모리에 여러 프로그램이 올라가는 것) 몇 개의 프로그램이 올라걸 것인지를 제어
- 프로세스의 상태 new -> ready(in memory)
2. 단기스케줄러(Short-term scheduler or CPU scheduler)
- CPU 와 메모리 사이의 스케줄링을 담당
- Ready queue에 존재하는 프로세 중 어떤 프로세스를 running 시킬지 결정
- 프로세스에 CPU를 할당(scheduler dispatch)
- 프로세스의 상태
ready -> running -> waiting -> ready
3. 중기스케줄러(Medium-term scheduler or Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냄 (swapping)
- 프로세스에게서 memory 를 deallocate
- degree of Multi programming제어
- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러
- 프로세스의 상태
ready -> suspended
Suspended(stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태를 의미한다. 프로세스 전부 디스크로 swap out된다. blocked상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state로 돌아갈 수 있지만 이 상태는 외부적인 이유로 suspending되었기 때문에 스스로 돌아갈 수 없다.
'OS' 카테고리의 다른 글
교착상태 deadlock (0) | 2019.10.24 |
---|---|
비동기식 병행 실행 (0) | 2019.10.24 |
CPU 스케줄러 (0) | 2019.10.03 |
프로세스와 스레드 기초 (0) | 2019.10.03 |