스풀링 (Spooling)
Jan 23, 2026 · Updated Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”스풀링(Spooling, Simultaneous Peripheral Operation On-Line)은 디스크를 거대한 버퍼로 사용하여, 입력 장치에서 미리 읽어두고 출력 장치가 받아들일 수 있을 때까지 출력을 저장하는 기법이다. I/O 장치(카드 리더, 프린터)가 CPU보다 3자릿수 이상 느리기 때문에(빠른 카드 리더가 분당 1,200장인 반면 CPU는 초당 수천 명령 실행) 이 속도 차이를 해소할 방법이 필요했다.
이전의 오프라인(off-line) 방식은 테이프에 전체를 기록한 후에야 읽을 수 있었지만, 디스크의 랜덤 접근 특성 덕분에 읽으면서 동시에 쓸 수 있게 되었다.
동작 원리
섹션 제목: “동작 원리”Spooling 흐름
1 출력 요청
App 1, 2, 3이 프린터에 출력 요청 2 Spool 저장
OS가 각 출력 데이터를 개별 spool 파일(디스크)에 저장 3 대기열 관리
시스템 데몬이 spool 대기열에서 순서대로 꺼냄 4 장치 전송
프린터가 준비되면 하나씩 전송하여 순차 처리 초기 스풀링 구조
섹션 제목: “초기 스풀링 구조”초기 시스템에서는 카드 리더 입력과 프린터 출력을 디스크를 경유하여 처리했다.
초기 스풀링 구조 (On-Line)
Card Reader 입력 장치
Disk 스풀 저장소
Line Printer 출력 장치
CPU 연산 처리
Spooling vs Off-line Operation
섹션 제목: “Spooling vs Off-line Operation”| 구분 | Off-line | Spooling |
|---|---|---|
| 매체 | 테이프 | 디스크 |
| 접근 방식 | 순차 접근 | 랜덤 접근 |
| 동시성 | 불가 (전체 기록 후 읽기) | 가능 (읽으면서 쓰기) |
| 지연 | 높음 (테이프 운반 필요) | 낮음 |
Spooling vs Buffering
섹션 제목: “Spooling vs Buffering”| 구분 | Buffering | Spooling |
|---|---|---|
| 저장 위치 | 메모리 | 디스크 |
| 데이터 크기 | 작음 (KB~MB) | 클 수 있음 (MB~GB) |
| 목적 | 속도 차이 해소 | 전용 장치 접근 직렬화 |
| 동시 작업 | 하나의 I/O 버퍼링 | 여러 작업 대기열 관리 |
3명의 사용자가 동시에 문서 인쇄를 요청한다. 각 문서가 spool에 저장되고, 프린터는 첫 번째 문서 완료 후 두 번째, 그 다음 세 번째 문서를 순차 인쇄한다. 마치 은행 대기표 시스템처럼, 고객들이 도착하면 번호표를 받고 은행원은 번호 순서대로 한 명씩 처리한다.
초기 배치 시스템에서의 동시 처리
섹션 제목: “초기 배치 시스템에서의 동시 처리”- Job A의 카드를 디스크에 읽어둠
- Job A 실행 중, Job B의 카드를 동시에 디스크에 읽음
- Job A의 출력이 디스크에 저장됨
- Job A 출력이 프린터로 나가는 동안 Job B 실행
이 방식으로 CPU와 I/O 장치가 동시에 높은 비율로 작동할 수 있게 되었고, 이는 멀티프로그래밍의 자연스러운 도입 기반이 되었다.
장단점
섹션 제목: “장단점”장점:
- 장치 공유: 여러 프로세스가 순차적으로 전용 장치 사용 가능
- 비동기 처리: 애플리케이션은 spool에 쓰고 바로 다른 작업 진행
- 관리 인터페이스: 대기열 확인, 취소, 우선순위 조정 가능
단점:
- 디스크 공간 사용
- 지연 시간 (실제 출력까지 대기 필요)
- spool 영역 가득 차면 새 작업 거부될 수 있음
관련 개념
섹션 제목: “관련 개념”- 버퍼링 (Buffering) - 메모리를 임시 저장소로 사용하는 기법으로, 스풀링은 디스크를 버퍼로 사용
- I/O 스케줄링 - 대기 중인 I/O 요청의 순서를 최적화하는 기법
- 디바이스 드라이버 - 스풀링 대상인 전용 장치(프린터 등)를 제어하는 커널 모듈
- 블로킹 vs 논블로킹 I/O - 스풀링으로 애플리케이션이 I/O 완료를 기다리지 않고 비동기 처리 가능