
- 프로세스가 어떻게 만들어지는가에 대한 설명을 하려고 한다.
- 사람도 하늘에서 뚝 떨어진 사람은 없고 부모님이 있어서 태어나는 것이다.
- 다만 프로세스는 어머니 아버지가 있는 것이 아니라 부모가 하나다.
- 부모가 자식을 낳고, 그 자식이 또 자식을 낳고 → 트리 형성
- 프로세스는 자원을 필요로 하는데, 운영체제로부터 자원을 할당받는다.
- 부모와 자식이 자원을 공유하는 경우도 있지만, 사실은 공유하지 않는 모델이 일반적이고 태어난 이후로는 자원(CPU)을 경쟁하는 관계가 된다.
- 프로세스가 실행될 때 부모와 자식이 공존하면서 실행되는 모델이 있고, 자식을 생성한 다음에 자식이 종료될 때까지 부모가 기다리는(blocked(wait)) 모델도 있다.

- 프로세스의 생성은 부모가 자식을 생성한다고 말을 했는데 과정이 어떻게 되는가.
- 자식은 부모의 주소 공간을 일단 복사한다.
- 근데 만약 복제만 한다면 모든 프로세스가 같은 일만 하게될 것이다.
- 이제 그 공간에 새로운 프로그램을 덮어 씌운다.
- 복제하는 역할이 fork()이고, 거기에 새로운 프로그램을 덮어 씌우는 과정이 exec()이다.
- 복제만하고 덮어씌우지 않을 수도 있다.
- 사용자 프로세스가 새로운 프로세스를 생성하기는 하는데, 직접 생성하는 것은 아니고 운영체제를 거쳐서 생성한다(fork()나 exec()이나 system call이기 때문에 커널 내 함수를 불러서 써야함).
