사용 개념: 디스크 스케줄링의 FIFO·SSTF·SCAN·C-SCAN 규칙. SCAN·C-SCAN은 Stallings의 정의대로 그 방향의 마지막 요청에서 돌아선다.
이 방법을 떠올리는 신호는 “헤드 위치”, “요청 트랙 목록”이 주어지고 이동 거리를 묻는 문제다. 풀이는 같은 하위목표로 나뉜다. 규칙대로 처리 순서 정하기, 한 걸음씩 이동 거리 적기, 합과 평균 구하기다. SCAN 계열은 먼저 요청을 헤드보다 큰 쪽과 작은 쪽으로 나누면 쉽다.
네 문제 모두 헤드 50, 요청 82, 170, 43, 140, 24, 16, 190(트랙 0~199)이다.
문제 1 · 완전한 풀이
FIFO의 이동 합은?
답
- 순서: 들어온 대로 82, 170, 43, 140, 24, 16, 190.
- 이동: 50→82 = 32, →170 = 88, →43 = 127, →140 = 97, →24 = 116, →16 = 8, →190 = 174.
- 합: 642. 평균 642 / 7 ≈ 91.7.
문제 2 · 마지막 하위목표만 빈칸
SSTF의 이동 합은?
- 순서: 가장 가까운 것부터 43(7), 24(19), 16(8). 이제 남은 것 중 가장 가까운 82(66), 140(58), 170(30), 190(20).
- 이동: 7, 19, 8, 66, 58, 30, 20.
- 합: __
답
- FIFO의 3분의 1이다.
문제 3 · 하위목표 절반이 빈칸
SCAN(트랙이 커지는 방향으로 시작)의 이동 합은?
- 나누기: 큰 쪽 82, 140, 170, 190 / 작은 쪽 43, 24, 16.
- 순서: __
- 이동: __
- 합: 314.
답
- 82, 140, 170, 190, 그다음 방향을 바꿔 43, 24, 16.
- 32, 58, 30, 20, 147, 19, 8.
문제 4 · 독립 문제
C-SCAN(커지는 방향으로만)의 처리 순서와 이동 합을 구하라. 디스크 끝(199)까지 갔다 0에서 다시 시작하는 버전이라면 이동 합은 얼마가 되는가? (돌아가는 이동도 센다)
답
마지막 요청에서 돌아서는 버전: 82, 140, 170, 190, 16, 24, 43. 이동 32 + 58 + 30 + 20 + 174 + 8 + 19 = 341.
끝까지 가는 버전: 50→199 = 149, 199→0 = 199, 0→43 = 43. 합 391.
검증: 문제 1~4의 첫 번째 답(FIFO 642, SSTF 208, SCAN 314, C-SCAN 341) — 53_disk-scheduling_impl.py