프로세스들은 다양한 상태로 변화합니다. 시스템 관리자는 프로세스 상태를 확인하고 작업 제어 명령으로 프로세스 상태를 변경할 수 있어야 합니다. 프로세스는 리눅스 커널로 정해진 순서에 따라 CPU를 사용합니다. CPU를 사용하는 상태와 대기하는 상태 모두 R(Run/Runnable)로 표시됩니다. D(in Disk wait)는 입출력이 완료될 때까지 대기하는 깨울 수 없는 수면 상태입니다. 입출력이 끝나면 다시 실행 대기로 전환합니다. S(Sleeping)는 프로그램 필요에 따라 스스로 대기 중인 수면 상태입니다. 시간이 경과하거나 특정 이벤트가 발생하면 다시 실행 대기로 전환합니다. T(sTopped)는 외부 신호로 일시 정지된 상태입니다. 또 다른 외부 신호를 수신하면 다시 실행 대기로 전환합니다. 실행을 완료한 프로세스는 부모 프로세스에 종료 신호를 보냅니다. 부모 프로세스가 종료 신호를 받아들이면 프로세스가 소멸합니다. 부모 프로세스에 문제가 있어 신호를 수신하지 못하면 프로세스 상태 Z(Zombie)인 좀비 상태로 남아 있게 됩니다.
▲ 그림 3-9 프로세스 상태 변화