Proces (počítač)
Z Wikipedie, otevřené encyklopedie
Proces je v informatice název pro spuštěný počítačový program. Program je sled počítačových instrukcí, které jsou uloženy v souboru. Procesem je pak program zavedený do operační paměťi, který je prováděn procesorem. Proces obsahuje nejen kód programu, ale i dynamicky se měnící data, která proces zpracovává. Jeden program může v počítači běžet jako více procesů s různými daty (například více oken webového prohlížeče).
Obsah |
[editovat] Správa procesů
Moderní operační systémy umožňují spustit zároveň více procesů, což nazýváme multitasking. Pokud je v počítači méně procesorů, než je běžících procesů, musejí se procesy na procesorech střídat, což označujeme jako změnu kontextu.
- Podrobnější informace naleznete v článku Změna kontextu.
Při přepínání procesů se důležité informace uchovávají v PCB (anglicky Process control block), která je uložena uvnitř jádra operačního systému a každý proces má vlastní PCB.
- Podrobnější informace naleznete v článku Process control block.
Změna kontextu je poměrně náročná operace a proto byly zavedeny vlákna (anglicky thread), které mají režii na přepnutí nižší. Uspoří se zejména na tom, že thready sdílejí jeden paměťový prostor. To jim též umožňuje velmi rychlou a efektivní komunikaci.
- Podrobnější informace naleznete v článku Vlákno (program).
[editovat] Životní cyklus procesu
Životní cyklus procesu probíhá podle diagramu stavových přechodů. U několika soupeřících procesů je zařazení k běhu řízeno pravidly: časová kvanta, priorita, či bez možnosti přerušení. Přepínání procesů je značně časově náročné a může vyhovovat jen pro toleranci událostí s dlouhou latencí (například přístup na disk).
- 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)
- „vytvořený“ proces je ve stavu „připravený“ – připravený k vykonání a čeká pouze na přidělení procesoru
- spuštěním procesu, na základě plánovacího algoritmu přechází proces do stavu „běžící“
- „běžící“ proces může být ukončen normálně, tj. byl celý proveden, nebo násilně uživatelem, provedením chybné instrukce, chybou vstupně–výstupní zařízení, porušením ochrany paměti, nebo na žádost rodiče apod.
- „běžící“ proces může být po vypršením časového limitu pro jeho běh (uplynutí maximální časového kvanta) převeden do stavu „připravený“
- „běžící“ proces může být jen jeden, máme-li jen jeden procesor, kdežto ve stavu „připravený“ může být více procesů zařazených do fronty nebo jiné datové struktury, kterou využívá plánovací algoritmus
[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] Rozšířené stavy procesů
Dva přidané stavy jsou dostupné pro procesy v systémech, které podporují střednědobé plánování procesů (anglicky mid-term scheduling) s podporou virtuální paměti. V obou stavech je celý proces odsunut z vnitřní paměti na pevný disk, je-li vnitřní paměti nedostatek (anglicky swapping out a swapping in). Je chybou považovat stránkování za střednědobé plánování, protože v tomto případě se odkládá celý proces. Běžné současné operační systémy rozšířené stavy procesů nepoužívají (například řada Windows NT, Mac OS X nebo Linux).
- odložený a blokovaný (suspend blocked) – procesy, které jsou blokovány mohou být také odloženy. V tom případě je proces jak odsunut, tak i blokován; v případě, že se fronta připravených vyprázdnila (nebo alespoň téměř vyprázdnila), pak přechází proces ze stavu „odložený připravený“ do stavu „připravený“
- odložený a čekající (suspend waiting) – v systémech, které podporují virtuální paměť, mohou být procesy odsunuty z hlavní paměti a umístěny do virtuální; odtud pak může být proces přesunut zpátky do stavu čekající

