Computer Science/운영체제

[운영체제] 스케줄러

excited-hyun 2021. 5. 14. 18:38
반응형

스케줄러

프로세스를 스케줄링하기 위한 Queue에는 3가지가 존재

1) Job Queue : 현재 시스템 내에 있는 모든 프로세스들의 집합

2) Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받아 실행되기를 기다리는 프로세스들의 집합

3) Device Queue : Device I/O작업을 대기하고 있는 프로세스의 집합.

 

각각의 Queue에 프로세스를 넣고 빼는 스케줄러도 3가지가 존재

장기 스케줄러 / 단기 스케줄러 / 중기 스케줄러

 

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

메모리의 크기는 한정되어 있는데 많은 프로세스가 한번에 메모리에 올라오는 경우, 대용량 메모리(일반적으로 디스크)에 임시 저장.

이 pool에 저장된 프로세스 중 어떤 프로세스에 메모리를 항당해 ready queue로 보낼지 결정.

- 메모리와 디스크 사이의 스케줄링

- 프로세스에 메모리 및 자원들을 할당

- 실행중인 프로세스 수 제어

- 프로세스의 상태: new -> ready

 

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

- CPU와 메모리 사이의 스케줄링 담당

- Ready Queue의 프로세스 중 어느것을 run할지 결정.

- 프로세스에 CPU 할당

- 프로세스의 상태: ready -> running -> waiting -> ready

 

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

- 여유 공간 마련을 위해 프로세스를 통째로 디스크로 보냄 (swapping)

- 프로세스에게서 메모리를 할당 해제.

- 멀티프로그래밍의 degree 제어

- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절.

- 프로세스의 상태: ready -> suspended

 

 cf) suspended : 외부적 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태. 프로세스가 전부 디스크로 swap out 됨.

blocked 상태와 달리 이는 외부적 이유로 suspending되었기 때문에 스스로 돌아갈 수 없음.

 

 

 

 

CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다.

github.com/JaeYeopHan/Interview_Question_for_Beginner

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

728x90
반응형