본문 바로가기
Lecture/OS

스케줄링의 개요

by YUNZEE 2023. 10. 18.
728x90
레스토랑 관리자의 스케줄링

프로세스는 생성, 준비, 실행, 대기와 같은 여러 상태를 거치며 작업이 이루어진다는 것을 앞에서 살펴보았다. 

CPU스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정한다. CPU스케줄러의 작업을 레스토랑 관리자의 역할에 빗대어 이해해 보자

 

레스토랑 관리자는 예약과 관리와 좌석 관리를 한다. 손님이 많지 않을 때는 도착한 순서대로 테이블을 안내하고 주문을 받는다. 수용 인원보다 많은 손님이 몰리면 기다리는 손님에게 대기표를 주고 순서대로 자리를 배정한다. 그리고 레스토랑 관리자는 주문을 받는다. 손님이 주문한 요리와 샐러드의 드레싱 종류, 고기의 익힘 정도, 알레르기 여부등을 주문서에 적어 주방으로 보낸다. 레스토랑 관리자는 순서를 바꿀 수도 있다. 또한 관리자는 손님의 개별적인 요구에도 대응한다.

운영체제에서 이러한 레스토랑 관리자의 역할을 담당하는 것은 CPU스케줄러다. CPU스케줄러는 프로세서 스케줄러 processor scheduler라고도 한다. 스케줄링은 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다.

 

CPU스케줄링

레스토랑 관리자가 큰 틀의 관리와 작은 틀의 관리를 병행하듯이 CPU스케줄러도 관리의 범주를 나누어 스케줄링한다. CPU스케줄링은 규모에 따라 고수준 스케줄링, 중간 수준 스케줄링, 저수준 스케줄링으로 구분된다.

 

CPU스케줄링 시 고려 사항

선점형 스케줄링과 비선점형 스케줄링

운영체제에서 '선점'은 '빼앗을 수 있음'을  뜻하고 '비선점'은 '빼앗을 수 없음'을 뜻한다. 따라서 선점형 스케줄링 Preemptive scheduling은 어떤 프로세스가 CPU를 강제로 뺴앗은 수 있는 스케줄링 방식이고

비선점형 스케줄링non-preemptive scheduling은 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식이다.

 

프로세스 우선순위

프로세스의 우선순위가 없다는 것은 모든 프로세스의 중요도가 같다는 의미다. 우선순위가 없는 모든 프로세스는 준비 상태에 한 줄로 서서 순차적으로 실행되는데, 이는 준비 상태의 큐가 하나인 것과 마찬가지다. 레스토랑이 꽉 차서 자기 차례를 기다리는 손님들을 상상해 보라, 보통은 도착한 순서대로 자리를 배정받는다. 

 

하지만 대부분의 CPU스케줄러는 우선순위를 사용한다. 우선순위가 있다는 것은 프로세스의 중요도가 다르다는 의미다. 

따라서 레스토랑에서도 예약 손님은 일반 손님보다 우선순위가 높다. 예약을 했는데도 일반 손님처럼 줄을 서야 한다면 굳이 예약할 필요가 없다.

프로세스는 크게 커널 프로세스와 일반 프로세스로 나뉜다. CPU스케줄러는 각 프로세스에 우선순위를 부여하는데 커널 프로세스의 우선순위가 일반 프로세스보다 높다. 만약 커널 프로세스와 일반 프로세스를 우선순위 없이 같은 중요도로 처리한다면 커널과 관련된 중요한 프로세스 작업이 제대로 이루어지지 않을 것이다.

 

CPU스케줄링 시 고려상항

준비 상태의 다중 큐

프로세스는 저마다 중요도가 다르며 그 중요도는 프로세스 제어 블록에 표시된다. CPU스케줄러는 모든 프로세스 제어 블록을 뒤져서 우선순위가 가장 높은 프로세스에 CPU를 할당한다. 그러나 매번 모든 프로세스 제어 블록을 검색하려면 상당히 번거롭다. 그래서 우선순위에 따라 여러 개의 큐를 만들면 일일이 찾지 않아도 돼 편리하다. 프로세스의 우선순위를 배정하는 방식에는 고정 우선순위 방식과 변동 우선순위 방식이 있다. 고정 우선순위 방식은 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식이다.

 

대기 상태의 다중 큐

대기 상태에서도 다중 큐를 사용한다. 대기 상태에는 입출력이 완료되기를 기다리는 프로세스가 모여 있는 곳이다. 시스템 내에는 다양한 입출력장치가 있기 때문에 대기 상태의 프로세스를 한곳에 모아놓으면 관리하기가 불편하다.

따라서 시스템의 효율을 높이기 위해 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아 놓는다.

준비 상태의 다중 큐와 대기 상태의 다중 큐 간에는 차이가 있다. 준비 큐는 한 번에 하나의 프로세스를 꺼내어 CPU를 할당하는 반면, 대기 큐는 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮긴다. 시스템에는 많은 입출력장치가 있기 때문에 입출력이 동시에 꺼내어 준비 상태로 옮긴다. 시스템에는 많은 입출력장치가 있기 때문에 입출력이 동시에 끝날 경우 여러 개의 인터럽트를 처리하기 위해 인터럽트 벡터 interrupt vector라는 자료구조를 사용한다.

 

728x90

'Lecture > OS' 카테고리의 다른 글

프로세스 간 통신  (0) 2023.10.20
스케줄링 알고리즘  (2) 2023.10.19
스레드  (2) 2023.10.17
프로세스의 연산  (2) 2023.10.17
프로세스 제어 블록과 문맥 교환  (0) 2023.10.16