Základní info o procesu
PID
= process identification digit, identifikační číslo procesu.- Proces je abstraktní termín, který se používá pro prezentaci běžícího programu. Zjednodušeně je to běžící program, i když většina programů startuje více procesů současně. Procesy lze sledovat a řídit.
- Uživatelské a systémové procesy používají stejná pravidla, lze tudíž využívat stejné nástroje. Hlavní myšlenkou je představa, že maximum práce by mělo být vykonáno procesy, nikoli jádrem.
- Proces zahrnuje používaný adresní prostor (paměť využitou procesem - kód a knihovny, proměnné, zásobníky a další) a datové struktury jádra (mapa adresního prostoru, stav, priorita a zdroje procesu, signálová maska a vlastník procesu). Procesy mohou v linuxu sdílet adresní prostor, díky čemuž lze využívat multithreading - souběžné zpracování několika vláken.
Život procesu
Proces vzniká voláním jádra fork
, které vytvoří kopii původního procesu s novým PID
a vrátí odlišné hodnoty pro potomka (0
- nulu) a rodiče (PID
potomka). Ty tuto hodnotu prozkoumají. Potomek který má spustit nový program obvykle volá exec
a předá mu jako parametr volaný program, vynuluje zásobníky paměti.
Základním procesem je init
, který má PID 1
a zajišťuje spouštění startovacích scriptů. Všechny procesy s výjimkou procesů vytvořených přímo jádrem jsou jeho potomky.
Pokud proces skončí činnost a je připraven k odstranění (má-li zemřít), volá _exit
a dodá ukončovací kód (0
- nula při normálním ukončení). Jeho odstranění musí nejprve potvrdit rodič, což provede voláním wait
. Pokud rodič skončil dřív než potomek, stává se rodičem procesu init
a provede wait
sám. Proces tak může být ukončen (může zemřít).
PID
Jádro každému novému procesu přiřadí PID
, které identifikuje proces po celou dobu jeho života. Pokud chcete proces nějak spravovat, budete si muset jeho PID
zjistit.
Proces také může spustit další proces. Děje se to klonováním stávajícího procesu, přičemž klon následně vymění provozovaný program za jiný. Mezi procesy tak vznikají vztahy rodiče a potomka. PID
potomka je označováno jako PPID
.
Pokud spustíte program z Konzole či terminálu, zpravidla se stane řídícím terminálem procesu a poskytne procesu standardní vstup, standardní výstup a standardní chybový výstup.
Využití
PID
konkrétního procesu můžeme zjistit například z výpisu programu ps. Známe-li číslo procesu, pak s ním můžeme (máme-li k procesu vlastnická práva) udělat cokoli - změnit prioritu, přesunout na pozadí či na popředí, pozastavit či zrušit (zabít). Můžeme také zobrazit jeho rodiče i potomky, nároky na paměť i procesor a mnoho dalších informací. Znalost PID
je nezbytná pro řízení procesů.
Pokud z terminálu spustíte program/příkaz, jehož práce trvá déle, zablokujete si okno až do skončení příkazu. Pokud je to vhodné, můžete běh programu přesunout na pozadí.