컴퓨터과학/운영체제
[운영체제]프로세스(Process) 상태 전이도
PureStack
2021. 10. 29. 00:45
![](https://user-images.githubusercontent.com/59963677/139288242-13e5faa3-9363-4387-8e4f-fa4f85af718a.png)
프로세스는 실행의 흐름에 따라 상태가 바뀐다. 일반적으로 프로그램의 실행 흐름은 5가지의 상태를 지닌다.
프로세스의 5가지 상태
- 생성(New): 프로세스 생성 상태
- 준비(Ready): 프로세스가 CPU에 할당받기를 기다리는 상태
- 실행(Running): 프로세스가 CPU에 할당받아서 실행 중인 상태
- 대기(Waiting): 프로세스가 입출력이나 이벤트를 기다리는 상태
- 종료(Terminated): 프로세스가 실행일 끝내고 종료한 상태
프로세스의 상태 전이
- admitted: 프로세스 생성을 승인받음
- dispatch: 준비 상태에 있는 여러 프로세스들 중 하나가 스케줄러에 의해 실행되는 상태
- Interrupt: Timeout, 입출력 등이 발생하여 현재 실행 중인 프로세스를 준비 상태로 전환하고, 해당 작업을 먼저 처리(preemption)
- I/O or event wait: 실행 중인 프로세스가 입출력이나 이벤트를 처리해야 하는 경우, 입출력이나 이벤트가 끝날 때까지 대기 상태로 전환
- I/O or event completion: 입출력이나 이벤트가 모두 끝난 프로세스를 다시 준비 상태로 만들어 스케줄러에 의해 선택될 수 있는 상태로 전환
Timeout이란?
프로세스가 제한된 시간을 다 소비하여 CPU 점유 상태를 뺏기는 상태. 예를 들어, 한 프로세스에 주어진 시간이 3초일때, 3초 안에 작업을 다 처리하지 못하면 그 프로세스는 강제로 준비상태로 이동하게 된다. CPU 독점 방지 등에 유용하다.