정의
입출력 스케줄링(I/O scheduling)은 운영체제(OS)에서 디스크, 네트워크, 저장 장치 등과 같은 입출력 장치에 대한 요청을 효율적으로 처리하기 위해 요청 순서를 결정하고 관리하는 메커니즘이다. 이 과정은 장치의 물리적 특성 및 성능을 고려하여 전체 시스템의 목표인 응답 시간 감소, 처리량 향상, 공정성 확보 등을 달성한다.
주요 목적
-
성능 향상
- 디스크와 같은 회전식 매체에서는 헤드 이동 거리를 최소화함으로써 접근 시간을 줄인다.
- SSD와 같은 비회전식 매체에서는 병렬 처리와 쓰기 증폭을 감소시킨다.
-
공정성 보장
- 여러 프로세스가 동시에 I/O 요청을 보낼 때, 특정 프로세스가 과도하게 지연되지 않도록 공정성을 유지한다.
-
자원 활용 효율화
- I/O 장치의 대기 시간을 최소화하고, CPU와 메모리와 같은 다른 시스템 자원의 활용률을 높인다.
대표적인 스케줄링 알고리즘
| 알고리즘 | 주요 특징 | 적용 사례 |
|---|---|---|
| FCFS (First-Come, First-Served) | 요청이 들어온 순서대로 처리 | 간단한 구현이 요구되는 환경 |
| SSTF (Shortest Seek Time First) | 현재 헤드 위치에서 가장 가까운 트랙을 우선 | 디스크 헤드 이동 거리 최소화 |
| SCAN (Elevator) | 헤드가 한 방향으로 이동하며 요청을 처리하고, 끝에 도달하면 반대 방향으로 이동 | 디스크에서 헤드 이동을 일정하게 유지 |
| C-SCAN (Circular SCAN) | SCAN과 유사하지만, 헤드가 끝에 도달하면 처음 위치로 빠르게 되돌아가서 같은 방향만 처리 | 공정성 강화 |
| LOOK / C-LOOK | 실제 요청이 존재하는 영역까지만 이동, 불필요한 이동 최소화 | 효율적인 디스크 접근 |
| Deadline | 각 요청에 마감 시간을 지정하고, 마감 시간이 임박한 요청을 우선 | 실시간 시스템에서 사용 |
| CFQ (Completely Fair Queuing) | 각 프로세스에게 동등한 I/O 시간 할당 | 리눅스 커널에서 사용 (예전 버전) |
| BFQ (Budget Fair Queueing) | CFQ를 개선한 버전으로, 보다 정밀한 예산 기반 할당 | 리눅스 3.13 이후 커널에 도입 |
운영체제에서의 구현
- 리눅스(Linux): 블록 디바이스 계층에서 다중 큐 구조와 함께 다양한 스케줄러(예: bfq, mq-deadline, kyber 등)를 제공한다. 커널 파라미터를 통해 기본 스케줄러를 선택하거나 사용자 정의 스케줄러를 로드할 수 있다.
- 윈도우(Windows): NTFS 파일 시스템 및 스토리지 서브시스템에서 I/O 스케줄링을 내부적으로 수행한다. 일반 사용자에게는 구체적인 스케줄러 선택 옵션이 제공되지 않는다.
- macOS: XNU 커널은 디스크 I/O를 관리하기 위해 자체적인 스케줄링 메커니즘을 사용한다. 자세한 구현 세부사항은 공개되지 않았다.
관련 용어
- I/O 큐(I/O queue): 입출력 요청이 대기하는 자료구조.
- 요청 대기 시간(Latency): 요청이 처리되기까지 걸리는 시간.
- 처리량(Throughput): 일정 시간 내에 처리된 I/O 요청 수.
- 공정성(Fairness): 시스템 내 모든 프로세스가 동등한 기회를 갖는 정도.
참고 문헌
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2022). Operating System Concepts (10th ed.). Wiley.
- Bovet, D. P., & Cesati, M. (2005). Understanding the Linux Kernel (3rd ed.). O'Reilly Media.
- McKenney, J., & Levy, H. (2020). “Linux I/O schedulers: An overview.” Linux Journal, 263, 12‑19.
요약
입출력 스케줄링은 시스템 전반의 효율성을 향상시키기 위해 I/O 요청의 순서를 전략적으로 결정하는 핵심적인 운영체제 기능이다. 다양한 알고리즘이 장치 특성과 운영 환경에 따라 선택·조정되며, 현대 OS에서는 이러한 메커니즘을 통해 높은 성능과 공정성을 동시에 달성한다.