프로세스는 실행 중에 프로세스 생성 시스템을 호출해서 새로운 프로세스를 생성한다. 이 때, 프로세스 생성 순서가 저장되고, 부모/자식 관계를 유지하며 계층적으로 생성되는데, 이를 프로세스 계층 구조라 한다.
Parent Process(부모 프로세스)
: 생성하는 프로세스
Child Process(자식 프로세스)
: 생성되는 프로세스
부모 프로세스와 자식 프로세스는 각기 다른 PID(Process ID)를 가진다.
fork
부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 PID만 다르게 하여 자식 프로세스로 생성한다.
현재 프로세스가 부모인지 자식인지는 fork()의 반환값으로 구분한다. 부모 프로세스는 자식 프로세스의 식별자가 반환되지만 자식 프로세스는 0을 반환한다.
exec
자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체한다.
어떤 프로그램을 완전히 새로운 프로세스로 태어나도록 덮어 씌우는 역할을 하며, 프로세스는 이를 통해 다른 프로그램을 수행할 수 있다.