부모 프로세스(Parent process)가 자식 프로세스(children process)를 복제 생성한다.
프로세스의 트리(계층 구조) 형성
프로세스는 자원을 필요로 한다
자원의 공유
수행(Execution)
주소 공간(Address space)
유닉스의 예
자발적 종료(exit): 프로세스가 마지막 명령을 수행항 후 운영체제에게 이를 알려줌
비자발적 종료(abort): 부모 프로세스가 자식의 수행을 종료시킴
A process is created by the fork() system call.
: creates a new address space that is a duplicate of the caller.
fork()의 결과값을 통해 parent process와 child process를 구분할 수 있다
A process can execute a different program by the exec() system call.
: replaces the memory image of the caller with a new program
프로세스A가 wait() 시스템 콜을 호출하면

프로세스는 각자의 주소 공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못한다.
프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있다.
프로세스간 협력 메커니즘에는 메세지를 전달하는 방법과 주소 공간을 공유하는 방법, 이렇게 2가지가 있다.
Message system: 프로세스 사이에 공유 변수(shared variabl)를 일체 사용하지 않고 통신하는 시스템이다. 커널을 통해 메시지 전달한다.
Message Passing에는 다음과 같은 두 가지 방법이 있다.
(1) Direct Communication
: 통신하려는 프로세스의 이름을 명시적으로 표시

(2) Indirect Communication
: mailbox 또는 port(커널에 존재함)를 통해 메시지를 간접적으로 전달

서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 shared memory 메커니즘이 있다.

+) thread는 사실상 하나의 프로세스이므로 프로세스간 협력으로 보기 어렵지만 동일한 process를 구성하는 thread들 간에는 주소 공간을 공유하므로 협력이 가능하다.