단일 처리 시스템에서는 실행 중인 프로세스(A)가 존재하는데 다른 프로세스(B)가 입출력을 요청하면 그 프로세스(B)는 이전의 프로세스(A)의 자원을 놓을때까지 대기하고 있어야합니다. 하지만 다중 프로그래밍에서는 여러 프로세스들이 동시에 돌아갈 수 있으며, 프로세스가 자원(프로세서 등)을 요청하면 운영체제는 그 자원을 적절히 분배하여 프로세스에게 할당합니다.
프로세스 상태 전이
new : 새로 생성된 상태
ready : CPU를 할당받기 위해 Ready List에서 기다리는 상태
running : CPU를 할당받아 실행중인 상태
waiting : 입출력 처리나 이벤트가 끝날 때까지 Waiting List에서 기다리는 상태
terminated : 모든 수행이 종료된 상태
전이(Transition) | 상태(State) 변화 | 설명 |
---|---|---|
admitted | new→ready | 생성된 프로세스가 메모리로 올라옴 |
dispatch (=schedule) | ready→running | Ready List 내 프로세스 중 우선순위에 따라 한 프로세스에 CPU 할당 |
timeout (=preemptive) | running→ready | 주어진 타임 슬라이스를 다 사용하였거나 우선순위가 높은 프로세스에 의해 선점 당함 |
sleep (=wait) | running→waiting | 입출력 처리나 이벤트가 발생하여 프로세스가 스스로 CPU 반납 후 Waiting List로 이동 |
wakeup | waiting→ready | 기다리던 입출력 처리나 이벤트가 종료되어 Ready List로 이동 |
exit | running→terminated | 프로세스가 running 상태에서 할 일을 모두 끝냄 |
용어 | 설명 |
---|---|
대기 시간 | 자원의 할당을 대기하는 시간을 의미합니다. |
실행 시간 | 실제로 프로세스가 자원을 할당받은 다음 작업을 수행하는 시간을 의미합니다. |
반환 시간 | 작업을 완료하는데 소요되는 전체 시간으로 대기 시간과 실행 시간을 모두 포함합니다. |
사용중인 CPU를 뺏을 수 있는지, 없는지로 스케줄링 정책이 구분된다.