PID (informatica)
# PID (informatica)

In informatica, il PID (Process IDentifier) è l'identificativo di un processo in esecuzione. Nel kernel dei sistemi operativi Unix e Unix-like il PID è un attributo del process control block.

Esso identifica univocamente il processo nel sistema. Non è modificabile e non varia per tutta la durata del processo. L'invocazione di fork crea un nuovo processo con un nuovo valore per questo attributo.

## Assegnazione del PID

L'assegnazione dei PID avviene con criteri che variano a seconda dello specifico sistema operativo in uso. Tradizionalmente essi sono assegnati in sequenza secondo l'ordine temporale di creazione dei processi, spesso usando il più piccolo valore che sia superiore a quello del processo creante e che non sia correntemente assegnato ad un qualche altro processo.

L'intervallo di valori che un PID può assumere ha un valore massimo, solitamente 30000, oltrepassato il quale si ricomincia ad assegnare valori partendo da 1.

Un processo può conoscere il PID che gli è stato assegnato tramite la chiamata di sistema getpid, ed il PID del suo processo padre tramite la chiamata di sistema getppid.

Un processo che ne crea altri mediante la chiamata di sistema fork ottiene come risultato il PID del processo appena creato (il figlio ottiene il valore speciale 0), oppure il valore speciale -1 in caso di errore.

## PID particolari

Il PID 0, se presente, indica un processo speciale interno al sistema indicato come Scheduler o swapper. Dato che 0 assume significati particolari nelle chiamate di sistema, non lo si può considerare un processo ordinario (ad es. non è possibile inviargli segnali).

Il PID 1 appartiene sempre al processo init, dato che esso è sempre il primo processo creato all'avvio del sistema e che rimane in funzione per tutto il tempo in cui il sistema è attivo.

Il PID 1 è inoltre particolare in quanto è automaticamente usato dal sistema per adottare i processi rimasti orfani del proprio padre

## Utilizzo

Nelle chiamate di sistema che accettano dei PID come parametri è anche possibile specificare dei valori che non sono dei PID nel senso stretto del termine, ma che assumono significati particolari:

* Un PID pari a -1 indica tutti i processi eccetto init ed il processo corrente.
* Un PID negativo con valori inferiori a -1 indica il gruppo di processi identificato dal valore assoluto del PID.
* Un PID pari a 0 indica il gruppo di processi di cui il processo corrente fa parte. In particolare assume questo significato per le chiamate di sistema kill e waitpid.
