Proces, implementace procesu, konstrukce pro vytváření procesů
Proces = program, který běží · Má vlastní adresový prostor, ve kterém běží · V adresním prostoru má kód spustitelného programu, data, zásobník · S procesem sdruženy registry a další informace potřebné k běhu programu · Stavy: běžící, připraven, blokován
Základní stavy procesů
Následující stavy procesů se vyskytují ve všech víceúlohových systémech:
* vytvořený (created) - proces je vytvořen buď příkazem uživatele (u terminálu), nebo na žádost operačního systému o provedení služby, či na žádost jiného procesu (rodiče) * připravený (ready) nebo čekající (waiting) - připravený pro vstup do stavu běžící, čeká pouze na přidělení procesoru * běžící (running) - procesu je přidělen procesor a právě se provádí příslušné programy * blokovaný (blocked) - proces je převeden do tohoto stavu v případě, kdy čeká na dokončení nějaké vstupně-výstupní operace, případně na skončení jiného procesu, uvolnění zdroje, synchronizační primitivum a podobně * ukončený (terminated) - proces skončil
činnosti.
Implementace procesu OS udržuje tabulku nazývanou TABULKA PROCESŮ - každý proces v ní má položkou nazývanou PCB (Process Control Block). PCB obsahuje všechny informace, které musejí být uchovány, je-li proces přepnut ze stavu „běžící“ do „připraven“ nebo „blokován“ - tak aby bylo proces možné znovu spustit. Konkrétní obsah se liší mezi systémy, ale většina obsahuje: · Správa procesu - Identifikátory - Stavová informace procesoru - Stav procesu - Plánovací parametry procesu - Odkazy na rodiče a potomky - Nastavení meziprocesové komunikace · Správa paměti - Popis paměti = ukazatel, velikost, přístupová práva - Úsek paměti s kódem programu - Data - Zásobník · Správa souborů - Prostředí (aktuální adresář, …) - Otevřené soubory Konstrukce pid = fork(); if (pid == 0) jsem potomek; else jsem rodič;
