Číslo procesu
Číslo procesu (PID, anglicky process identifier) je v informatice číslo, pod kterým je v jádře operačního systému jednoznačně evidován proces. Čísla procesů používají jádra unixových systémů, Microsoft Windows, OS X i dalších. Číslo procesu je používáno v různých funkcích, které umožňují manipulovat s procesy (například měnit jejich prioritu nebo je ukončovat).
Unix-like systémy
editovatV operačních systémech na bázi Unixu jsou nové procesy vytvářeny systémovým voláním fork()
. Číslo PID je vráceno rodičovskému procesu za účelem umožnění odkázání se na tento proces v dalších voláních. Rodičovský proces například může na dětský proces vyčkat pomocí systémového volání wait()
anebo tento proces pomocí volání kill()
ukončit.
V Unixových systémech existuje několik speciálních PID čísel. Swapper neboli sched má procesové číslo 0 a je zodpovědný za stránkování, ve skutečnosti se jedná o část jádra a ne o klasický uživatelský proces. Procesem číslo 1 je obvykle init proces, který se stará o nastartování a vypnutí systému. Původně nebylo pro tento proces číslo 1 nijak vyhrazeno žádnými technickými opatřeními, měl číslo jedna pouze kvůli tomu, že se jednalo o první proces, který byl jádrem spuštěn. V nejnovějších Unixových systémech mají jádra typicky další komponenty viditelné jako procesy, což způsobilo nutnost aktivního vyhrazení čísla 1 pro init proces, aby byla dodržena konzistence se staršími systémy.
Čísla PID jsou procesům přidělována sekvenčně. Začínají od nuly a vzrůstají až do maximální systémem stanovené hodnoty (její konkrétní velikost se liší systém od systému). Jakmile je této hodnoty dosaženo, přiřazování čísel novým procesům začíná znovu od čísla 300 a proces se opakuje. V systémech macOS a HP-UX přiřazování začíná znovu od čísla 100. Čísla již přiřazená existujícím procesům se přeskakují. Některé systémy, mezi které patří například MPE/iX, používají nejnižší dostupné číslo PID ve snaze minimalizovat paměť zabranou informacemi o procesech.
Číslo současného procesu může být získáno pomocí volání getpid()
anebo pomocí proměnné $$
ve shellu. Číslo rodičovského procesu je dostupné pomocí systémového volní getppid()
.
V operačním systému Linux lze získat maximální přidělené PID pomocí pseudosouboru /proc/sys/kernel/pid_max
.[1]
Microsoft Windows
editovatNa systémech typu Microsoft Windows může být získáno číslo současného procesu pomocí API funkce GetCurrentProcessID()
[2] a čísla ostatních procesů pomocí API funkce GetProcessID()
[3].
Interně jsou čísla procesů nazývána jako ID klienta (angl. client ID) a jsou přidělována ze stejného prostoru, jako čísla vláken, což znamená, že tyto čísla se nepřekrývají. Procesu nazývanému System Idle Process je rezervováno PID 0 a procesu nazývanému System Process je rezervováno číslo 4. V Některých verzích systému Windows jsou identifikátory procesu a vláken násobky 4, ale není to specifikováno ve specifikaci. [4]
Soubory .pid
editovatNěkteré procesy, například MySQL démon, zapisují jejich číslo PID do PID souboru se známou lokací, aby umožnily dalším procesům je vyhledat.
Související články
editovatReference
editovatV tomto článku byl použit překlad textu z článku Process identifier na anglické Wikipedii.
- ↑ proc(5). www.tin.org [online]. [cit. 2017-02-13]. Dostupné online.
- ↑ GetCurrentProcessId function (Windows). msdn.microsoft.com [online]. [cit. 2017-02-13]. Dostupné online. (anglicky)
- ↑ GetProcessId function (Windows). msdn.microsoft.com [online]. [cit. 2017-02-13]. Dostupné online. (anglicky)
- ↑ Why are process and thread IDs multiples of four?. The Old New Thing. Dostupné online [cit. 2017-02-13]. (anglicky)