Dětský proces - Child process
A dětský proces ve výpočetní technice je a proces vytvořený jiným procesem (dále jen nadřazený proces ). Tato technika se týká multitasking operační systémy, a někdy se mu říká a podproces nebo tradičně a dílčí úkol.
Existují dva hlavní postupy pro vytvoření podřízeného procesu: systémové volání vidlice (preferováno v Unixový systémy a POSIX standard) a potěr (přednost v moderní (NT) jádro z Microsoft Windows, stejně jako v některých historických operačních systémech).
Dějiny
Procesy dítěte se datují do konce šedesátých let, s ranou formou v pozdějších revizích Multiprogramování s pevným počtem úkolů Verze IBM (MFT-II) OS / 360 operační systém, který zavedl dílčí úkol (vidět úkol ). Aktuální forma v Unixu čerpá Multics (1969), zatímco forma Windows NT čerpá z VAX / VMS, z RSX-11 (1972).
Děti vytvořené vidličkou
Dětský proces zdědí většinu svého atributy, jako deskriptory souborů od svého rodiče. v Unix, podřízený proces je obvykle vytvořen jako kopie rodiče, pomocí Vidlička systémové volání. Podřízený proces se pak může překrýt jiným programem (pomocí vykon) podle potřeby.
Každý proces může vytvořit mnoho podřízených procesů, ale bude mít nanejvýš jeden nadřazený proces; pokud proces nemá rodiče, obvykle to znamená, že byl vytvořen přímo jádro. V některých systémech, včetně Linux systémy založené na systému, úplně první proces (tzv inic ) je spuštěno jádrem v bootování čas a nikdy nekončí (viz Proces spuštění systému Linux ); mohou být spuštěny další nadřazené procesy k provádění různých démon úkoly v uživatelský prostor. Dalším způsobem, jak proces skončit bez rodiče, je, pokud jeho rodič zemře a ponechá osiřelý proces; ale v tomto případě bude brzy přijat inic.
SIGCHLD signál když je odeslán rodiči podřízeného procesu východy, je přerušeno nebo se obnoví po přerušení. Ve výchozím nastavení je signál jednoduše ignorován.[1]
Děti vytvořené spawnem
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (únor 2014) |
Konec života
Když se podřízený proces ukončí, některé informace se vrátí nadřazenému procesu.
Když se podřízený proces ukončí dříve, než rodič zavolá Počkejte, jádro si uchovává některé informace o procesu, například jeho stav ukončení, aby jeho rodič mohl volat Počkejte později.[2] Protože dítě stále spotřebovává systémové prostředky, ale neprovádí jej, je známé jako zombie proces. The Počkejte systémové volání je běžně vyvoláváno v obslužné rutině SIGCHLD.
POSIX.1-2001 umožňuje nadřazenému procesu zvolit, aby jádro automaticky sklízelo podřízené procesy, které se ukončují explicitním nastavením dispozice SIGCHLD na SIG_IGN (i když výchozí je ignorovat, k automatickému sklízení dojde pouze v případě, že je dispozice nastavena na výslovné ignorování[3]), nebo nastavením příznaku SA_NOCLDWAIT pro signál SIGCHLD. Jádra systému Linux 2.6 toto chování dodržují a FreeBSD podporuje obě tyto metody od verze 5.0.[4] Kvůli historickým rozdílům mezi Systém V a BSD chování s ohledem na ignorování SIGCHLD, volání Počkejte zůstává nejpřenosnějším paradigmatem čištění po rozvětvených podřízených procesech.[5]
Viz také
Poznámky
Tento článek je založen na materiálu převzatém z Zdarma online slovník výpočetní techniky před 1. listopadem 2008 a začleněno pod "licencování" podmínek GFDL, verze 1.3 nebo novější.
Reference
- ^ Specifikace Single UNIX, Vydání 7 od Otevřená skupina - Referenční příručka základních definic,
- ^ Linux Programátor Manuál - Systémová volání : čekat na změnu stavu procesu -
- ^ „Linuxové jádro: Signály“. Win.tue.nl. Citováno 2014-04-30.
- ^ [1] Archivováno 29. září 2011, v Wayback Machine
- ^ Linux Programátor Manuál - Systémová volání : zkoumat a měnit akci signálu -