
- 부모가 자신과 똑같은 자식 프로세스를 생성한다.
- 코드, 데이터, 스택을 그대로 복사해서 자식 프로세스를 하나 만들고, 부모 프로세스에서 instruction을 어디까지 수행했는가(PC 레지스터) 역시 부모 것을 그대로 copy한다.
- 그리고 태어난 자식 프로세스는 일반적으로 부모와 자원을 경쟁한다.
- 그런데 위같은 과정을 거치면 사실상 똑같은 프로그램 두 개가 메모리로 올라가게 되는 것이기 때문에 리눅스같은 경우는 복사해서 만들지 않고 가능한 리소스들은 일단 모두 공유하도록 해놓고 PC만 복제한다.
- 그러다가 각자의 길을 가게 되면 그때서야 복제를 진행한다 → Copy-on-write (COW) (좀 깊은 개념)
- COW: 그 전까지는 공유하면서 사용하다가 write가 발생하여 내용이 수정되는 순간에(필요한 부분만) 복제를 하겠다.

- 먼저 복사 하고 수정.
- 우리도 과제 제출할 때 템플릿을 일단 복사해서 가져오고 제목 바꾸고 교수 이름 바꾸고 제출하곤 했듯이.

- fork()를 사용해서 사용자 프로그램이 프로세스를 만드는 코드를 살펴보자.
- 두 개를 옆에 두고 봐야 좀 이해가 편하다.

- 처음에는 하나의 프로세스만 실행이 된다.
- 부모의 메인 함수의 두 번째 줄 fork()가 실행되며 오른쪽 자식 프로세스의 코드가 실행된다.