CPU 스케줄링

kmb·2021년 12월 19일
0

운영체제

목록 보기
3/5

작업관리자를 실행하게 되면 아래와 같은 화면을 본적이 있을것이다.
여러개의 프로세스(OS에서 실행되는 프로그램의 최소단위)가 동시에 실행되고 있는데 이는 컴퓨터의 두뇌인 CPU의 코어에서 실행이된다.

이 프로세스들은 어떻게 동시에 작업을 진행 할 수 있을까?
그것은 바로 컨텍스트 스위칭(Context Switching) 이라는 기술로 하나의 프로그램이 일정 시간동안 잠시 실행되었다가 다른 프로그램으로 스위칭되어 실행되는데 그 속도가 빨라서 우리 눈에는 동시에 실행 되는것처럼 보인다.

그렇다면 어떤 기준으로 스위칭이 되는것일까?
그 기준은 OS의 스케줄러(Scheduler)가 결정하며 그 종류와 특징은 다음과 같다.


CPU 스케줄링

한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 프로세서(CPU)를 프로그램들에게 할당해주는것.

만약 할당된 최대시간(Time Slice 혹은 Time Quantum 이라고 부름) 이 초과된다면 프로세서(CPU)를 다른 프로세스에게 할당 할 수 있다.


스케줄링 방식

1) 선점형(Preemptive) 스케줄링 : 프로세스가 CPU를 할당받아 실행중인 중간에 다른 프로세스가 CPU를 강제로 뺏을수 있다.

특징 : 특정 프로세스의 CPU의 독점을 막을수있어 효율적인 운영이 가능하지만 잦은 switching으로 overhead가 많이 발생한다.

2) 비선점형(Non-Preemptive) 스케줄링 : 프로세스가 CPU를 할당받아 점유하고있으면 이를 뺏을수 없다.

특징 : 모든 프로세스가 공정하게 처리될 수 있지만 짧은 작업의 프로세스가 긴 작업의 프로세스가 종료될동안 대기 할 수 도 있다. (콘베이 현상)


프로세스를 스케줄링하기위한 Queue 종류

작업 큐(Job Queue) : 시스템내에있는 모든 프로세스 집합
준비 큐(Ready Queue) : 메인메모리내에 있으면서 실행되기를 기다리는 ready 상태의 모든 프로세스 집합
장치 큐(Device Queue) : I/O 작업을 대기하는 프로세스 집합


스케줄러 종류

1) 장기 스케줄러(Long-term scheduler) == 잡 스케줄러(Job scheduler) : 어떤 프로세스에 메모리를 할당해서 new에서 --> Ready Queue로 보낼지 결정.
디스크와 메모리사이의 스케줄링을 담당. degree of multiprogramming 제어

2) 단기 스케줄러(Short-term scheduler) == CPU 스케줄러(CPU scheduler) : 어떤 프로세스를 ready에서 --> running 상태로 전환시킬지 결정. 프로세스에 CPU를 할당. ready -> running -> waiting -> ready

3) 중기 스케줄러(Medium-term scheduler) : 여유공간을 만들기위해 프로세스를 통채로 메모리에서 --> 디스크로 쫓아낸다(Swapping)

레스토랑을 예로 들자면 잡 스케줄러는 전체 손님수를 조절하는것이고(손님을 받을지 말지) CPU 스케줄러는 각 손님별로 주문 및 요리 제공순서를 미세하게 조절하는것이고 중기 스케줄러는 손님을 받았는데 안에 공간이 너무 없어서 몇명의 손님을 밖에서 대기시키는것으로 이해하면 될듯하다. 실제 음식점에서 이런다면 망할테지만..?


작업 우선순위가 높은(더 빨리 자주실행되는) 프로세스

참조

  • 쉽게 배우는 운영체제 (책)
profile
꾸준하게

0개의 댓글