프로세스는 대표적으로 생성·준비·실행·대기·종료 상태를 거치며, 운영체제는 PCB에 프로세스의 관리 정보와 실행을 재개하는 데 필요한 정보를 저장합니다.
| 상태 전이 | 발생 계기 |
|---|---|
| 생성(New) → 준비(Ready) | 실행에 필요한 초기화가 끝나 준비 큐에 들어감 |
| 준비 → 실행(Running) | 스케줄러가 선택하여 CPU를 배정 |
| 실행 → 준비 | 타임 슬라이스 소진이나 우선순위에 따른 선점 |
| 실행 → 대기(Waiting/Blocked) | I/O 완료나 자원·이벤트를 기다림 |
| 대기 → 준비 | 기다리던 작업이나 이벤트가 완료됨 |
| 실행 → 종료(Terminated) | 실행을 마치거나 종료됨 |
PCB에는 PID, 프로세스 상태, 저장된 프로그램 카운터·레지스터, 스케줄링 정보, 주소 공간 정보, 열린 파일·I/O 정보, CPU 사용량 등이 저장되거나 참조됩니다. 구체적인 구조는 운영체제마다 다르며, 멀티스레드 환경에서는 스레드별 실행 문맥도 별도로 관리합니다.
준비 상태와 대기 상태는 무엇이 다른가요?
준비 상태는 CPU만 배정되면 실행할 수 있습니다. 대기 상태는 CPU가 비어도 I/O 완료나 잠금 해제 같은 조건이 충족되기 전에는 실행을 계속할 수 없습니다.
I/O가 완료되면 곧바로 실행 상태가 되나요?
먼저 준비 상태가 됩니다. 이후 스케줄러의 선택을 받아 CPU를 배정받아야 실행할 수 있으며, 상황에 따라 곧바로 선택될 수도 있습니다.
좀비 프로세스는 계속 실행 중인 프로세스인가요?
아닙니다. 실행은 끝났지만 부모가 종료 상태를 수거하지 않아 종료 코드 같은 최소한의 관리 정보가 남은 상태입니다. Unix 계열에서는 부모가 wait() 계열 호출로 이를 수거합니다.