PID (Unix)

Da Wikipedia, l'enciclopedia libera.

Nei sistemi operativi Unix e Unix-like PID è l'acronimo di process identifier (identificativo di processo) ed è un numero intero non negativo assegnato automaticamente che identifica in maniera univoca un processo all'interno del sistema e rimane costante per tutta la durata di generazione ed esecuzione del processo cioè fino alla sua terminazione.

Il PID è un attributo del process control block.

Assegnazione del PID[modifica | modifica wikitesto]

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 limite superiore, solitamente 30000[1], 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[modifica | modifica wikitesto]

Il PID 0, se presente, indica un processo speciale interno al sistema indicato come Scheduler o swapper[2]. 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[3].

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

Utilizzo[modifica | modifica wikitesto]

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().

Note[modifica | modifica wikitesto]

  1. ^ Stevens, 1990, p. 22
  2. ^ Stevens, 1990, p. 22
  3. ^ Stevens, 1992, cap. 8.2
  4. ^ Stevens, 1992, cap. 8.5

Bibliografia[modifica | modifica wikitesto]

  • W. Richard Stevens, UNIX Network Programming, Prentice Hall, 1990, ISBN 0-13-949876-1.
  • W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison Wesley, 1992, ISBN 0-201-56317-7.

Voci correlate[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica