Proces (program)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Diagram znázorňující možné stavy procesů.

Proces (anglicky process) je v informatice název pro spuštěný počítačový program. Proces je umístěn v operační paměti počítače v podobě sledu strojových instrukcí vykonávaných procesorem. Obsahuje nejen kód vykonávaného programu, ale i dynamicky měnící se 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ícekrát spuštěný webový prohlížeč zobrazující různé stránky). Správu procesů vykonává operační systém, který zajišťuje jejich oddělený běh, přiděluje jim systémové prostředky počítače a umožňuje uživateli procesy spravovat (spouštět, ukončovat atp.).

Správa procesů[editovat | editovat zdroj]

Moderní operační systémy umožňují spustit zároveň více procesů (textový editor, tabulkový procesor, e-mailový klient apod.), což nazýváme multitasking - multiprocessing. 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.

Související informace naleznete také v článku Změna kontextu.

Protože programátor nepředpokládá, že by byla změněna data v průběhu vykonávání programu, je při přepínání procesů důležité uchovat všechny informace potřebné pro opětovné obnovení procesu přesně v místě a ve stavu, kde bylo jeho vykonávání přerušeno tak, aby běžící proces tuto změnu nepoznal (až na časové zpoždění mezi dvěma strojovými instrukcemi, mezi kterými došlo ke změně kontextu). Tyto informace se pro každý proces ukládají do tabulky PCB (anglicky Process control block), která je uložena uvnitř jádra operačního systému.

Související informace naleznete také v článku Process control block.

Změna kontextu je poměrně náročná operace, a proto byla zavedena 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í vzájemnou komunikaci.

Související informace naleznete také v článku Vlákno (program).

Životní cyklus procesu[editovat | editovat zdroj]

Ž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ě ukončen uživatelem, provedením chybné strojové 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í časového limitu pro jeho běh (uplynutí č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

Základní stavy procesů[editovat | editovat zdroj]

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

Rozšířené stavy procesů[editovat | editovat zdroj]

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í paměti 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í

Související články[editovat | editovat zdroj]