멀티프로그래밍
CPU에 비하여 주변장치들은 상대적으로 매우 느리다. 만약 컴퓨터가 주변장치에 접근해야 하는 프로그램을 실행시키면 CPU는 아무것도 하지 못하고, 주변장치가 데이터 처리를 완료해 줄 때까지 기다려야 했다. 전산학 발전 초기단계에서 CPU 시간은 매우 귀중한 자원이었기 때문에 이러한 CPU 시간의 낭비는 매우 비효율적으로 보였다.

이러한 낭비를 막기 위해서 1960년대가 되면서 최초의 멀티 프로그래밍 시스템을 개발하려는 움직임이 있었다. 이 시스템에서는 몇 개의 서로 다른 프로그램들이 컴퓨터의 메모리에 불러들여진다. 첫 번째 프로그램이 실행되다가 주변장치의 처리를 기다려야 하게 되면, 이 프로그램의 문맥은 저장이 되고, 두 번째 프로그램이 실행될 기회를 얻게 된다. 이런식의 처리 과정이 모든 프로그램의 작업이 완료될 때까지 반복적으로 일어난다.

멀티프로그래밍은 프로그램이 적절한 시간안에 완료되는 것을 보장해주지는 못한다. 사실, 아주 먼 옛날의 프로그램도 주변장치에 접근할 필요없이 몇시간이고 잘 동작하였다. 이러한 컴퓨터 환경은 활성화된 단말기 앞에 사용자가 결과를 확인하기 위해서 대기하고 있지만 않다면 특별한 문제가 없었다. 사용자는 단지 컴퓨터를 조작하는 사람에게 천공카드 한묶음(프로그램)을 건네주고 떠났다가, 몇시간 후 출력된 결과를 확인하기 위해서 다시 돌아오면 되기 때문이다. 멀티 프로그래밍은 여러개의 순차 프로그램들이 처리될 때 대기시간을 크게 줄여주었다.
멀티 프로그래밍 시스템이 처음 만들어진 것은 언제인가?
1960년