# Identificador de procés

En informàtica, l'identificador de procés (també conegut com a ID de procés o PID, de l'anglès Process Identifier) és un número utilitzat pel nucli d'alguns sistemes operatius com UNIX (o sistemes Unix-like), Mac OS X o Windows NT amb l'objectiu d'identificar de forma unívoca un procés.
En sistemes operatius unix-like, l'identificador de procés d'un procés nou (procés fill) creat a partir d'un altre procés (procés pare) és el valor retornat per la crida de sistema fork.
El PID pot ser passat a funcions de control de processos com waitpid o kill per tal de dur a terme accions en el procés identificat pel PID.
En sistemes operatius que disposen del sistema de fitxers procfs, tota la informació d'un procés es pot trobar a la carpeta /proc/pid/.
En sistemes operatius unix-like, hi ha dos processos que tenen identificadors de procés especials:
* Swapper o sched: Té el PID 0, i és el responsable de la Paginació i actualment és normalment part del nucli del sistema operatiu i no pas un procés més de l'espai d'usuari.
* init: Té el PID 1 i és el responsable de l'inici i l'apagada del sistema. Es tracta per tant del primer procés a executar-se durant l'arrancada del sistema.
En sistemes operatius unix-like, els identificadors de procés normalment s'ordenen de forma seqüencial, començant per zero i augmentant d'un en un fins a un valor màxim que depèn de cada sistema operatiu. Quan s'assoleix aquest límit, el compte torna a començar però aquest cop saltant els identificadors de procés que encara estan assignats a processos. Aquest mètode és considerat poc segur segons algunes fonts.
Els sistemes operatius Unix, els identificadors de procés són generalment assignats de forma seqüencial, començant des del 0 i augmentant fins a un valor màxim que varia en cada sistema. Quan s'arriba a aquest límit, es reinicia l'assignació a un increment de 300. En Mac OS X i HP-UX, es reinicia l'assignació a 100.
A Windows, es pot obtenir l'identificador actual del procés utilitzant la comanda GetCurrentProcessId. i l'identificador d'altres processos amb GetProcessId.
En els sistemes operatius Unix-like, l'identificador del procés actual s'obté amb la crida de sistema getpid, o amb la variable del shell: $$.
A Linux, el valor màxim d'un procés es pot consultar en el fitxer /proc/sys/kernel/pid_max.

## PIDs especials

El PID 0, si està present, indica un procés especial en el sistema com s'indica o Programador swapped. Tenint en compte que 0 té un significat especial en el sistema de trucades, no pot ser considerat com un procés ordinari (per exemple, no pot enviar senyals).
El PID 1 sempre pertany al procés init, ja que és sempre el primer procés creat en l'arrencada i roman en el seu lloc durant tot el temps que el sistema està actiu.
El PID 1 és també especial perquè és utilitzada automàticament pel sistema als processos d'adopció d'orfes a causa del seu pare.

## Ús

Les crides al sistema que accepten com a paràmetres de PID és possible passar valors que no són de la EPI en el sentit estricte, però tenint un significat especial:
Un PID de -1 indica tots els processos d'init i el procés actual. Un PID amb valors negatius per sota de -1, indica el grup dels processos identificats pel valor absolut de PID. Un PID de 0 indica el grup de processos del que l'actual procés pertany. En particular, això adquireix una importància pel sistema de crides a kill i waitpid.

## Implementacions particulars

Les versions antigues de Linux permetien que dos processos compartissin el mateix PID. Actualment això només és permès en un sistema multiprocessador en el qual diverses CPU executen diferents instàncies d'una tasca, en aquest cas, totes les instàncies tindran assignades el PID 0.

## Referències

* ↑ «comp.unix.aix Frequently Asked Questions». [Consulta: 21 juliol 2008].
* ↑ «GetCurrentProcessId Function». Windows Developer Center. [Consulta: 20 maig 2009].
* ↑ «ProcessId Function». Windows Developer Center. [Consulta: 5 març 2011].
* ↑ «proc - process information pseudo-filesystem». Linux Programmer's Manual. [Consulta: 28 desembre 2009].
* ↑ Stevens, 1990, p. 22
* ↑ Stevens, 1992, cap. 8.2
* ↑ Stevens, 1992, cap. 8.5

## Vegeu també

* Comanda UNIX ps
* Procés
* Bloc de control de procés
* Gestió de processos