Proces (počítač)

Z Wikipedie, otevřené encyklopedie

Skočit na: Navigace, Hledání

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
Ž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í

[editovat] Související články