Search

프로세스 생성 과정과 좀비 프로세스

class
운영체제
상태
완료
날짜
목차

프로세스 생성 과정

프로세스의 생명 주기는 크게 생성, 준비, 실행, 대기, 완료(종료)의 단계로 구성됩니다

1. 생성

프로세스의 생성은 사용자의 요청이나 시스템의 필요에 의해 시작됩니다. 이 단계에서 운영체제는 프로세스에 필요한 초기 메모리 공간을 할당하고, 프로세스 제어 블록을 초기화하여 프로세스에 대한 중요 정보(프로세스 ID, 상태, 우선순위 등)를 관리합니다.
프로세스 생성 과정을 자세히 조사해 보면 대부분 UNIX/LINUX 체제의 fork(), exec() 생성 과정에 대해 설명하고 있습니다. 하지만 유니티 개발자들은 일반적으로 윈도우나 안드로이드 같은 생산성을 중심으로 한 운영 체제에서 개발을 주로 합니다.
그러므로 이 부분은 아래에 있는 좀비 프로세스 설명처럼 간단하게 이해하고 넘어가는 것이 좋습니다.
유닉스/리눅스 : 프로세스 생성(fork), 복제(exec) 해당 운영체제에서는 프로세스를 생성할 때, 두 가지 방법을 사용합니다. 생성은 일반적으로 프로그램 자체를 인스턴스화 하는 과정입니다. 복제는 인스턴스화된 프로세스를 그대로 복제하여 자식 프로세스를 만드는 과정입니다. 이 과정은 복제를 하고 원하는 영역을 초기화하는 과정까지 포함됩니다.
윈도우/안드로이드/IOS 등 생산성 중심 운영 체제 : 해당 운영체제는 기본적으로 복제가 아닌 생성을 통해 프로세스를 생성합니다. 따라서 메모리, 상태 등과 같은 부분을 독립적으로 관리합니다. 즉, 자식 프로세스 개념이 유닉스와 리눅스의 자식 프로세스와는 다릅니다.

2. 준비

생성된 프로세스는 실행을 위해 준비 상태로 전환됩니다. 이 상태의 프로세스는 CPU 할당을 기다리고 있으며, 준비 큐에서 실행을 위한 차례를 기다립니다.

3. 실행

준비 상태의 프로세스 중 하나가 CPU 스케줄러에 의해 선택되면 실행 상태로 전환됩니다. 이 단계에서 프로세스는 실제로 CPU를 할당받아 명령어를 실행하기 시작합니다.

4. 대기

실행 중인 프로세스가 입출력 작업 같은 이벤트를 기다려야 할 필요가 있을 경우, 대기 상태로 전환됩니다. 대기 상태의 프로세스는 해당 이벤트가 완료될 때까지 CPU를 할당받지 않습니다.

5. 완료

프로세스가 모든 작업을 마치고 종료되면 완료 상태로 전환됩니다. 이 단계에서 운영체제는 프로세스가 사용했던 모든 자원을 회수하고, PCB를 제거합니다.

좀비 프로세스

좀비 프로세스는 자식 프로세스가 종료되었지만, 부모 프로세스가 자식 프로세스의 종료 상태를 아직 회수하지 않아 프로세스 테이블에서 여전히 항목을 차지하고 있는 상태를 말합니다. 좀비 프로세스는 시스템 자원을 소비하지 않지만, 프로세스 테이블에서 항목을 차지하여 오버헤드를 발생시킵니다.
좀비 프로세스는 일반적으로 생산성 중심의 운영체제에서는 발생하지 않습니다. 윈도우에서는 자식 프로세스를 생성할 수 있지만, 자식 프로세스의 테이블 관리를 부모에게 위임하지 않습니다. 대신, 자식 프로세스가 종료될 때 회수됩니다. 더욱이, 안드로이드/IOS 에서는 자식 프로세스라는 개념이 존재하지 않습니다. 따라서 유니티 클라이언트 개발자는 멀티 프로세스 관리를 할 때, 좀비 프로세스를 고려하는 것이 적절하지 않습니다.
지금은 그저 C언어에서 부모 프로세스가 wait()waitpid()를 호출하지 않아 자식 프로세스를 제대로 회수하지 않으면 발생하는 상황이 좀비 프로세스다 라고만 알고계시면됩니다.