본문/내용
프로그램은 처리속도가 입출력장치의 속도에 따라 좌우되는 것과, 입출력은 거의 하지 않고 주로 계산만 하여 중앙처리장치의 속도에 따라 좌우되는 것으로 나뉜다. 전자를 입출력제약(I/O bound) 프로그램이라고 하고, 후자를 중앙처리장치제약(CPU bound) 프로그램이라고 한다. 멀티프로그래밍의 효율을 높이기 위해서는 몇 개의 입출력제약 프로그램과 하나 이상의 중앙처리장치제약 프로그램을 섞어서 처리하는 것이 좋다.
프로그램 처리는 우선순위에 따라 이루어진다. 한 프로그램이 입출력 대기상태가 되면 다른 프로그램이 CPU를 사용할 수 있도록 전환하고, 입출력 동작이 끝나면 우선순위에 따라서 실행 가능한 프로그램 중에서 하나를 뽑아서 실행한다. 우선순위를 매길 때는 입출력 동작이 많은 작업에 높은 우선순위를, CPU 사용 시간이 긴 작업에는 낮은 우선순위를 준다.
동시에 처리되는 프로그램의 수를 멀티프로그램의 수준(multiprogramming level) 또는 다중도(degree of multiprogramming)라고 한다. 이처럼 여러 개의 프로그램을 동시에 실행시키려면 운영체제가 기억장치 관리, CPU 사용계획, 주변장치 사용계획, 기억장치 보호 등의 기능을 잘 수행할 수 있어야 한다.