스케줄링의 수준
2.1 고수준 스케줄링(장기 스케줄링)
•
가장 큰 틀에서 이루어지는 CPU 스케줄링 = 고수준 스케줄링, 장기 스케줄링, 작업 스케줄링
•
시스템 내의 전체 작업 수를 조절
→ 작업이란 운영체제에서 다루는 일의 가장 큰 단위 : 1개 또는 여러개의 프로세스로 이루어진다
→ 멀티 프로그래밍 정도를 결정
•
어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정 → 작업이 시작되면 기존 작업에 영향을 미치기 때문에
2.2 저수준 스케줄링(단기 스케줄링)
•
가장 작은 단위의 스케줄링 = 단기 스케줄링
•
어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정
→ 실행 상태의 프로세스를 대기 상태로 보냄
→ 대기 상태의 프로세스를 실행 상태로 보냄
•
3장에서 배운 프로세스 상태는 대부분 저수준 스케줄링
•
실제로 작업이 이루어진다
2.3 중간 수준 스케줄링(중기 스케줄링)
•
고수준 스케줄링과 저수준 스케줄링 사이에 일어난다
•
식당 예시
→ 식당에서 손님을 다 받았는데 전부 코스요리를 주문하면 오래걸린다
→ 관리자는 시간이 덜 걸리는 코스요리로 변경하도록 유도하거나 주문을 천천히 받는다.
•
중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절한다
→ 활성화된 프로세스 일부를 보류 상태로 보낸다
→ 과부하를 막음
•
중지는 보류상태에 해당한다
•
저수준 스케줄링이 원만하게 이루어지도록 완충하는 역할
연습문제 01 - 03
01. 시스템 내 전체 프로세스의 수를 조절하는 것으로, 장기 스케줄링 또는 작업 스케줄링이라 불리는 스케줄링 수준은 무엇인가?
고수준 스케줄링
02. 어떤 프로세스에 CPU를 할당하고 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 스케줄링 수준은 무엇인가?
저수준 스케줄링
03. 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링은 무엇인가?
비선점형 스케쥴링
전면 / 후면 프로세스
전면 프로세스(상호작용 프로세스)
•
GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스
•
사용자와 상호작용이 가능한 프로세스
•
사용자의 요구에 즉각 반응해야 하므로, 후면 프로세스보다 우선순위가 높다
•
ex) 워드 프로세스, 브라우저 등
후면 프로세스(일괄 작업 프로세스)
•
사용자와 상호작용이 없는 프로세스
•
사용자의 입력 없이 작동
•
ex. 압축 프로그램
연습문제 04
04. 현재 입출력을 진행하는 프로세스로, 사용자와 상호작용이 가능하여 상호작용으로 프로세스라고도 불리는 것은 무엇인가?
전면 프로세스
스케줄링 알고리즘
FCFS 스케줄링(First Come First Served)
•
준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식(선착순)
•
선점형 방식 → 한 번 실행되면 프로세스가 끝나야 다음 프로세스를 실행 가능
FCFS 스케줄링 성능
•
위 표로 계산한 FCFS스케줄링의 평균 대기시간 : (0 + 27 +42) / 3 = 23ms
•
처리시간이 긴 P1이 끝날 때 까지 P2와 P3는 기다려야 하므로 시스템 효율성이 떨어진다.
→ 콘보이 효과
•
현재 작업중인 프로세스가 입출력 작업을 요구할 경우
→ CPU가 작업하지 않고 쉬는시간이 많아진다
→ 효율이 낮다
SJF 스케줄링(Shortest Job First)
•
준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짧은 작업부터 CPU 할당
→ 콘보이 효과를 완화
•
비선점형 방식
SJF 스케줄링의 성능
•
위 표로 계산한 SJF 스케줄링의 평균 대기시간 : (0 + 24 +36) / 3 = 20ms
•
FCFS 스케줄링보다 평균 대기시간이 줄어들어서 시스템의 효율성이 높다
SJF 스케줄링을 잘 사용하지 않는 이유
1.
운영체제가 프로세스의 종료시간을 정확하게 예측하기 어렵다
•
현대의 운영체제에서는 사용자와의 상호작용이 빈번하다.
•
사용자와의 상호작용이 빈번한 경우, 프로세스의 작업 시간을 알 수 없다.
2.
공평하지 못하다
•
작업 시간이 길다는 이유만으로 뒤로 밀리면 공평성이 떨어진다
→ 아사현상, 무한 봉쇄 현상
연습문제 05 - 06
05. 준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 스케줄링 알고리즘은 무엇인가?
FCFS 스케줄링
06. 준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 작업부터 CPU를 할당하는 비선점형 스케줄링 알고리즘은 무엇인가?
SJF 스케줄링