Computer Science/운영체제

[운영체제] 8.Process Management 1 - 프로세스의 생성과 종료

minjiwoo 2023. 6. 25. 00:10
728x90

Process 의 생성 

  • 부모 프로세스가 자식 프로세스를 생성한다. 
  • 프로세스들은 트리 구조 형성하게 된다.  
  • 프로세스는 자원을 필요로 한다. 자원은 운영체제로부터 받으며, 부모 프로세스와 자식 프로세스가 일반적으로 공유하지 않는다. 프로세스들끼리는 별개의 프로세스이므로 자원을 위해 경쟁을 하게 되는 것이 일반적이기 때문이다. 
  • 수행 
    - 부모와 자식이 공존하며 수행하는 모델 
    - 자식이 종료될 때가지 부모가 기다리는 모델
  • 주소 공간 
    - 자식은 부모의 공간을 복사한다. : process의 문맥 (주소공간인 코드 데이터 스택, PC)을 그대로 복사한다. 
    - 마치 과제할 때 기존에 레포트 템플릿이 있으면 복사하고 일부 수정해서 쓰는 것처럼, 효율적일 것이다. 
    - 자식은 그 공간에 새로운 프로그램을 올린다. 
  • UNIX 예시
    - fork() 시스템 콜이 새로운 프로세스를 생성한다. 
    - fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 
  • 자원의 공유 
    - 부모와 자식이 모든 자원을 공유하는 모델 
    - 일부를 공유하는 모델 
    - 전혀 공유하지 않는 모델
    - 부모와 자식의 내용이 완전히 똑같다면, 공유할 수 있을 것이다 그렇지만 각자 실행하면서 stack 에 쌓이는 함수의 실행 순서가 달라지는 등, 문맥이 달라질 수 있다. 이런 경우 각자 자원을 사용할 필요가 있다. write 가 발생했을 때 (내용이 바뀔 때) copy하겠다는 뜻 (Copy-on-Write 기법)

프로세스 종료 

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다. (exit() 시스템 콜)
    - 자식프로세스는 부모프로세스에게 output data를 보낸다. 

  • 부모 프로세스가 자식의 수행을 강제 종료시키는 경우 (abort) 
    - 자식이 할당할 수 있는 자원의 한계치를 넘어서는 경우 
    - 자식에게 할당된 태스크가 더이상 필요하지 않은 경우 
    - 부모가 종료 exit 하는 경우, 운영체제는 자식 프로세스들이 더 이상 수행되도록 두지 않는다. 
728x90