프로세스의 트리(계층 구조)형성
프로세스는 자원을 필요로 함
프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌(exit)
자식이 부모에게 output data를 보냄(via wait)
프로세스의 각종 자원들이 운영체제에게 반납됨
부모 프로세스가 자식의 수행을 종료시킴(abort) // 자식프로세스가 부모프로세스 보다 먼저 종료된다.
부모프로세스가 자식 프로세스를 생성하는 것은 복제 생성이다.
부모프로세스가 본인과 똑같은 자식프로세스를 하나 만든다.
여기서 복제라는 것은 문맥을 의미하고. 메모리 주소공간인 코드, 데이터, 스택을 그대로 복제해서 자식 프로세스를 하나 만든다. 부모프로세스의 CPU문맥 PC도 복제한다.
copy-on-write(COW기법) : write가 발생했을 때 그때 Copy하겠다.
A process i created by the fork() system call
- creates a new address space that is a duplicate of the caller
프로세스 A가 wait() 시스템 콜을 호출하면
커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다. (block 상태)
Child process가 종료되면 커널은 프로세스 A를 깨운다 (ready 상태)
프로세스의 종료
자발적 종료
- 마지막 statement 수행 후 exit() 시스템 콜을 통해
- 프로그램에 명시적으로 적어주지 않아도 main 함수가 리 턴되는 위치에 컴파일러가 넣어줌
비자발적 종료
- 부모 프로세스가 자식 프로세스를 강제 종료시킴
ex) 자식 프로세스가 한계치를 넘어서는 자원요청, 자식에게 할당된 테스크가 더 이상 필요하지 않음
-키보드로 kill, break 등을 친 경우
-부모가 종료하는 경우
ex) 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨
fork() : create a child(copy) 부모 프로세스 복제 생성
exec() : overlay new image 완전히 새로운 프로그램으로 덮어 씌우기
wait() : sleep until child is done 자식이 종료될 때 까지 기다림
exit() : frees all the resources, notify parent 모든 자원을 반납하고, 부모프로세스에게 죽는다고 알림
독립적 프로세스(Independent process)
협력 프로세스(Cooperating proceess)
프로세스 간 협력 메커니즘 (IPC : Interprocess Communication)
Message system
- 프로세스 사이에 공유 변수(shared variable)를 일체 사용하지 않고 통신하는 시스템
Direct Communication
- 통신하려는 프로세스의 이름을 명시적으로 표시
Indirect Communication
- mailbox(또는 port)를 통해 메시지를 간접 전달