본문으로 건너뛰기

CPU 스케줄링: 선점

정보처리기사 목차운영체제: 프로세스레슨 157 / 233

목차

선점(preemptive) 스케줄링은 실행 중인 프로세스에게서 CPU를 빼앗아 다른 프로세스에 줄 수 있는 방식입니다. 비선점에서는 긴 프로세스가 CPU를 잡으면 급하거나 짧은 프로세스도 끝날 때까지 기다려야 해서, 여러 사람이 함께 쓰는 시스템의 응답이 느려집니다.

CPU 스케줄링: 비선점의 네 규칙은 한번 준 CPU를 거두지 않았습니다. 선점 규칙은 시간이 다 되거나 더 급한 프로세스가 오면 돌던 프로세스를 끊습니다. 아래 그림은 앞 레슨과 같은 프로세스 넷을 선점 규칙 셋으로 다시 깔고, 막대가 잘리고 끼어드는 자리를 짚습니다.

7단계 중 1단계. 라운드 로빈은 정해진 시간 할당량만큼만 CPU를 주고, 끝내지 못하면 준비 줄 맨 뒤로 보냅니다. P2는 3만큼 돌고 남은 2를 들고 줄 끝에 섭니다.

1라운드 로빈 — 할당량만큼 돌아가며

프로세스 넷은 앞 레슨과 같습니다.

프로세스도착 시각실행 시간우선순위
P1034
P2152
P3241
P4423

라운드 로빈(RR, Round Robin)은 정해진 시간 할당량(time quantum)만큼만 CPU를 주고, 그 안에 끝내지 못하면 준비 줄 맨 뒤로 보냅니다. 자료에 따라 할당량을 타임 슬라이스(time slice)라고도 부릅니다. 그림의 할당량은 3입니다.

할당량이 끝나는 시각에 새 프로세스가 도착하면 문제가 정한 차례를 따릅니다. 정하지 않았으면 새로 온 프로세스를 먼저 줄에 세우고, 잘린 프로세스를 그 뒤에 세우는 풀이가 흔합니다.

선점에서는 한 프로세스가 여러 토막으로 돌아, 대기 시간을 시작 시각으로 셀 수 없습니다. 반환 시간 − 실행 시간으로 셉니다. 모두가 자주 차례를 받아 응답은 빠르지만, 평균 대기는 오히려 길 수 있습니다.

할당량이 아주 크면 아무도 잘리지 않아 FCFS와 같아집니다. 아주 작으면 CPU를 넘기는 문맥 교환이 잦아져 그만큼 시간을 버립니다.

2SRT — 남은 시간이 가장 짧은 것

SRT(Shortest Remaining Time)는 남은 실행 시간이 가장 짧은 프로세스에 CPU를 줍니다. SJF를 선점으로 바꾼 것이라, 새 프로세스가 올 때마다 돌던 프로세스의 남은 시간과 견줍니다.

견주는 것은 처음 실행 시간이 아니라 남은 시간입니다. 시각 4에 P3의 실행 시간은 4였지만 1만큼 돌아 남은 시간이 3이고, 도착한 P4의 2가 더 짧아 CPU를 빼앗습니다.

그림에서도 평균 대기가 가장 짧지만, SJF처럼 긴 프로세스가 기아 상태에 빠질 수 있습니다.

3다단계 큐와 다단계 피드백 큐

다단계 큐(MLQ, Multi-Level Queue)는 준비 줄을 성격에 따라 여러 큐로 나누고, 큐마다 따로 규칙을 둡니다. 위 큐가 비어야 아래 큐가 돌고, 위 큐 프로세스가 오면 아래 큐 프로세스는 끊깁니다. 그림은 우선순위 1·2를 위 큐(라운드 로빈), 3·4를 아래 큐(FCFS)로 나눴습니다.

