Osiřelý proces - Orphan process
tento článek potřebuje další citace pro ověření.Únor 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
An osiřelý proces je počítačový proces jehož nadřazený proces dokončil nebo ukončeno, i když stále běží sám.
Unixový
V Unixový operační systém jakýkoli osiřelý proces bude speciálem okamžitě přijat inic systémový proces: jádro nastaví rodiče na inicializaci. Tato operace se nazývá re-rodičovství a dochází automaticky. I když technicky má proces proces „init“ jako nadřazený, stále se nazývá osiřelý proces, protože proces, který jej původně vytvořil, již neexistuje. V jiných systémech jsou osiřelé procesy jádrem okamžitě ukončeny. V moderních systémech Linux může být osamocený proces nahrazen procesem „podřízeného“ inic.[1][2]
Proces může být osiřel neúmyslně, například když se nadřazený proces ukončí nebo dojde k chybě. The skupina procesů mechanismus ve většině unixových operačních systémů lze použít k ochraně před náhodným osiřelím, kde v koordinaci s uživatelským skořápka se pokusí ukončit všechny podřízené procesy signálem „zavěšení“ (ZOBRAZENÍ ), místo aby jim umožnili pokračovat v běhu jako sirotci. Přesněji řečeno, jako součást kontrola práce, když shell skončí, protože se jedná o „vůdce relace“ (jeho ID relace se rovná jeho ID procesu), odpovídající relace přihlášení končí a shell odešle SIGHUP na všechny své úlohy (interní reprezentace skupin procesů).
Někdy je žádoucí záměrně osamocit proces, obvykle umožnit dokončení běžící úlohy bez další pozornosti uživatele nebo spustit neomezeně běžící službu nebo agenta; takové procesy (bez přidružené relace) jsou známé jako démoni, zejména pokud běží na neurčito. Nízkoúrovňový přístup je k Vidlička dvakrát, spustit požadovaný proces u vnouče a okamžitě ukončit dítě. Proces vnoučat je nyní osiřelý a nepřijímá ho jeho prarodič, ale spíše init. Alternativy na vyšší úrovni obcházejí manipulaci se zavěšením shellu, a to buď podřízenému procesu, aby ignoroval SIGHUP (pomocí nohup ), nebo odebrání úlohy z tabulky úloh nebo řeknutí shellu, aby neposílal SIGHUP na konci relace (pomocí popřít v obou případech). V každém případě se ID relace (ID procesu vedoucího relace, prostředí) nezmění a ID procesu ukončené relace se stále používá, dokud všechny osiřelé procesy buď neukončí nebo nezmění ID relace (spuštěním nová relace prostřednictvím souprava (2)
).
Pro zjednodušení správy systému je často žádoucí použít a obálka služby takže procesy, které nejsou určeny k použití jako služby, správně reagují na signály systému. Alternativou k udržení běhu procesů bez jejich osiření je použití a terminální multiplexer a spusťte procesy v odpojené relaci (nebo relaci, která se odpojí), takže relace není ukončena a proces není osiřelý.
Proces serveru se také říká, že je osiřel, když klient, který inicioval požadavek, neočekávaně spadne po zadání požadavku a ponechá spuštěný proces serveru.
Tyto osamocené procesy plýtvají prostředky serveru a mohou potenciálně ponechat server nedostatek prostředků. Existuje však několik řešení problému osamoceného procesu:
- Vyhlazování je nejčastěji používanou technikou; v tomto případě je sirotek zabit.
- Reinkarnace je technika, při které se stroje pravidelně pokoušejí najít rodiče jakýchkoli vzdálených výpočtů; kdy jsou osiřelé procesy zabity.
- Vypršení platnosti je technika, při níž je každému procesu přidělen určitý čas na dokončení, než bude zabit. V případě potřeby může proces „požádat“ o více času na dokončení před vypršením přiděleného času.
Viz také
Reference
- ^ „Co je to proces„ subreaper “?“.
- ^ „Nový nadřazený proces, když nadřazený proces zemře“.
Od systému Linux 3.4 a dále mohou procesy vydávat systémové volání prctl () s možností PR_SET_CHILD_SUBREAPER a ve výsledku se, ne proces č. 1, stanou rodiči některého z jejich osiřelých potomků.
- "10.6.4 Osamocené skupiny procesů ", Procesní model vývoje aplikací pro Linux, autori Erik W. Troan a Michael K. Johnson, 8. července 2005
Definice: Osamocený proces je spuštěný proces, jehož nadřazený proces je ukončen nebo dokončen.