Čí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

V 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

Na 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

Ně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

  • Identifikace uživatele
  • Group identifier

Reference

V tomto článku byl použit překlad textu z článku Process identifier na anglické Wikipedii.

  1. proc(5). www.tin.org [online]. [cit. 2017-02-13]. Dostupné online. 
  2. GetCurrentProcessId function (Windows). msdn.microsoft.com [online]. [cit. 2017-02-13]. Dostupné online. (anglicky) 
  3. GetProcessId function (Windows). msdn.microsoft.com [online]. [cit. 2017-02-13]. Dostupné online. (anglicky) 
  4. Why are process and thread IDs multiples of four?. The Old New Thing. Dostupné online [cit. 2017-02-13]. (anglicky)