Stav procesu - Process state

V počítačovém systému s více úlohami mohou procesy zabírat různé stavy . Tyto odlišné stavy nemusí jádro operačního systému jako takové rozpoznat . Jsou však užitečnou abstrakcí pro pochopení procesů.

Image
Různé stavy procesů, zobrazené ve stavovém diagramu , se šipkami označujícími možné přechody mezi stavy - jak je vidět, některé procesy jsou uloženy v hlavní paměti (žlutá) a některé jsou uloženy v sekundární paměti (zelená).

Stavy primárního procesu

Následující typické stavy procesu jsou možné na počítačových systémech všeho druhu. Ve většině těchto stavů jsou procesy „uloženy“ do hlavní paměti .

Vytvořeno

Když je proces poprvé vytvořen, zaujímá stav „ vytvořen “ nebo „ nový “. V tomto stavu proces čeká na přijetí do stavu „připraveno“. Přijetí bude schváleno nebo odloženo dlouhodobým nebo plánovacím programem pro přijetí . Obvykle ve většině systémů stolních počítačů bude toto přijetí schváleno automaticky. U operačních systémů v reálném čase se však toto přijetí může zpozdit. V systému v reálném čase může přijetí příliš mnoha procesů do stavu „připraveno“ vést k přesycení a nadměrné kontrole zdrojů systému, což povede k neschopnosti dodržet termíny procesu.

Připraven

Proces „připraven“ nebo „čekat“ byl načten do hlavní paměti a čeká na spuštění na CPU (aby jej kontextový procesor přepnul na CPU dispečerem nebo krátkodobým plánovačem). V jednom bodě provádění systému může být mnoho „připravených“ procesů - například v jednoprocesorovém systému může být spuštěn pouze jeden proces současně a všechny ostatní „souběžně provádějící“ procesy budou čekat na provedení.

Při plánování počítače se používá připravená fronta nebo spouštěcí fronta . Moderní počítače jsou schopné spouštět mnoho různých programů nebo procesů současně. CPU je však schopen zpracovat pouze jeden proces najednou. Procesy, které jsou připraveny pro CPU, jsou vedeny ve frontě na „připravené“ procesy. Jiné procesy, které čekají na událost, například načítání informací z pevného disku nebo čekání na připojení k internetu, nejsou ve frontě připravenosti.

Běh

Proces se přesune do provozního stavu, když je vybrán k provedení. Pokyny procesu jsou prováděny jedním z CPU (nebo jader) systému. Na jeden CPU nebo jádro běží nejvýše jeden proces . Proces může běžet v jednom ze dvou režimů, konkrétně v režimu jádra nebo v režimu uživatele .

Režim jádra

  • Procesy v režimu jádra mají přístup k adresám jádra i uživatele.
  • Režim jádra umožňuje neomezený přístup k hardwaru včetně provádění privilegovaných pokynů.
  • Různé instrukce (jako jsou instrukce I / O a instrukce k zastavení) jsou privilegované a lze je provádět pouze v režimu jádra.
  • Systémové volání z uživatelského programu vede k přechodu do režimu jádra.

Uživatelský režim

  • Procesy v uživatelském režimu mají přístup ke svým vlastním instrukcím a datům, ale nikoli k instrukcím a datům jádra (nebo k jiným procesům).
  • Když počítačový systém provádí jménem uživatelské aplikace, je systém v uživatelském režimu. Když však uživatelská aplikace požaduje službu z operačního systému (prostřednictvím systémového volání ), musí systém splnit požadavek z režimu uživatele do režimu jádra.
  • Uživatelský režim se vyhne různým katastrofickým selháním:
    • Pro každý proces v uživatelském režimu existuje izolovaný virtuální adresní prostor .
    • Uživatelský režim zajišťuje izolované provedení každého procesu, takže neovlivňuje ostatní procesy jako takové.
    • Není povolen přímý přístup k žádnému hardwarovému zařízení.

Blokováno

Proces přechází do zablokovaného stavu, když nemůže pokračovat, aniž by došlo k vnější změně stavu nebo události. Například proces může blokovat volání na I / O zařízení, jako je tiskárna, pokud tiskárna není k dispozici. Procesy také běžně blokují, když vyžadují vstup uživatele nebo vyžadují přístup do kritické sekce, která musí být provedena atomicky. Takové kritické sekce jsou chráněny pomocí synchronizačního objektu, jako je semafor nebo mutex.

Ukončeno

Proces lze ukončit buď ze stavu „spuštění“ dokončením jeho provedení, nebo výslovným zabitím. V obou těchto případech se proces přesune do stavu „ukončeno“. Základní program se již nespouští, ale proces zůstává v tabulce procesů jako proces zombie, dokud jeho nadřazený proces nevyvolá wait systémové volání, aby přečetl jeho stav ukončení , kdy je proces odebrán z tabulky procesu a nakonec končí proces život. Pokud se nadřazenému prvku nedaří volat wait , bude to nadále spotřebovávat položku tabulky procesu (konkrétně identifikátor procesu nebo PID) a způsobí to únik prostředků .

Další stavy procesu

Pro procesy v systémech podporujících virtuální paměť jsou k dispozici dva další stavy . V obou těchto stavech jsou procesy „uloženy“ na sekundární paměti (obvykle na pevném disku ).

Zaměněn a čeká

(Také se nazývá pozastaveno a čeká .) V systémech, které podporují virtuální paměť, může být proces vyměněn, tj. Odebrán z hlavní paměti a plánovačem umístěn na externí úložiště. Odtud může být proces vyměněn zpět do stavu čekání.

Zaměněn a zablokován

(Nazývá se také pozastaveno a zablokováno .) Blokované procesy mohou být také vyměněny. V takovém případě je proces vyměněn a zablokován a může být vyměněn zpět za stejných okolností jako proces výměny a čekání (i když v tomto případě se proces přesune do zablokovaného stavu a může stále čekat zdroj bude k dispozici).

Viz také

Reference

  • Stallings, William (2005). Operační systémy: interní prvky a principy návrhu (5. vydání). Prentice Hall. ISBN   0-13-127837-1 .
Zejména kapitola 3, oddíl 3.2, „stavy procesu“, včetně obrázku 3.9 „Přechod stavu procesu s pozastavenými stavy“