다단계 피드백 큐(MLFQ, Multi-Level Feedback Queue)는 프로세스가 큐 사이를 옮겨 다닐 수 있게 한 것입니다.

가르는 기준다단계 큐다단계 피드백 큐
큐 사이 이동처음 정한 큐에 머문다할당량을 다 쓰면 아래 큐로 내려간다
아래 큐기아 상태에 빠질 수 있다오래 기다리면 위로 올려 줄 수 있다(에이징)

시험은 규칙을 선점과 비선점으로 나누게 합니다. 우선순위 방식은 두 가지가 다 있고, 기한부(deadline)는 프로세스마다 끝낼 기한을 주고 그 안에 마치게 하는 비선점 방식입니다.

비선점선점
FCFS·SJF·HRN·우선순위·기한부RR·SRT·선점 우선순위·다단계 큐·다단계 피드백 큐

예제

그림의 SRT를 표로 따라갑니다. 프로세스가 도착하거나 끝날 때마다 남은 시간을 견줍니다.

시각남은 시간고름
0P1 3P1
1P1 2 · P2 5P1
2P1 1 · P2 5 · P3 4P1
3P2 5 · P3 4P3
4P2 5 · P3 3 · P4 2P4(P3을 빼앗음)
6P2 5 · P3 3P3
9P2 5P2

끝난 시각은 P1 3 · P4 6 · P3 9 · P2 14입니다. 대기 시간은 반환 시간 − 실행 시간으로 P1 3 − 3 = 0, P2 13 − 5 = 8, P3 7 − 4 = 3, P4 2 − 2 = 0이고, 평균은 11 ÷ 4 = 2.75입니다. 일곱 규칙을 견주면 다음과 같습니다.

규칙평균 대기평균 반환
FCFS47.5
SJF36.5
HRN3.57
우선순위(비선점)3.757.25
RR(할당량 3)58.5
SRT2.756.25
다단계 큐69.5

시험 포인트

  • 필기: 선점은 돌던 프로세스의 CPU를 빼앗을 수 있습니다. RR은 할당량만큼 돌리고 줄 뒤로 보내며, 할당량이 크면 FCFS와 같아지고 작으면 문맥 교환이 잦아집니다. SRT는 남은 시간이 가장 짧은 것을 고르는 SJF의 선점판입니다. 다단계 큐는 큐 사이를 옮기지 못하고, 다단계 피드백 큐는 옮겨 다닙니다. 비선점은 FCFS·SJF·HRN·우선순위·기한부, 선점은 RR·SRT·선점 우선순위·다단계 큐·다단계 피드백 큐입니다. 선점에서 대기 시간은 반환 시간 − 실행 시간으로 셉니다.
  • 실기: 라운드 로빈과 SRT의 평균 대기 시간을 계산해 문제가 정한 꼴대로 씁니다. 이름은 라운드 로빈(RR, Round Robin)·SRT(Shortest Remaining Time)·다단계 큐(MLQ, Multi-Level Queue)·다단계 피드백 큐(MLFQ, Multi-Level Feedback Queue)입니다.

확인 문제

1. SRT로 스케줄링하고 있습니다. 시각 5에 A가 돌고 있고 남은 시간은 4입니다. 준비 줄의 B는 남은 시간이 6입니다. 이때 실행 시간이 3인 C가 도착했습니다. 시각 5 바로 뒤에 CPU를 쓰는 프로세스를 고르세요.

  • ① A
  • ② B
  • ③ C
  • ④ A와 C가 한 단위씩 번갈아
정답

③입니다. 남은 시간은 A 4, B 6, C 3이라 C가 가장 짧습니다. SRT는 돌던 A에게서 CPU를 빼앗아 C에 줍니다.

  • ① 돌던 프로세스를 끝까지 둔다고 봤습니다. 비선점의 생각입니다.
  • ② 먼저 와서 기다린 프로세스를 골랐습니다. 도착순은 FCFS의 규칙입니다.
  • ④ 돌아가며 나눠 쓴다고 봤습니다. 라운드 로빈의 생각입니다.

