① Build from scratch (windows)
1) Load code and data into memory
2) Create empty stack
3) Create PCB
4) Put process on ready queue
② Clone on existing one(Linux) + execute new one
• 부모 프로세스가 자식 프로세스 생성 -> 프로세스 트리 형성
• 프로세스 식별(pid)
• 리소스 공유 옵션
•실행 옵션 (리눅스, 윈도우 둘 다 지원)
• 주소 공간 – 저장된 메모리 위치는 다름
-부모의 자식 복제
-자식은 프로그램을 메모리에 로드 (옷 바꿔입기)
•유닉스(리눅스) 예제
-fork(): 자식 프로세스가 생성/ 부모, 자식 동시 수행
-exec(): 새로운 프로그램으로 메모리 공간 재배치 및 수행
fork()의 결과 반환값이 0이면 자식 프로세스, 반환값이 자식의 PID이면 부모 프로세스(양수값)

• exit() 프로세스가 OS에게 종료 요청.
-child의 상태 데이터 반환 (wait())
-child의 실행을 종료(abort()) - 부모 자신이 통제
• return(0) -> exit(0)
• 일부 OS는 부모가 종료된 경우 자식의 존재를 허용하지 않음 (abort())
-계단식 종료(Cascading termination):모든하위 종료
• 종료는 OS에 의해 시작된다.
• pid=wait(&status); 자식의 상태 데이터, pid 반환
• 대기 중인 부모가 없는 경우 (자식이 먼저 끝난 경우)
-자식은 좀비 상태
• 부모가 wait()를 호출하지 않고 종료된 경우
– 프로세스는 고아(orphan) 상태. &좀비
-고아들은 최상위 부모 프로세스인 init/systemd가 주기적으로 관리
3가지 유형의 프로세스
• Browser 프로세스
• Renderer 프로세스
• Plug-in 프로세스
-> 프로세스 간 소통이 중요하다
• 시스템 내의 프로세스는 독립적이거나 협력적
• 협력 프로세스는 데이터 공유를 포함해 다른 프로세스에 영향을 미치거나 영향을 받을 수 있음
• 협력 프로세스의 이유(소통의 필요성):
• 협력 프로세스는 IPC(inter-process 커뮤니케이션)이 반드시 필요함
• 2개의 대표적인 IPC <커뮤니케이션 모델>