1. fork · 흐름 분기
부모
자식 PID를 받고 셸 상태를 유지한다.
자식
반환값 0을 받고 새 실행 경로로 갈라진다.
bash에서 ls를 실행하면 부모는 자식을 만든 뒤 기다리고,
자식은 프로그램 이미지를 바꿔 실행한 다음 종료 상태를 남긴다.
자식 PID를 받고 셸 상태를 유지한다.
반환값 0을 받고 새 실행 경로로 갈라진다.
waitpid에서 자식 종료를 기다린다.
PID는 유지한 채 코드·데이터·스택을 ls로 바꾼다.
커널의 종료 알림으로 대기에서 깨어난다.
실행 자원을 반납하고 종료 상태만 커널에 남긴다.
상태 코드를 읽고 다음 프롬프트를 연다.
PCB의 마지막 기록까지 제거되어 완전히 사라진다.
경계 상태 · 자식의 exit 뒤 부모의
wait 전까지는 종료 기록이 남는다. 이 회수가 늦어진 상태가
좀비다.