프로세스 계층 구조
- 실행되는 최초의 프로세스가 자식 프로세스들을 생성하고, 생성된 자식 프로세스들이 새로운 프로세스를 낳는 형식을 트리 구조로 표현
- 최초의 프로세스의 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 |