Procesy a vlákna v operačních systémech (OS) vždy patřily k mým oblíbeným tématům v informatice. Umožňují mnohem hlouběji pochopit, jak OS spravuje programy v různých fázích jejich provádění, řeší problémy týkající se paměti a zajišťuje izolovanou bezpečnost až do jádra. Je to prostě zatraceně zajímavé!
Základní myšlenka
Proces je jednoduše vykonávaný program. K jednomu programu je striktně přiřazen jeden proces. Ve velmi vzácných případech to nemusí platit vždy (příklad Google Chrome), ale většinou to tak je.
![](https://miro.medium.com/max/38/1*1RN7wINzLL1IbqrQWH30FQ.jpeg?q=20)
Každý proces má různé součásti, které mu umožňují provádět zamýšlené úkoly. Zejména zásobník a halda slouží k alokaci lokálních proměnných, respektive dynamické paměti.
Součástí je více, ale stačí říci, že každý proces potřebuje tyto součásti, aby mohl běžet jako program.
Monitorování procesů v systému
V každém okamžiku může být spuštěno několik set nebo méně procesů. Někdy je užitečné zobrazit o nich podrobné informace, zejména pokud počítač běží pomalu: některé procesy totiž mohou zabírat paměť počítače nebo procesor. Možnost přesně je určit a následně zničit je skutečně velmi užitečná a lze jí dosáhnout poměrně snadno.
Pokud používáte systém Windows, můžete otevřít Správce úloh a klepnutím na kartu Procesy tyto informace zobrazit. Pokud používáte systém Linux nebo počítač se systémem Unix, můžete spustit řadu různých příkazů:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Jak operační systém spravuje procesy
![](https://miro.medium.com/max/60/1*LdafsmbCdfR882Vtd1Kp0g.jpeg?q=20)
Proces může být v daném okamžiku v určitém stavu. Může být právě vytvořen, čekat na spuštění, čekat na přístup k nějakému vstupně-výstupnímu zařízení, být přerušen jiným procesem atd. Aby byla zajištěna maximální produktivita, musí operační systém rozumět stavu všech těchto procesů a být schopen ve správný čas inteligentně vytvářet nové procesy, přepínat mezi nimi, pozastavovat je, suspendovat atd.
![](https://miro.medium.com/max/36/1*kAg0WimV_ZBEPqR97hj2WA.jpeg?q=20)
Aby to operační systém mohl dělat efektivně, udržuje pro každý proces takzvaný blok řízení procesů. Obsahuje užitečné informace, jako je aktuální stav procesu, příští instrukce k provedení a aktuálně přidělená zařízení procesu.
To umožňuje operačnímu systému efektivně spravovat různé procesy tím, že ukládá aktuální stav v bloku, přepíná mezi nimi a později znovu načítá některé procesy.
Jak operační systém přepíná mezi různými procesy
![](https://miro.medium.com/max/60/1*usQZh0BLpOhsA09QPm9dhg.jpeg?q=20)
Přepínání kontextu označuje specifickou činnost, při níž operační systém ukládá stav běžícího procesu a pozastavuje jej, aby mohl spustit jiný proces. Musí tak učinit způsobem, který zajistí, že tyto procesy nebudou v konfliktu a že uložený proces bude možné později bez problémů obnovit. Tím je zajištěna klíčová vlastnost operačních systémů: multitasking. Schéma ukazuje, jak se PCB používá k uložení stavu procesu, spuštění jiného a pozdějšímu opětovnému načtení a pokračování původního procesu.
.