자처리
Child process컴퓨팅에서의 자프로세스란 다른 프로세스(부모프로세스)에 의해 작성된 프로세스입니다.이 기술은 멀티태스킹 운영 체제와 관련이 있으며 하위 프로세스 또는 전통적으로 하위 프로세스로 불리기도 합니다.
자프로세스를 작성하기 위한 절차는 크게 두 가지가 있습니다.포크 시스템 호출(유닉스 계열 시스템과 POSIX 표준에서 선호됨)과 스판(Microsoft Windows의 최신(NT) 커널 및 일부 과거 운영 체제에서 선호됨)입니다.
역사
하위 프로세스는 서브태스킹을 도입한 IBM OS/360 운영 체제의 MFT-II(Fixed number of Tasks Version II) 형식을 사용한 멀티프로그래밍의 이후 개정 버전에서 초기 형태로 1960년대 후반으로 거슬러 올라갑니다(작업 참조).Unix의 현재 형식은 Multics(1969), Windows NT 형식은 RSX-11(1972)의 OpenVMS(1978)를 사용합니다.
포크로 생성된 자식
자식 프로세스는 파일 설명자와 같은 대부분의 속성을 부모로부터 상속합니다.Unix 에서는 일반적으로 자식 프로세스는 포크 시스템 호출을 사용하여 부모의 복사본으로 생성됩니다.그런 다음 하위 프로세스는 자신을 다른 프로그램과 오버레이할 수 있습니다(사용).exec)을 클릭합니다.
각 프로세스에는 다수의 하위 프로세스가 생성될 수 있지만 부모 프로세스는 최대 1개입니다.상위 프로세스에 부모가 없는 경우 보통 커널에 의해 직접 생성되었음을 나타냅니다.Linux 기반 시스템을 포함한 일부 시스템에서는 부팅 시 커널에 의해 첫 번째 프로세스(init이라고 함)가 시작되고 종료되지 않습니다(Linux 시작 프로세스 참조). 다른 부모 없는 프로세스가 실행되어 사용자 공간에서 다양한 데몬 태스크를 수행할 수 있습니다.프로세스가 부모 없이 종료되는 또 다른 방법은 부모가 사망하면 고아 프로세스가 남는데, 이 경우 이 프로세스는 곧 init에 채택됩니다.
SIGCHLD 신호는 자 프로세스가 종료되거나 중단되거나 중단된 후 재개될 때 자 프로세스의 부모로 전송됩니다.기본적으로는 신호는 [1]무시됩니다.
알을 낳아 만든 아이
![]() | 이 섹션은 확장해야 합니다.추가하시면 됩니다. (2014년 2월) |
종말
하위 프로세스가 종료되면 일부 정보가 상위 프로세스로 반환됩니다.
부모가 대기 호출을 하기 전에 자식 프로세스가 종료되면 커널은 종료 상태 등의 프로세스에 대한 정보를 유지하여 부모가 나중에 [2]대기 호출을 할 수 있도록 합니다.아이가 아직 시스템 리소스를 사용하지만 실행하지 않기 때문에 좀비 프로세스라고 합니다.대기 시스템 콜은 일반적으로 SIGCHLD 핸들러에서 호출됩니다.
POSIX.1-2001에서는 SIGCHLD의 디스포지션을 SIG_IGN으로 명시적으로 설정하거나(기본값은 ignore이지만 자동 수집은 디스포지션이 명시적으로 무시하도록[3] 설정되어 있는 경우에만), 또는 SIGCHLD 시그널에 SA_NOCLDWAIT 플래그를 설정함으로써 커널이 종료하는 자녀 프로세스를 자동으로 수집하도록 선택할 수 있습니다.Linux 2.6 커널은 이 동작을 준수하며 FreeB는SD는 버전 5.0 [4]이후 두 가지 방법을 모두 지원합니다.단, SIGCHLD를 무시하는 것에 관한 System V 동작과 BSD 동작의 이력 차이가 있기 때문에 콜 대기는 분기된 자녀 프로세스 [5]후 청소에 가장 이식 가능한 패러다임으로 남아 있습니다.