단일 프로그래밍(單一 Programming, Monoprogramming)은 컴퓨터 시스템에서 주기억장치에 하나의 프로그램만이 적재되어 실행되는 처리 방식이다. 다중 프로그래밍(Multiprogramming)의 상대 개념으로, 초기 컴퓨터 시스템(1950년대~1960년대 초반)의 배치 처리 시스템(Batch Processing System)에서 주로 사용되었다.
주요 특징
- 단일 작업 처리: CPU가 하나의 작업(Job)을 완전히 마칠 때까지 다른 작업은 대기 상태에 머문다.
- 자원 독점: 실행 중인 프로그램이 CPU, 메모리, 입출력 장치 등 시스템 자원을 독점적으로 사용한다.
- 단순한 관리: 프로세스 스케줄링, 메모리 보호, 동기화 등 운영체제의 관리 기능이 단순하다.
동작 방식 작업 제어 언어(JCL, Job Control Language) 등으로 작성된 작업 카드 데크(Job Card Deck) 순서대로 작업이 읽혀지고(Job Setup), 실행되며, 종료되면 다음 작업이 자동으로 적재되어 실행된다.
한계점
- CPU 이용률 저하: 입출력(I/O) 연산이 발생하면 CPU가 입출력 완료를 기다리며 유휴 상태가 되어 전체 시스템 처리량이 낮아진다.
- 대기 시간 증가: 실행 시간이 긴 작업이 수행 중일 때 짧은 작업들이 긴 시간 대기해야 하는 현상(Convoy Effect)이 발생한다.
역사적 의의 및 발전 단일 프로그래밍 방식의 비효율성(낮은 CPU 이용률)을 극복하기 위해 메모리에 여러 프로그램을 동시에 적재하여 CPU와 입출력 장치를 병행 동작시키는 다중 프로그래밍(Multiprogramming) 개념이 도입되었으며, 이는 시분할 시스템(Time-sharing System)과 현대 운영체제의 기반이 되었다.