📖 WIPIVERSE

🔍 현재 등록된 정보: 41,087건

자식 프로세스

자식 프로세스(Child Process)는 컴퓨터 운영체제에서 다른 프로세스에 의해 생성된 프로세스를 의미한다. 자식 프로세스를 생성한 프로세스는 부모 프로세스(Parent Process)라고 하며, 이 둘은 부모-자식 관계의 계층 구조를 이룬다.

개요

일반적으로 유닉스 계열 운영체제에서는 fork 시스템 호출을 사용하여 현재 프로세스의 거의 완벽한 복사본인 자식 프로세스를 생성한다. fork 이후, 부모 프로세스와 자식 프로세스는 서로 다른 실행 흐름을 갖게 되지만, 부모의 메모리 이미지, 열린 파일 디스크립터, 환경 변수 등의 대부분의 자원을 상속받는다. 자식 프로세스는 exec 계열 시스템 호출을 사용하여 자신을 새로운 프로그램으로 대체할 수 있으며, 이를 통해 부모 프로세스와는 다른 프로그램을 실행하게 된다. 윈도우 계열 운영체제에서는 CreateProcess API 함수를 사용하여 새로운 프로세스를 생성하며, 이 함수는 생성과 실행(exec)을 동시에 수행하는 역할을 한다.

특징

  • 계층 구조: 자식 프로세스는 반드시 하나의 부모 프로세스를 갖는다.
  • 자원 상속: 부모 프로세스의 많은 자원(파일 디스크립터, 시그널 핸들러, 현재 작업 디렉터리 등)을 상속받는다.
  • 독립적 실행: 생성된 후에는 부모와 독립적으로 실행되며, 각자의 상태(PID, 메모리 공간 등)를 관리한다.
  • 프로세스 간 통신 (IPC): 파이프(pipe), 소켓(socket), 공유 메모리 등의 메커니즘을 통해 부모와 자식 프로세스가 데이터를 주고받을 수 있다.

목적 및 활용

자식 프로세스를 사용하는 주된 목적 중 하나는 시스템에서 동시성(concurrency)을 확보하는 것이다. 복잡한 작업을 여러 작은 작업으로 나누어 자식 프로세스에게 위임함으로써, 부모 프로세스는 다른 작업을 계속 수행하거나 여러 요청을 동시에 처리할 수 있다. 웹 서버가 들어오는 요청마다 자식 프로세스를 생성하여 처리하거나, 셸(Shell)이 사용자가 입력한 명령어를 실행하기 위해 자식 프로세스를 생성하는 것이 대표적인 예이다. 또한, 자식 프로세스는 부모 프로세스와는 격리된 환경에서 실행되므로, 잠재적으로 불안정하거나 신뢰할 수 없는 코드를 실행하는 데 사용될 수 있다.

종료 및 관리

자식 프로세스가 종료될 때, 운영체제는 해당 프로세스의 종료 상태 정보를 유지하며 좀비 프로세스(Zombie Process) 상태가 된다. 부모 프로세스는 wait 계열 시스템 호출을 사용하여 자식 프로세스의 종료를 기다리고 해당 자원의 회수(clean up)해야 한다. 만약 부모 프로세스가 자식 프로세스의 종료를 기다리지 않고 먼저 종료되면, 해당 자식 프로세스는 고아 프로세스(Orphan Process)가 되며, 일반적으로 시스템의 init 프로세스(또는 다른 상위 프로세스)가 새로운 부모가 되어 자식 프로세스의 종료를 처리한다.

관련 개념

  • 부모 프로세스 (Parent Process)
  • 프로세스 (Process)
  • 시스템 호출 (System Call): fork, exec, wait, CreateProcess
  • 프로세스 간 통신 (IPC, Inter-Process Communication)
  • 동시성 (Concurrency)
  • 좀비 프로세스 (Zombie Process)
  • 고아 프로세스 (Orphan Process)