유닉스의 프로세스 계층 구조
유닉스의 모든 프로세스는 init 프로세스의 자식이 되어 트리 구조를 형성한다.
쉘(Shell): 쉘은 텍스트 기반 명령어 해석기로, 사용자가 운영체제에 명령을 전달하는 역할을 한다. 대표적인 쉘로는 bash, zsh, csh 등이 있다.
유닉스 프로세스 계층 구조의 장점
1. 체계적인 프로세스 관리 가능
프로세스 계층 구조를 활용하여 효율적으로 관리할 수 있다.
로그인 프로세스의 경우, 동시 접속한 사용자별로 fork()를 수행하면 되므로 메모리 중복(코드 영역)을 최소화할 수 있다.
여러 작업을 동시에 처리할 수 있다.
2. 프로세스의 재사용이 용이함
로그인 프로세스 종료 시: 새로운 메모리 공간에 bash(쉘) 프로세스를 만들지 않고, 이미 메모리 공간을 차지하고 있는 것을 재사용할 수 있다(exec).
응용 프로그램 실행 시: bash(쉘) 프로세스에서 fork() & exec()를 수행하여 새로운 프로그램을 실행할 수 있다.
3. 계층 구조를 통한 효율적인 자원 회수
프로세스의 계층 구조는 관리 및 호출 주체를 파악하기 용이하다.
부모-자식의 계층 구조에서 부모 프로세스에게 자식 프로세스의 자원 회수 책임을 부여하여 시스템 자원을 효과적으로 관리할 수 있다.
고아 프로세스(Orphan Process)
부모 프로세스가 먼저 종료되어 돌아갈 곳이 없는 프로세스를 의미한다.
계층적 구조에서 따로 떨어져 독립적으로 존재하게 된다.
이러한 프로세스는 init 프로세스가 자동으로 수거하여 관리한다.
좀비 프로세스(Zombie Process)
자식 프로세스가 종료되었음에도 불구하고, 부모 프로세스가 자원을 회수하지 않은 상태의 프로세스를 의미한다.
C 언어에서 exit() 혹은 return()을 사용하여 자식 프로세스가 종료되었음을 알릴 수 있다.
좀비 프로세스는 실행 상태로 진입하지 않으며, 메모리에 남아 있다.
부모 프로세스가 wait() 함수를 호출할 때까지 좀비 상태로 대기한다.
'CS > 운영체제' 카테고리의 다른 글
[OS]멀티 태스크, 멀티 스레드, 멀티 프로세싱 (0) | 2025.03.24 |
---|---|
[OS]스레드(thread) (0) | 2025.03.24 |
[OS]프로세스 생성, 복사(fork(), exec()) (1) | 2025.03.24 |
[OS]프로세스 구조, 오버 플로우 (0) | 2025.03.23 |
[OS]문맥 교환 (0) | 2025.03.23 |