Procesy, vlákna a Process Monitor

<p>&#160;</p>
<p>&#160;</p>
Co je to proces a vlákno? Jak jsou mezi sebou vzájemně provázány a jaký je jejich význam v operačním systému? Jak o nich můžete lehce získat podrobné informace? To a více se dozvíte v článku.
Martin Zachar 10. 9. 2009

Sdílet

Mnoho uživatelů svým používáním operačního systému a spouštěním aplikací vytváří procesy, vlákna, alokuje paměť, zapisuje do registrů či komunikuje po síti. Vůbec je nemusí obtěžovat, co se za jejich zády děje, protože vše podstatné a většinou složité provádí právě operační systém sám.

Proces

Co se tedy děje při jednoduchém spuštění každého programu? Každá běžící aplikace je vlastně běžící proces, který je v podstatě posloupnost instrukcí. Pokud spustíte program vícekrát, vytvoří se více procesů (instancí programu). Takový proces má své identifikační číslo (PID = process ID), rodiče (proces, který jej vytvořil), potomky (procesy, které vytvoří on), přidělené místo v paměti, otevírá si různé soubory, zachytává signály od operačního systému a další. Signál může být zachycen třeba při stisknutí kombinace kláves Alt+F4, čímž se proces ukončuje. Proces tento signál zachytí a je jen na programátorovi, co proces udělá před samotným ukončením. Například se vás může zeptat, zda chcete uložit rozepsaný dokument.

Pokud mezi sebou chtějí komunikovat dva procesy, musí si různě předávat data. Procesy nepřistupují do paměti jiných procesů, ale mohou si navzájem data posílat a tím pádem je kopírovat.

 

Přehled procesů pomocí Správce úloh.

Vlákno

Každý proces má minimálně jedno vlákno. Je to opět sled instrukcí, avšak vlákno nemá PID ani vlastní paměť. Tu sdílí s ostatními vlákny běžícími ve stejném procesu. Vlákna tedy mohou přistupovat ke stejným datům současně, což mnohdy způsobí nemalé problémy programátorům.

Ale k čemu jsou vlákna dobrá? Například můžete mít program, kde se počítá určitý výpočet a přitom se výsledek zobrazuje v podobě grafu. Výpočet je však náročný a trvá systému několik vteřin, než jej vypočte. Pokud by byla aplikace pouze jednoprocesová a tento proces měl jen jedno vlákno, ve kterém by se vše vykonávalo popořádku (posloupnost instrukcí), pak by se program na několik vteřin "seknul" a až po dokončení výpočtu by se zase dostalo na vykreslení. Přitom vlákno nemusí ani odchytávat stisknuté klávesy a kliknutí myší. Pokud jedno vlákno bude počítat výsledek a druhé bude jenom vykreslovat graf, pak se může graf vykreslovat třeba pomalu (vlákna se střídají, takže se chvíli počítá a chvíli vykresluje), ale program stále poběží viditelně i pro uživatele (i v prvním případě běžel, ale nic viditelného se s ním nedělo).

 

Více informací o procesech ve Sledování prostředků ve Správci úloh.

Více-jádrové procesory

S tímto tématem úzce souvisí i více-jádrové procesory, které jsou dnes v nových počítačích samozřejmostí. A v čem jsou vlastně lepší než ty jedno-jádrové?

Pokud máte procesor s jedním jádrem, všechny procesy využívají právě jej, ale samozřejmě, že ne paralelně (souběžně). Procesy se musí střídat a každý má vymezený čas pro svou práci s procesorem. Čím vyšší prioritu proces má, tím dostane více času. Prioritu procesu můžete nastavovat například i ve Správci úloh.

Pokud máte však více-jádrový procesor, pak jde vše jinak. Pokud bychom měli opravdu jednoduchý případ, kdy běží pouze dva procesy na dvoujádrovém procesoru, pak by každý běžel v plném čase na jednom jádře. Pokud bychom měli stejný procesor, aplikaci s jedním procesem a v něm dvě vlákna, opět by se každé provádělo na jednom jádře. V reálném světě však běží souběžně daleko více procesů mnohdy s daleko více vlákny. V takovém případě se systém řídí modelem přidělování času různě prioritním procesům a vláknům.

 

Aplikace Process Monitor.

Process monitor

Nyní tedy víme, co to jsou procesy a na co jsou. Jak se o nich však můžeme něco dozvědět? Nejjednodušším způsobem je využít Správce úloh. V záložce Procesy můžete najít opravdu základní informace o jednotlivých běžících procesech, jejich využití paměti, popis apod. Pokud však chcete podrobnější informace (v systému Windows Vista), klikněte na záložku Výkon a zde na tlačítko Sledování prostředků. Pokud si rozrolujete tabulku CPU, pak můžete vidět trochu více informací, ale pořád to není nic oslňujícího.

Pro podrobnější informace je vhodné použít externí programy. Jedním z nich je v názvu zmiňovaný Process monitor, který stačí stáhnout, rozbalit a spustit. Nemusí se instalovat. V něm se zobrazují v reálném čase informace o běžících procesech a jejich aktivitě. Pomocí pravé části horního ikonového menu si můžete nechat zobrazovat kategorie: Práce s registry, Práci se soubory, Síťovou aktivitu, Aktivitu procesů a vláken a Události profilů. Pokud si zobrazíte všechny kategorie najednou, zjistíte, že se ve vašem systému provádí neskutečně mnoho operací bez vašeho vědomí každou vteřinou. Pokud by vás zajímala aktivita pouze jedné aplikace, můžete na ni kliknout pravým tlačítkem a dát Include "název_aplikace".

Pokud by vás zajímali informace o provázání procesů, můžete najít v menu pod Tools nástroj Process tree, který zobrazí strom procesů, jak jsou mezi sebou provázány jako rodiče a potomci. K tomu samozřejmě zobrazí další informace.

V programu naleznete daleko více funkcí a informací, ale jistě nemá cenu je zde všechny vyjmenovávat.

 

Nástroj Process tree.

Závěr

Také používáte nějakou externí aplikaci na zobrazování informací o procesech? Pokud ano, můžete se o své zkušenosti podělit v diskuzi s ostatními uživateli.

Autor článku