2. 다음 (가)~(라)에 맞는 이름을 쓰세요. (가)·(다)·(라)는 한글 이름과 영문 약어·원어로, (나)는 약어와 영문 원어로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 모든 프로세스에 같은 몫의 시간을 주고, 몫을 다 쓰면 줄 맨 뒤로 보내 차례를 돌립니다.
  • (나) 끝날 때까지 남은 시간을 견주어, 그보다 더 빨리 끝날 프로세스가 오면 돌던 것을 멈추게 합니다.
  • (다) 시스템 작업·대화형 작업·일괄 작업 줄을 따로 두고, 한번 들어간 줄에서 다른 줄로 옮기지 않습니다.
  • (라) 처음에는 가장 위 줄에 넣고, 받은 몫을 다 쓸 때마다 한 줄씩 아래로 내립니다.
정답

받는 답: (가) 라운드 로빈(RR, Round Robin) · (나) SRT(Shortest Remaining Time) · (다) 다단계 큐(MLQ, Multi-Level Queue) · (라) 다단계 피드백 큐(MLFQ, Multi-Level Feedback Queue)

(가)의 실마리는 '같은 몫을 주고 줄 뒤로', (나)는 '남은 시간을 견준다', (다)는 '줄을 따로 두고 옮기지 않는다', (라)는 '몫을 다 쓰면 아래로 내린다'입니다.

  • 틀리는 꼴 SJF — (나)에: 처음 실행 시간으로 고르고 돌던 것을 멈추지 않는 비선점입니다. (나)는 남은 시간으로 견주어 빼앗습니다.
  • 틀리는 꼴 다단계 피드백 큐 — (다)에: 줄 사이를 옮겨 다닙니다. (다)는 옮기지 않습니다.
  • 틀리는 꼴 다단계 큐 — (라)에: 한번 정한 줄에 머뭅니다. (라)는 아래로 내려갑니다.

3. 그림의 프로세스 넷에서 P4의 실행 시간만 2에서 4로 바꿨습니다. SRT로 스케줄링할 때 평균 대기 시간을 소수 첫째 자리까지 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

정답

받는 답: 3.5

시각 4에 P4가 도착할 때 P3의 남은 시간은 3이고 P4는 4라, 이번에는 빼앗지 못합니다. 순서는 P1(0~3) → P3(3~7) → P4(7~11) → P2(11~16)입니다.

대기 시간은 P1 0, P3 7 − 2 − 4 = 1, P4 11 − 4 − 4 = 3, P2 16 − 1 − 5 = 10이고, (0 + 1 + 3 + 10) ÷ 4 = 3.5입니다.

  • 틀리는 꼴 3.75: 시각 4에 P4가 빼앗는다고 봤습니다. P3의 처음 실행 시간 4와 견주면 그렇게 보이지만, 견주는 것은 남은 시간 3입니다.

4. 다음 네 프로세스를 라운드 로빈(할당량 2)으로 스케줄링할 때 평균 대기 시간을 소수 둘째 자리까지 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

프로세스도착 시각실행 시간
A04
B13
C35
D52
정답

받는 답: 4.25

토막돈 프로세스그 뒤 준비 줄
0~2A(남은 2)B A
2~4B(남은 1)A C B
4~6A(끝)C B D
6~8C(남은 3)B D C
8~9B(끝)D C
9~11D(끝)C
11~14C(끝)—

대기 시간은 반환 시간 − 실행 시간으로 A 6 − 4 = 2, B 8 − 3 = 5, C 11 − 5 = 6, D 6 − 2 = 4이고, (2 + 5 + 6 + 4) ÷ 4 = 4.25입니다.

  • 틀리는 꼴 3.5: 할당량 없이 도착순으로 끝까지 돌렸습니다. FCFS의 답입니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로