Identificador de procés

De Viquipèdia
Dreceres ràpides: navegació, cerca

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 realitzar 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 de un en un fins a un valor màxim que depèn de cada sistema operatiu. Quan s'assoleix aquest límit, la 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.[1]

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().[2] i l'identificador d'altres processos amb GetProcessId().[3]

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.[4]

PIDs especials[modifica | modifica el codi]

El PID 0, si està present, indica un procés especial en el sistema com s'indica o Programador swapped.[5] 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.[6]

El PID 1 és també especial perquè és utilitzada automàticament pel sistema als processos d'adopció d'orfes a causa del seu pare.[7]

Ús[modifica | modifica el codi]

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[modifica | modifica el codi]

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 que varies CPU's executen diferents instàncies d'una tasca, en aquest cas, totes les instàncies tindran assignades el PID 0.

Referències[modifica | modifica el codi]

  1. «comp.unix.aix Frequently Asked Questions». [Consulta: 2008-07-21].
  2. «GetCurrentProcessId Function». Windows Developer Center. [Consulta: 2009-05-20].
  3. «ProcessId Function». Windows Developer Center. [Consulta: 2011-03-05].
  4. «proc - process information pseudo-filesystem». Linux Programmer's Manual. [Consulta: 2009-12-28].
  5. Stevens, 1990, p. 22
  6. Stevens, 1992, cap. 8.2
  7. Stevens, 1992, cap. 8.5

Vegeu també[modifica | modifica el codi]