크래프톤 정글 일지
[PintOS] fork - 프로세스는 유교보이
나한나한나한나
2024. 5. 27. 14:08
프로세스 생성과 종료
프로세스 생성
- 운영 체제는 다른 프로세스의 명시적인 요청에 따라 프로세스를 생성할 수 있음
- 새로 생성된 프로세스는 부모 프로세스의 자식 프로세스가 됨
프로세스 종료
- 프로세스는 EXIT라는 시스템 콜을 통해 스스로 종료할 수 있음
- 배치 작업은 종료를 위해 HALT 명령을 포함함
- 상호작용interactive 애플리케이션의 경우, 사용자의 행동(예: 로그오프, 애플리케이션 종료)이 프로세스 완료를 나타냄
- 프로세스는 메모리 부족, 산술 오류, 부모 프로세스 종료 등과 같은 오류 조건으로 인해 종료될 수 있음
어머니 프로세스가 승하하셨는데 내 더 살아 무엇하겠는가
fork: 새 프로세스 만들기

프로세스 제어
- 유닉스는 프로세스를 조작하기 위한 여러 시스템 콜을 제공함
- 프로세스 ID 획득, 프로세스 생성/종료 등
int fork(void) 함수
- 호출한 프로세스(부모 프로세스)와 동일한 프로세스(자식 프로세스)를 생성함
- 자식 프로세스에는 0을 반환함
- 부모 프로세스에는 자식 프로세스의 PID를 반환함
- 호출은 한 번, return은 두 번
흥미롭쥬? 헷갈리쥬?
fork 연습

부모와 자식은 같은 코드를 실행합니다.
- fork의 반환 값으로 부모와 자식을 구별합니다.
중복되지만 별도의 주소 공간을 갖습니다.
- 같은 상태로 시작하지만 각각 개별적인 사본을 갖습니다.
- 출력문의 상대적인 순서는 정의되어 있지 않습니다.
공유된 파일
- 부모와 자식 모두 자신의 출력을 동일한 화면에 출력합니다.

부모와 자식 모두 계속해서 fork를 수행할 수 있습니다.
프로세스 그래프
- 각 수평 화살표는 프로세스에 해당합니다.
- 각 수직 화살표는 fork 함수의 실행에 해당합니다.


