Process Management(1)

최동혁·2022년 12월 8일
0

운영체제

목록 보기
8/10

프로세스 생성 (Process Creation)

  • 부모 프로세스 (Parent process)가 자식 프로세스 (children process) 생성

  • 프로세스의 트리 (계층 구조) 형성

  • 프로세스는 자원을 필요로 함

    1. 운영체제로부터 받는다.
    2. 부모와 공유한다.
  • 자원의 공유

    1. 부모와 자식이 모든 자원을 공유하는 모델
    2. 일부를 공유하는 모델
    3. 전혀 공유하지 않는 모델
  • 수행 (Execution)

    1. 부모와 자식은 공존하며 수행되는 모델
    2. 자식이 종료 (terminate)될 떄까지 부모가 기다리는 (wait) 모델
  • 주소 공간 (Address space)

    1. 자식은 부모의 공간을 복사함 (binary and OS data)
    2. 자식은 그 공간에 새로운 프로그램을 올림
  • 유닉스의 예

    1. fork() 시스템 콜이 새로운 프로세스를 생성
      • 부모를 그대로 복사 (OS data except PID + binary)
        • 주소 공간 할당
    2. fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림

프로세스의 생성은 보통 2단계를 거친다

  1. 부모 프로세스를 복제
  2. 새로운 프로그램을 덮어 씌움.
  • 독립적이기 때문에 복제만 해놓고 덮어 씌우지 않을 수도 있고, 자식 프로세스를 만들지 않고 exec()을 하면 완전히 새로운 프로세스로 바뀔 수도 있다.
  • 사용자가 직접 자식 프로세스를 생성하는 것이 아닌, 운영체제를 통해서만 생성 가능.

프로세스 종료 (Process Termination)

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌 (exit 시스템 콜)(자발적 종료)

    1. 자식이 부모에게 output data를 보냄 (wait 시스템 콜을 통해서)
      • 자식이 무조건 부모보다 먼저 죽음.
    2. 프로세스의 각종 자원들이 운영체제에게 반납됨
  • 부모 프로세스가 자식의 수행을 종료시킴 (abort)(비자발적 종료)

    1. 자식이 할당 자원의 한계치를 넘어섬
    2. 자식에게 할당된 태스크가 더 이상 필요하지 않음
      • 일을 시키려고 자식을 낳았는데, 더 이상 일이 없음.
    3. 부모가 종료(exit)하는 경우
      • 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않는다
        • 자식이 부모보다 먼저 죽어야 되기 때문에 부모가 낳아놓은 자식 프로세스를 전부 죽여놓고 부모 프로세스가 죽는다.
        • 단계적인 종료
        • 자식이 자식을 낳았을 수도 있으니 차례대로 죽이면서 마지막에 가장 위에 부모가 죽음.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글