Wait (systémové volání)

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Wait (systémové volání) je systémové volání v operačních systémech, které umožňuje procesu čekat na dokončení jiného procesu nebo vlákna. Toto volání je běžně používáno v programování pro synchronizaci a koordinaci různých částí programu nebo pro čekání na dokončení nějaké operace. Wait umožňuje procesu přepnout do stavu nečinnosti a blokuje jeho provádění, dokud nejsou splněny určité podmínky pro pokračování. Toto systémové volání je dostupné v různých operačních systémech a programovacích jazycích a je důležitou součástí paralelního programování.

V moderních operačních systémech může proces využít systémové volání wait za účelem vyčkání na dokončení běhu jiného procesu. Ve většině systémů může rodičovský proces vytvořit nezávisle se provádějící potomek. Rodičovský proces následně může použít systémové volání wait, které pozastaví vykonávání rodičovského procesu do doby, než se ukončí potomek. Tento potomek při svém ukončení vrátí návratový kód operačnímu systému. Operační systém následně zašle tento kód čekajícímu rodičovskému procesu, který obnoví své provádění. 

Moderní operační systémy také poskytují systémové volání umožňující používání vláken procesů podobným způsobem. 

Operační systém může poskytovat více variant systémového volání wait, které umožní počkat na ukončení jakéhokoliv potomka anebo počkat na jednoho potomka identifikovaného pomocí jeho PID. 

Některé operační systémy rodičovskému procesu zašlou signál SIGCHLD v okamžiku, kdy se potomek ukončí za účelem informování rodičovského procesu a umožnění získání návratového kódu potomka. 

Zombie a sirotci

Jakmile potomek skončí, stane se zombie procesem a i nadále existuje v systémové tabulce procesů i přesto, že se nejedná o vykonávající se program. Za normálních okolností rodičovský proces na potomka čeká a získá tedy návratový kód. +more Operační systém následně odebere potomku prostředky, které měl přiděleny a z tabulky procesů zmizí. Pokud ovšem rodičovský proces na potomka nečeká, nadále zabírá přidělené prostředky a jedná se o únik prostředků. Tyto situace jsou obvykle řešeny pomocí speciálního procesu, který hledá zombie procesy a získává jejich návratový kód, což umožní operačnímu systému dealokovat přidělené prostředky.  .

Naopak potomek, kterému se ukončí rodič předtím, než potomek sám, se stane osiřelým procesem. Tyto situace se obvykle řeší speciálním kořenovým (či init) procesem, který se stane novým rodičem osiřelého procesu. +more Tento speciální program detekuje, kdy se osiřelý proces ukončí a následně získá jeho návratový kód, čímž umožní systému dealokovat jemu přidělené prostředky.  .

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top