크래프톤 정글 일지

[PintOS] fork - 프로세스는 유교보이

나한나한나한나 2024. 5. 27. 14:08

프로세스 생성과 종료

프로세스 생성

  • 운영 체제는 다른 프로세스의 명시적인 요청에 따라 프로세스를 생성할 수 있음
    • 새로 생성된 프로세스는 부모 프로세스의 자식 프로세스가 됨

프로세스 종료

  • 프로세스는 EXIT라는 시스템 콜을 통해 스스로 종료할 수 있음
    • 배치 작업은 종료를 위해 HALT 명령을 포함함
    • 상호작용interactive 애플리케이션의 경우, 사용자의 행동(예: 로그오프, 애플리케이션 종료)이 프로세스 완료를 나타냄
  • 프로세스는 메모리 부족, 산술 오류, 부모 프로세스 종료 등과 같은 오류 조건으로 인해 종료될 수 있음
    • 어머니 프로세스가 승하하셨는데 내 더 살아 무엇하겠는가

fork: 새 프로세스 만들기

프로세스 제어

  • 유닉스는 프로세스를 조작하기 위한 여러 시스템 콜을 제공함
  • 프로세스 ID 획득, 프로세스 생성/종료 등

int fork(void) 함수

  • 호출한 프로세스(부모 프로세스)와 동일한 프로세스(자식 프로세스)를 생성함
  • 자식 프로세스에는 0을 반환함
  • 부모 프로세스에는 자식 프로세스의 PID를 반환함
  • 호출은 한 번, return은 두 번
    • 흥미롭쥬? 헷갈리쥬?

 

fork 연습

부모와 자식은 같은 코드를 실행합니다.

  • fork의 반환 값으로 부모와 자식을 구별합니다.

중복되지만 별도의 주소 공간을 갖습니다.

  • 같은 상태로 시작하지만 각각 개별적인 사본을 갖습니다.
  • 출력문의 상대적인 순서는 정의되어 있지 않습니다.

공유된 파일

  • 부모와 자식 모두 자신의 출력을 동일한 화면에 출력합니다.

부모와 자식 모두 계속해서 fork를 수행할 수 있습니다.

프로세스 그래프

  • 각 수평 화살표는 프로세스에 해당합니다.
  • 각 수직 화살표는 fork 함수의 실행에 해당합니다.