운영체제

CPU 스케줄링

CPU를 기다리는 프로세스가 여러 개일 때, 운영체제는 누구를 먼저 실행할지 정해야 합니다. 같은 프로세스 네 개를 세 가지 방식으로 실행해 보고, 각 방식에서 프로세스들이 얼마나 기다리는지 비교해 보세요.

프로세스 네 개의 실행 순서를 간트 차트로 보여 주는 CPU 스케줄링 시뮬레이터

프로세스도착 시각실행 시간대기 시간

1. 스케줄링 방식을 고르세요

2. 실행 순서를 재생하세요

세 방식의 평균 대기 시간 (짧을수록 좋음)

표에서 도착 시각과 실행 시간을 바꾸면 결과가 바로 다시 계산됩니다. 방식을 고른 뒤 [실행 순서 재생]을 누르면 CPU를 차지하는 순서가 왼쪽부터 차례로 나타납니다.

세 가지 방식은 누구를 먼저 고르는지가 다릅니다

FCFS는 먼저 도착한 프로세스부터 끝까지 실행합니다. 규칙은 단순하지만, 실행 시간이 긴 프로세스가 앞에 있으면 뒤에 온 짧은 프로세스들이 모두 오래 기다립니다.

SJF는 도착해 있는 프로세스 중 실행 시간이 가장 짧은 것부터 실행합니다. 평균 대기 시간은 세 방식 중 가장 짧아집니다. 다만 운영체제가 실행 시간을 미리 정확히 알기 어렵고, 긴 프로세스는 짧은 프로세스가 계속 들어오면 한없이 밀릴 수 있습니다.

라운드 로빈은 각 프로세스에 정해진 시간만큼만 CPU를 주고, 시간이 끝나면 대기열 맨 뒤로 보냅니다. 모든 프로세스가 고르게 차례를 받습니다. 할당량을 너무 작게 잡으면 프로세스를 바꾸는 문맥 교환이 잦아져 오히려 손해가 납니다.

대기 시간 계산

프로세스가 준비된 상태로 CPU를 기다린 시간을 모두 더한 값입니다.

대기 시간 = 종료 시각 − 도착 시각 − 실행 시간