Process vs Thread (3. 스케줄러 상세)

0

OS

목록 보기
3/5

Process Schedulers in Operating System


프로세스를 스케줄링하기 위한 Queue에는 세 가지 종류가 존재한다.

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

각각의 Queue에 프로세스들을 넣고 빼주는 스케줄러에도 크게 아래 세 가지종류가 있다

Long term or job scheduler

장기 스케쥴러는 새로운 프로세스를 'ready 상태'로 가져온다.
장기 스케쥴러는 Degree of Multi-programming을 제어한다.
장기 스케쥴러가 IO와 CPU bound 프로세스 모두 신중한 선택을 하는 것은 중요하다. IO 바운드 작업의 경우 input과 output 동작에 더 많은 시간을 할애 하며 CPU 바운드 프로세스는 CPU에서 더 많은 시간을 할애한다. 작업 스케줄러는 IO 바운드와 CPU 바운드 사이에서 효율적인 균형 유지를 향상 시킨다.

정리

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

Short term or CPU scheduler

단기 스케쥴러는 어느 한 프로세스를 running 시킬지 결정한다. 단기 스케줄러는 프로세스를 running 상태로 올리는 것이 아닌 어떤 프로세스를 선택하는 것인지에 대한 것만 관여한다.
CPU 스케줄러는 높은 burst time을 가지는 프로세스들로 인해 starvation(기아상태)가 발생하지 않도록 해야 한다.
Dispatcher는 단기 스케줄러가 선택한 프로세스를 CPU에 로드하는 역할을 한다 (Ready to Running State) 컨텍스트 전환은 디스패처에 의해서만 수행된다.
Dispatcher는 아래와 같은 작업을 한다.
1. Switching context
2. Switching to user mode
3. 새롭게 로드된 프로그램과 같이 적절한 위치로 이동시킨다

정리

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

Medium-term scheduler

프로세스를 중단하거나 재시작하는 역할을 한다.
프로세스들을 메인 메모리부터 디스크나 다른 프로세스로 swapping을 하도록 한다.
I/O bound와 CPU bound 사이에서 균형을 유지시키는데 도움을 준다
degree of multiprogramming을 감소시킨다.

정리

  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냄(swapping)
  • 프로세스에게서 memory를 deallocate
  • 프로세스의 상태 ready -> suspended


(출처 : https://velog.io/@ss-won/OS-CPU-Scheduler%EC%99%80-Dispatcher)

출처

profile
컴퓨터공학과 + 실무 = 4 + N = 모르는거 ∞ ...

0개의 댓글