Process는 저마다의 상태를 가지는데 이를 Process State라고 한다.
이는 5가지가 있다.
그림으로 보면 아래와 같다.

Process는 실행 도중 System call을 통해 다른 process를 생성한다.
이때 생성한 process는 parent process, 상생된 process를 child process라고 한다.
parent와 child는 엄연히 다른 process로 분류되며 각기 다른 PID를 가지며, 일부 OS는 PCB에 parent의 ID인 PPID를 기록하기도 한다.
child process는 또 다른 child를 생성하기도 하며, 많은 OS는 process가 process를 생성하는 Process Layer라 한다.
Process가 child를 만들고 자신만의 코드를 실행하는 과정은 아래 2가지 기능(System call)을 통해서 진행된다.
fork()를 실행하면 parent와 child는 독립적인 실행 흐름을 가지게 되며 동기화가 제대로 이루어지지 않으면 Race Condition(후에 설명)이 발생 가능하다.
또한, parent가 child를 생성한 후, parent가 먼저 종료된다면 Zombie Process가 남을 수 있다.
Zombie Process는 process table에 기록된 상태 정보만 남고, 실제 자원을 점유하지 않지만 PID를 계속 사용하기 때문에 parent에서 반드시 wait() 등을 호출해 child의 종료 상태를 확인하고 수거해야만 하며, 만약 관심이 없는 경우에는 SIGCHLD를 활용해 child의 종료를 무시하고 자동으로 수거할 수 있다.