[다중 프로그래밍]
다중 프로그래밍은 CPU가 항상 한 개는 실행할 수 있도록 프로그램을 구성하여 CPU 이용률을 높인다.
[다중 프로그래밍 과정]
운영체제는 여러 프로세스를 동시에 메모리에 유지한다.
메모리의 프로세스 중 하나를 선택하여 실행한다.
I/O와 같은 작업이 발생하면 다른 프로세스로 전환하여 실행한다.
메모리에 여러 프로세스들이 있을 때 다음 실행될 프로세스를 정하는 것을 JOB 스케쥴링이라고 한다.
[다중 태스킹]
다중 태스킹 시스템에서 CPU는 여러 프로세스를 전환하며 프로세스를 실행하지만 전환이 자주 발생하여 사용자에게 빠른 응답 시간을 제공하게 된다.
타이머를 정하여 그 시간만 작동하게 하는 구조로 다음 실행될 프로세스를 정하는 것을 CPU 스케쥴링이라고 한다.
만약 메모리가 맞지 않는다면 SWAPPING을 사용하여 HDD로 빠졌다가 다시 메모리로 돌아오는 식으로 진행된다.
최근에는 일부만 적재하여 프로세스를 실행하는 virtual memory방식도 있다.
cf)프로세스 : 실행 중인 프로그램
[이중-모드와 다중모드 운용]
운영체제와 사용자는 컴퓨터 시스템의 하드웨어 및 소프트웨어 자원을 공유하기 때문에 올바르게 설계된 운영체제는 잘못된 프로그램으로 인해 다른 프로그램 또는 운영체제 자체가 잘못 실행될 수 없도록 보장해야 한다.
이중 모드에서는 유저 모드(1)와 커널 모드(0)으로 나눈다.
컴퓨터 시스템이 사용자 응용을 위하여 실행될 때 시스템은 사용자 모드에 있게 된다. 하지만 사용자 응용이 운영체제로부터 서비스를 요청하면(시스템 콜을 통해서) 이 요청을 수행하기 위해서 사용자 모드에서 커널 모드로 전환된다.
시스템 부트 시, 하드웨어는 커널 모드에서 시작하고, 이후 운영체제가 적재되고, 사용자 모드에서 아용자 프로세스가 시작된다. 트랩이나 인터럽트가 발생할 땜다, 하드웨어는 사용자 모드에서 커널 모드로 전환한다.
만약 사용자 프로그램이 무한 루프에 빠지거나 시스템 서비스 호출에 실패하여, 제어가 운영체제로 복귀하지 않는 경우를 방지해야 한다. 이 때 사용될 수 있는 방법이 타이머를 사용하는 것이다.