프로세스 상태
프로세스의 상태는 운영체제마다 약간의 차이가 있지만 대부분 공통적으로 사용하고 있는 프로세스의 상태는 다음과 같이 다섯가지가 있습니다.
- 생성 상태
- 준비 상태
- 실행 상태
- 대기 상태
- 종료 상태
생성 상태
- 이제 막 메모리에 적재되어 PCB를 할당 받은 상태
- 준비가 완료되었다면 준비 상태로
준비 상태
- 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니기에 기다리는 상태
- 자신의 차례가 된다면 실행 상태로 (=디스패치)
실행 상태
- CPU를 할당 받아 실행 중인 상태
- 할당된 시간 모두 사용 시(타인머 인터럽트 발생 시) 준비 상태로
- 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로
대기 상태
- 프로세스가 실행도중 입출력장치를 사용하는 경우를 의미한다
- 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어든다.
- 입출력 작업이 끝나면 (입출력 완료 인터럽트를 받으면) 준비 상태로
종료 상태
- 프로세스가 종료된 상태
- PCB, 프로세스의 메모리 영역 정리
위 상태들을 간략하게 다이어그램으로 표현하면 다음과 같습니다.

프로세스 계층 구조
프로세스 실행 도중 (시스템 호출을 통해) 다른 프로세스 생성 가능
부모 프로세스 : 새 프로세스를 생성한 프로세스
자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스
부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 각기 다른 PID를 가진다.
프로세스 생성 기법
부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체