-
부모 프로세스가 자식 프로세스를 생성
-
프로세스의 트리 형성 (계층 구조)
-
프로세스는 자원을 필요로함, 자원을 수급하는 방법
- 운영체제로부터 받음
- 부모와 공유한다 (공유하지 않는 모델이 일반적)
- COW : write가 발생했을 때 Copy하겠다.
-
수행 (Execution) 방법
- 부모와 자식이 공존하며 수행되는 모델
- 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델
-
주소 공간 (Address space) 배정 방법
- 자식은 부모의 공간을 복사함 (binary and OS data)
- 처음엔 부모 프로세스와 동일한 프로그램을 실행
- 자식 프로세스는 부모 프로세스의 동일한 사본의 메모리 세그먼트를 가짐
- Copy-On-Write 기법이 많이 사용됨, 쓰기가 일어나기전까지는 물리메모리의 동일 사본을 참조하다가 쓰기가 일어나면 물리메모리의 복사가 이루어짐.
exec()
를 호출하여 자식은 그 공간에 새로운 프로그램을 올림
fork()
: 새로운 프로세스 생성하는 시스템 콜, 프로세스가 자신을 복제해서 새로운 프로세스를 생성- 자식 프로세스는
fork()
다음부터 실행됨 fork()
의 리턴 값이 부모는 양수, 자식은 0
- 자식 프로세스는
exec()
: 새로운 프로그램을 메모리에 올리는 시스템 콜, 새로운 프로그램을 덮어씌움- 다른 프로그램을 실행할 수 있음
- 기존의 메모리 공간에 새로운 프로그램을 올림
- 자식이 다 죽어야 부모도 죽을 수 있다.
- 자발적 종료
exit
- 마지막 구문 수행후
exit
시스템 콜 호출 wait()
시스템 콜- 자식이 종료될 때까지 부모가 기다리는 모델
- 자식이 부모에게 output data를 보냄
wait
통해서 - 자식이 종료되면 커널은 부모 프로세스를 깨움
- 마지막 구문 수행후
- 강제 종료
abort
- 자식이 할당 자원의 한계치를 넘어 사용시
- 자식에게 할당된 태스크가 더 이상 필요하지 않을 시
- 부모가 종료하는 경우
- 운영체제가 자식도 죽임.
- 자식 프로세스가 먼저 종료되고 부모 프로세스가 종료됨 (단계적인 종료)
- 독립적 프로세스 (Independent process)
- 프로세스가 각자의 주소 공간을 가지고 수행되므로 하나의 프로세스가 다른 프로세스의 수행에 영향을 미치지 못함
- 협력 프로세스 (Cooperating process)
- 프로세스 간 협력 메커니즘
- 메시지 전달
- shared Memory (주소 공간을 공유하는 방법)
- thread