Indietro | Indice | Home PHC | Avanti |
I processi sono visti dal kernel come elementi di un vettore di puntatori a delle strutture di tipo task_struct, che contengono le informazioni relative al processo stesso, come il PID, il processo padre, i figli, uid e gid di chi lo ha lanciato e quelli effettivi, l'area di memoria a lui assegnata ed altro ancora. La lunghezza massima di questo vettore rappresenta il numero massimo di processi che possono girare sulla macchina, che in genere è 512.
Un processo può trovarsi in diverse condizioni. Per avere utili informazioni riguardo a quelli che stanno girando mentre siete collegati potete dare il comando ps aux, il cui output è diviso in colonne che significano:
uid effettivo del processo
PID del processo
rapporto tra il tempo usato e il tempo di esecuzione del processo. (guai se arriva a 100%...)
memoria occupata
dimensione totale occupata dal processo, ovvero di text+data+stack
dimensione del set residente
terminale controllante
stato del processo (vedi dopo)
avvio del processo
tempo di esecuzione
il comando eseguito.
Lo stato di un processo può essere:
Il processo sta girando o aspetta che il kernel gli ceda la CPU per poter girare.
Il processo sta aspettando che si verifichi un certo evento o che una risorsa sia nuovamente disponibile. Il programma ps ci fornisce anche ulteriori informazioni:
Il processo è stato bloccato, in genere tramite l'invio di un segnale.
I programmatori di Linux hanno abbastanza sense of humor per chiamare così i processi che sono stati ufficialmente uccisi ma che per qualche ragione non possono essere cancellati del tutto. Di fatto un processo in stato di zombie non occupa memoria, il suo codice non esiste più, non può fare nulla (è morto!), ma permane, per qualche motivo, la sua tasc_struct, e quindi ne rimane traccia nel sistema.