Il process control block o PCB (in italiano: blocco di controllo del processo) è la struttura dati di un processo, del nucleo del sistema operativo, che contiene le informazioni essenziali per la gestione del processo stesso.
Informazioni generali
Le informazioni contenute variano a seconda delle implementazioni, ma in generale sono presenti:
Area per il salvataggio dei registri general purpose, di indirizzamento
Area salvataggio registro di stato
Area di salvataggio per i flag
Stato corrente di avanzamento del processo (Pronto, In Esecuzione, Bloccato)
Identificatore unico del process
Un puntatore al processo padre
Puntatore ai processi figli se esistenti
Livello di priorità
Informazioni per il memory management(Gestione della memoria) (in particolare memoria virtuale) del processo
Identificatore della CPU su cui è in esecuzione
Informazioni per lo scheduling (gestione) del processo, come il tempo di run (esecuzione) o wait (attesa) accumulato o tempo stimato di esecuzione rimanente
Registro nel quale è presente un puntatore alla page table
Durante la commutazione di contesto, è necessario salvare in memoria centrale lo stato di esecuzione del processo che viene fermato. Queste informazioni vengono memorizzate proprio nel PCB del processo, e sarà sempre dal PCB che esse verranno ricaricate quando si dovrà proseguire l'esecuzione.
Informazioni superflue
Alcuni sistemi operativi inseriscono nel PCB di ogni processo delle informazioni superflue per la sua gestione:
Lo stato del processo. Per gestire i processi in stato di pronto è sufficiente la coda pronti, mentre per quelli in stato di attesa l'informazione è contenuta nel canale di comunicazione relativo alla chiamata bloccante.