<aside> 📌 프로세스 생성(Process Creation), 프로세스와 관련한 시스템콜, 프로세스 간 협력, Message Passing, Interprocess communication
</aside>
부모 프로세스(parent process)가 자식 프로세스 생성(children process) 생성 → 복제를 통해 생성
프로세스는 자원을 필요로 함
자원의 공유
둘은 별도의 프로세스(경쟁자)
왜 일반적인가? → 복제하는 경우는 서로 다른 동작을 수행하게 하기 위함이기 때문 (다른 내용일 필요가 없다면 복제하는 게 낭비)
Copy-on-Write(COW) 기법
→ Write가 발생했을 때 Copy 하겠다.
→ Write한다는 것: 내용이 바뀌는 것 (그 전까지는 부모/자식 프로세스가 자원을 공유하는 상태)
수행 (Excution)
wait() 시스템 콜
운영체제를 통해서만 생성이 가능함 (사용자는 불가능) → 시스템 콜을 통해 생성된다는 것을 보면 알 수 있음
fork()
- create a child (copy)exec()
- overlay new imagewait()
- sleep until child is doneexit()
- frees all the resources, notify parentfork()를 사용해서 프로세스를 만드는 코드
fork() → 시스템 콜
자식 프로세스는 fork() 이후부터 실행 됨
→ 부모 프로세스의 context를 그대로 복사하기 때문(Program Counter를 복사)
→ 즉, 무한히 fork()가 실행되지 않음
Parent와 Child를 구분하기 위한 방법: fork()의 반환값을 달리 함
하나의 프로그램이기 때문에 같은 코드, 같은 주소 공간을 가짐
→ 하지만, 실제로는 다른 프로그램도 실행시키는 경우도 있어야 함: exec() 시스템 콜