손영배 블로그 누구나 쉽게 이해하고 습득하기

프로세스 스케줄러 본문

OS

프로세스 스케줄러

손영배 2019. 10. 2. 17:45

프로세스의 스케줄링을 위해서 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