Proces, implementace procesu, konstrukce pro vytváření procesů
Z FAV wiki
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
[editovat] 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
[editovat] 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č;