1. Cos'è il Process Control Block (PCB)?
Il PCB (Process Control Block), noto in alcuni sistemi (come Linux) come task_struct, è una struttura dati mantenuta dal kernel del sistema operativo per ciascun processo attivo. Funziona come una sorta di "carta d'identità" e registro di controllo: senza di esso, il sistema operativo non sarebbe in grado di interrompere un'applicazione, memorizzarne i progressi e riprenderla in seguito.
Quando si verifica un cambio di contesto (Context Switch), il kernel salva lo stato della CPU associato al processo in esecuzione all'interno del suo PCB, caricando contestualmente i registri salvati nel PCB del processo successivo che deve prendere il controllo del processore.
2. Campi Principali di un PCB
I dati contenuti in un blocco di controllo di processo tipico includono:
- PID (Process Identifier): Un numero intero univoco assegnato dal sistema operativo per identificare il processo.
- Stato del Processo: Indica la condizione attuale del ciclo di vita (New, Ready, Running, Waiting, Terminated).
- Program Counter (PC): L'indirizzo della prossima istruzione di codice che il processo dovrà eseguire quando riceverà nuovamente la CPU.
- Registri della CPU: Accumulatori, registri di indice, stack pointer e registri generali salvati durante le interruzioni.
- Informazioni di Scheduling: Priorità del processo, puntatori alle code di attesa e parametri relativi agli algoritmi di assegnazione temporale.
- Gestione della Memoria: Tabelle delle pagine, limiti dei segmenti di memoria assegnati (Text, Data, Stack, Heap).
- Informazioni di I/O e Risorse: Elenco dei descrittori di file aperti, socket di rete e dispositivi assegnati.
3. Simulatore Interattivo: Ispettore PCB del Kernel
Seleziona un processo dalla tabella di controllo sottostante per ispezionarne in tempo reale i campi interni del PCB.