콘텐츠로 이동

스풀링 (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 연산 처리
구분Off-lineSpooling
매체테이프디스크
접근 방식순차 접근랜덤 접근
동시성불가 (전체 기록 후 읽기)가능 (읽으면서 쓰기)
지연높음 (테이프 운반 필요)낮음
구분BufferingSpooling
저장 위치메모리디스크
데이터 크기작음 (KB~MB)클 수 있음 (MB~GB)
목적속도 차이 해소전용 장치 접근 직렬화
동시 작업하나의 I/O 버퍼링여러 작업 대기열 관리

3명의 사용자가 동시에 문서 인쇄를 요청한다. 각 문서가 spool에 저장되고, 프린터는 첫 번째 문서 완료 후 두 번째, 그 다음 세 번째 문서를 순차 인쇄한다. 마치 은행 대기표 시스템처럼, 고객들이 도착하면 번호표를 받고 은행원은 번호 순서대로 한 명씩 처리한다.

초기 배치 시스템에서의 동시 처리

섹션 제목: “초기 배치 시스템에서의 동시 처리”
  1. Job A의 카드를 디스크에 읽어둠
  2. Job A 실행 중, Job B의 카드를 동시에 디스크에 읽음
  3. Job A의 출력이 디스크에 저장됨
  4. Job A 출력이 프린터로 나가는 동안 Job B 실행

이 방식으로 CPU와 I/O 장치가 동시에 높은 비율로 작동할 수 있게 되었고, 이는 멀티프로그래밍의 자연스러운 도입 기반이 되었다.

장점:

  • 장치 공유: 여러 프로세스가 순차적으로 전용 장치 사용 가능
  • 비동기 처리: 애플리케이션은 spool에 쓰고 바로 다른 작업 진행
  • 관리 인터페이스: 대기열 확인, 취소, 우선순위 조정 가능

단점:

  • 디스크 공간 사용
  • 지연 시간 (실제 출력까지 대기 필요)
  • spool 영역 가득 차면 새 작업 거부될 수 있음