I/O Management와 Disk Scheduling 이해하기: 핵심 개념과 예제

I/O(입출력) 관리와 디스크 스케줄링은 운영체제에서 중요한 역할을 합니다. 디스크에 저장된 데이터를 효율적으로 관리하고, CPU와 메모리 자원을 최적으로 사용하는 방법을 이해하는 것은 시스템 성능을 극대화하는 데 도움이 됩니다. 이번 포스트에서는 I/O 방식별 데이터 도착 통보 방식과 데이터 이동 방식의 차이, 그리고 디스크 스케줄링 알고리즘에 대해 다뤄보겠습니다.
1. I/O 방식별 데이터 도착 통보 및 데이터 이동 방식의 차이
I/O 데이터 도착 통보 방식
- Polling (폴링): CPU가 주기적으로 I/O 장치를 확인하여 데이터 도착 여부를 확인하는 방식입니다. 장점은 구현이 간단하지만, CPU 리소스를 낭비한다는 단점이 있습니다.
- Interrupt (인터럽트): 데이터가 도착하면 I/O 장치가 CPU에 인터럽트를 보냅니다. 이 방식은 CPU를 효율적으로 사용하지만, 많은 인터럽트가 발생할 경우 오버헤드가 증가할 수 있습니다.
- Direct Memory Access (DMA): I/O 장치가 메모리와 직접 데이터를 교환하는 방식으로, CPU 개입을 최소화합니다. 이 방식은 CPU 부하를 줄일 수 있지만 하드웨어 복잡도가 증가합니다.
데이터 이동 방식의 차이
- Programmed I/O: CPU가 I/O 요청을 제어하고 데이터를 전송합니다. 효율성은 낮지만 구현이 간단합니다.
- Interrupt-driven I/O: 데이터가 준비되면 인터럽트를 통해 CPU에 알리고, CPU가 데이터 전송을 관리합니다. 이 방식은 CPU 효율성을 높일 수 있습니다.
- DMA (Direct Memory Access): 데이터 전송이 CPU를 거치지 않고 메모리와 장치 간 직접 이루어집니다. 대량 데이터 전송에 적합한 방식입니다.
2. 주요 디스크 스케줄링 알고리즘
디스크 스케줄링 알고리즘은 디스크 헤드의 이동을 최적화하여 성능을 개선합니다. 주요 알고리즘에는 FCFS (First-Come, First-Served), SSTF (Shortest Seek Time First), SCAN, C-SCAN, LOOK, C-LOOK 등이 있습니다.
- FCFS (First-Come, First-Served): 요청이 들어온 순서대로 처리하는 단순한 방식입니다. 단점은 탐색 시간이 비효율적이고, 많은 요청이 있을 경우 성능 저하가 발생할 수 있습니다.
- SSTF (Shortest Seek Time First): 헤드가 현재 위치에서 가장 가까운 요청을 처리하는 방식입니다. 평균 탐색 시간을 줄일 수 있지만, 기아 현상이 발생할 수 있습니다.
- SCAN (Elevator Algorithm): 디스크 헤드가 한쪽 끝까지 이동하며 요청을 처리하고, 끝에 도달하면 방향을 바꾸어 다시 이동합니다. 이 방식은 기아를 방지하지만, 한쪽 끝의 요청은 오래 대기할 수 있습니다.
- C-SCAN (Circular SCAN): SCAN과 비슷하지만, 한 방향으로만 이동합니다. 끝에 도달하면 처음으로 돌아가서 요청을 처리합니다. 응답 시간의 일관성을 높이는 장점이 있습니다.
- LOOK / C-LOOK: SCAN과 C-SCAN과 유사하지만 요청이 없는 구간을 건너뛰는 방식입니다. 탐색 시간을 단축시킬 수 있습니다.
3. 파일 저장 방식에 따른 계산 문제
디스크에 데이터를 저장할 때, Seek Time, Rotational Delay, Transfer Time 등의 요소가 파일의 접근 시간에 영향을 미칩니다. 이를 계산하는 방식은 다음과 같습니다:
- Seek Time (탐색 시간): 디스크 헤드가 적절한 트랙으로 이동하는 데 걸리는 시간입니다.
계산식:
Seek Time = Track Distance × Seek Time per Track - Rotational Delay (회전 지연): 디스크가 적절한 섹터 위치로 회전하는 데 걸리는 시간입니다.
계산식:
Rotational Delay = 1 Revolution Time / 2
(평균적으로 디스크는 반 바퀴를 회전합니다) - Transfer Time (전송 시간): 데이터가 디스크에서 메모리로 전송되는 시간입니다.
계산식:
Transfer Time = Number of Bytes / Transfer Rate - Total Access Time: 파일에 접근하는 데 걸리는 전체 시간입니다.
계산식:
Total Access Time = Seek Time + Rotational Delay + Transfer Time
4. 예제 문제
문제 1: Disk Scheduling 알고리즘 비교 (SCAN 알고리즘)
- 요청 순서: 98, 183, 37, 122, 14, 124, 65, 67
- 현재 헤드 위치: 53
- 디스크의 최대 트랙: 200
- SCAN 알고리즘 사용 (헤드는 처음에 증가 방향으로 이동)
풀이:
- 요청 정렬: 14, 37, 65, 67, 98, 122, 124, 183
- 헤드 이동 순서: 53 → 65 → 67 → 98 → 122 → 124 → 183 → 199 → 37 → 14
- 총 이동 거리:
146 + 185 = 331
정답:
헤드 이동 순서: 53 → 65 → 67 → 98 → 122 → 124 → 183 → 199 → 37 → 14
총 이동 거리: 331
디스크 스케줄링 알고리즘과 파일 저장 계산 문제는 운영체제 성능을 최적화하는 데 중요한 역할을 합니다. 이러한 개념을 명확히 이해하고 실제 예제를 통해 적용하는 방법을 익히면, 복잡한 시스템을 다룰 때 효율적인 자원 관리를 할 수 있습니다.