본문 바로가기

Computer Science/OS

[OS] Process Scheduling

반응형

1. Process Scheduling

 

프로세스 스케줄링은 프로세스 매니저가 running process를 CPU에서 제거하고 프로세스 선택 기준, 전략에 따라 다른 프로세스를 선택하는 작업을 의미한다.

 

로세스를 스케줄링이 수행되는 queue에는 세가지 종류가 있다. 다음 큐에 있는 프로세스들 중 하나를 선택하여 상태를 변경하는 작업을 수행한다.

 

  • Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready Queue: 현재 메모리 내에 있으면서 CPU 잡아서 실행되기를 기다리는 프로세스의 집합 (ready 상태)
  • Device Queue: Device I/O 작업을 대기하고 있는 프로세스의 집합 (waiting 상태)

 

 

2. 스케줄러의 종류

 

- Long-term scheduler or job scheduler (장기 스케줄러)

 

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

 

long-term scheduler는 IO bound process와 CPU bound process 를 선택하는 것에 신중해야 한다. IO bound process는 IO 작업에, CPU bound process는 CPU 작업을 수행하는데 대부분의 시간을 보낸다. 해당 스케줄러는 이들의 비율을 잘 맞춰서 효율성을 높인다.

 

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

메모리에 프로그램이 너무 많이 올라가도, 너무 적게 올라가도 성능이 좋지 않은 것이다. time sharing system 에서는 장기 스케줄러가 없다. 곧바로 메모리에 올라가 ready 상태가 된다.

 

- short-term scheduler or CPU scheduler (단기 스케줄러)

 

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

short-term scheduler에 의해 선택된 프로세스는 dispatcher에 의해 CPU에 load 되는데, 이때 context switching 이 발생한다.

 

- medium-term scheduler or Swapper

 

이 스케줄러는 프로세스를 suspend 하고 resume 하는 역할을 하는 스케줄러이다. 주로 스와핑을 수행하여 프로세스를 메모리에서 디스크로 이동시킨다. 이를 통해서 메모리의 여유 공간을 확보한다.

 

  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)
  • 프로세스에서 메모리를 deallocate
  • degree of multiprogramming 제어. 실행 중인 프로세스의 수를 감소 시킨다.
  • 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러
  • 프로세스의 상태: ready -> suspended
  • Suspended (stopped): 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태를 의미한다. 프로세스 전부 디스크로 swap out된다. blocked 상태는 다른 IO 작업을 기다리는 상태이기 때문에 스스로 ready state 돌아갈 있지만 상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 없다.
반응형

'Computer Science > OS' 카테고리의 다른 글

[OS] Thread & Multithreading  (0) 2021.10.22
[OS] Process Synchronization  (0) 2021.10.22
[OS] CPU scheduling  (0) 2021.10.21
[OS] Process Management  (0) 2021.10.20
[OS] Operating System (운영체제)  (0) 2021.10.16