CS/운영체제

프로세스 스케줄러

:)jun 2023. 9. 15. 22:55

프로세스 스케줄링하기 위한 큐는 3가지이다.

  • Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합, 메모리 할당을 대기중이다.
  • Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합, CPU 할당을 대기중이다.
  • Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합, 입출력 장치 할당을 대기중이다.

프로세스가 시스템에 들어가면 이들은 잡 큐에 넣어진다. 잡큐는 시스템에서 모든 프로세스들이 존재하는 곳이다. 메인메모리에 거주하는 프로세스들은 레디 큐라고 불리우는 리스트에서 실행되기를 기다리고 대기를 한다.

스케줄러의 종류도 3가지이다.

장기 스케줄러 - 어떤 프로세스를 ready queue에 보낼지

메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정하는 역할을 한다.

  • 메모리와 디스크 사이의 스케줄링을 담당.
  • 프로세스에 memory(및 각종 리소스)를 할당(admit)
  • degree of Multiprogramming 제어(실행중인 프로세스의 수 제어)
  • 프로세스의 상태new -> ready(in memory)

단기 스케줄러 - CPU 스케줄러, 어떤 프로세스를 실행 시킬지

  • CPU 와 메모리 사이의 스케줄링을 담당.
  • Ready Queue 에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정.
  • 프로세스에 CPU 를 할당(scheduler dispatch)
  • 프로세스의 상태ready -> running -> waiting -> ready

중기 스케줄러 - 메모리 공간이 부족한 경우 어떤 프로세스를 swap out 할지

  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)
  • 프로세스에게서 memory 를 deallocate
  • degree of Multiprogramming 제어
  • 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러.
  • 프로세스의 상태ready -> suspended

Process state - suspended

Suspended(stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태를 의미한다. 프로세스 전부 디스크로 swap out 된다. blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state 로 돌아갈 수 있지만 이 상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 수 없다.

'CS > 운영체제' 카테고리의 다른 글

메모리가 고갈된다면  (0) 2023.09.17
프로세스 상태 전이  (0) 2023.09.16
멀티 쓰레드 vs 멀티 프로세스  (0) 2023.09.14
Context Switching  (0) 2023.09.13
프로세스와 쓰레드의 차이  (0) 2023.09.12