본문 바로가기
CS/OS

프로세스 계층 구조 & 생성 기법 [혼공컴운]

by 블로블로글 2023. 12. 15.

프로세스 계층 구조

운영체제 [Abraham Silberschatz , Peter Baer Galvin , Greg Gagne 저 , 박민규 역]

  - 실행되는 최초의 프로세스가 자식 프로세스들을 생성하고, 생성된 자식 프로세스들이 새로운 프로세스를 낳는 형식을 트리 구조로 표현

  - 최초의 프로세스의 PID는 항상 1이며, 모든 프로세스의 최상단에 있는 부모 프로세스이다

 

프로세스 생성 기법

혼공컴운

  - 부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행

    - fork() - 복제

.     - 자신의 복사본을 자식 프로세스로 생성하는 시스템 호출

      - 메모리 내용, 열린 파일의 목록 등이 자식 프로세스에 상속

      - 복사된 자식 프로세스는 다른 PID를 가지고, 저장된 메모리 위치도 다름

    - exec() - 옷 갈아입기

      - 자신의 메모리 공간을 새로운 프로그램으로 교체

      - 코드 영역과 데이터 영역의 내용이 실행할 프로그램의 내용으로 바뀌고 나머지는 초기화

 

  - 프로세스가 새로운 프로세스를 생성할 때, 두 프로세스를 실행 시키는 데 두가지 가능한 방법

    - 부모는 자식과 병행하게 실행을 계속한다

    - 부모는 일부 또는 모든 자식이 실행을 종료할 때까지 기다린다

 

  - 새로운 프로세스들의 주소 공간 측면에서 볼 때 두가지 가능성

    - 자식 프로세스는 부모 프로세스의 복사본이다

      - 자식 프로세스는 부모와 꼭같은 프로그램과 데이터를 가진다

    - 자식 프로세스가 자신에게 적재될 새로운 프로그램을 가지고 있다

 

  - 부모 프로세스가 자식 프로세스 중 하나를 종료시키는 경우

    - 자식이 자신에게 할당된 자원을 초과하여 사용할 떄, 부모가 자식들의 상태를 검사할 수 있는 방편이 주어져야 함

    - 자식에게 할당된 작업이 더 이상 필요 없을 떄

    - 부모가 exit를 하는데, 운영체제는 부모가 exit 한 후에 자식이 실행을 계속하는 것을 허용하지 않는 경우

      - 이러한 경우 연쇄식 종료(cascading terminate) 실행

        - 프로세스가 종료되면 (정상이든 비정상이든) 그로부터 비롯된 모든 자식 프로세스들이 종료되는 것

      - 운영체제가 시행

    - 좀비 프로세스

      - 종료되었지만 부모 프로세스가 아직 wait()을 호출하지 않은 상태의 프로세스

        - 종료하게 되면 모든 프로세스는 아주 짧은 시간 동안만 좀비 상태에 머뭄

        - 부모가 wait()를 호출하면 좀비 프로세스의 식별자와 프로세스 테이블의 해당 항목이 운영체제에 반환

    - 고아 프로세스

      - 부모가 wait()를 호출하지 않고 종료

      - 운영체제에 따라 init 프로세스(루트에 위치)나 특정 프로세스가 고아 프로세스를 상속하고 종료함

 

'CS > OS' 카테고리의 다른 글

프로세스 동기화 [혼공컴구]  (0) 2024.01.18
스케줄링 알고리즘 [혼공컴구]  (1) 2023.12.22
프로세스와 스레드 [혼공컴운]  (0) 2023.12.15
문맥 교환 [혼공컴운]  (0) 2023.12.14
프로세스 [혼공컴운]  (0) 2023.12.14