> For the complete documentation index, see [llms.txt](https://real-dev.gitbook.io/real-library/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://real-dev.gitbook.io/real-library/os_with_joonion/4-..md).

# 4강. 프로세스의 생성

* 프로그램이 램에 로드된 상태가 프로세스
* 프로세스의 정보는 PCB에 저장되어 있다.
* CPU를 시간별로 나눠써서 동시성을 확보할 수 있다. `concurrency`
* `fork()`를 통해 동일한 프로그램 새로운 프로세스를 실행할 수 있다. 이 함수는 int를 리턴하는데, 이를 PID라고 한다. 이 값은 부모 프로세스에선 별도의 상수로 리턴되지만, 자식 프로세스에서 fork()의 반환값은 0으로 리턴된다.
* `wait()`를 통해 자식 프로세스가 종료될 때까지 부모 프로세스는 대기 큐에서 기다리게 할 수도 있다.
* `execlp()`를 통해 현재 프로그램을 새로운 프로그램으로 덮어쓸 수 있다.
* `getpid()`를 통해 실행중인 프로세스의 PID를 얻어낼 수 있다.
* 부모 프로세스와 자식 프로세스 간의 명시적인 순차 제어가 없다면 실행 순서는 보장되지 않는다. 아찔한 타이밍에 context switch가 일어난다면 부모 프로세스가 늦게 실행될 수 있다.
