프로세서가 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있도록 하는 것.
스케쥴링에 의해 수행되며 정교한 메모리관리가 필요하다.
한사용자가 cpu와 i/o장치를 항상 점유할 수 없다.
멀티 프로그래밍은 업무(코드와 데이터를 다룸)를 구성하여 cpu가 항상 무언가 실행중이다.
CPU가 작업을 아주 빠르고 자주 전환하여 사용자가 각 작업을 실행하며 상호작용이 가능하게 된다. -> 대화형 컴퓨팅
ex). 사용자가 키보드 입력을 하는동안 CPU는 다른 작업도 수행함. 키보드 입력은 컴퓨터 입장에서 매우 느린 작업이기 때문.
Response time은 1초보다 작아야한다. (보통 10ms인터벌로 타이머 인터럽트 설정)
각각의 사용자는 메모리에 최소한 하나의 프로그램을 실행중이다. -> process
만약 여러 작업이 같은 시간에 실행할 준비가되면 -> CPU scheduling
만약 프로세스가 메모리에 맞지않는다면, Swapping이 프로세스를 안팎으로 이동시켜 실행한다.
가상 메모리(Virtual memory)는 메모리에 완전히 저장되지 않은 프로세스를 실행하게 해줌.