스케줄러

Tabber·2021년 12월 19일
0

CS공부하기

목록 보기
3/8

공부하며 적은 글입니다! 정확하지 않을 수 있습니다.

스케줄러?

이게 왜 필요할까?
이유는 간단하다.
컴퓨터나 휴대폰이나 모두 한정적인 메모리를 가지고 있다.
이 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 도와주는 역할이다.

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

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

이 각각의 Queue에 프로세스들을 넣고 빼주는 스케줄러에도 크게 3가지 종류가 존재한다.

장기 스케줄러 (Long-term scheduler OR Job scheduler)

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

  • 메모리와 디스크 사이의 스케줄링을 담당
  • 프로세스에 메모리를 할당
  • 실행중인 프로세스의 수를 제어함
  • 프로세스의 상태 new -> ready

단기 스케줄러 (Short-term scheduler OR CPU scheduler)

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

중기 스케줄러 (Medium-term scheduler OR Swapper)

  • 여유 공간 마련을 위해서 프로세스를 통째로 메모리에서 쫒아냄
  • 프로세스에게서 메모리를 해제시킴
  • 실행중인 프로세스 수를 제어
  • 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러
  • 프로세스의 상태 ready -> suspended

suspended

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

profile
iOS 정복중인 Tabber 입니다.

0개의 댓글