Gestione dei processi in Unix
A differenza di Windows, GNU/Linux e gli altri sistemi operativi derivati da Unix come FreeBSD e MAC OS X offrono una migliore gestione dei processi dell’ambiente.
Un processo è, volgarmente, un programma in esecuzione. Tutti i programmi in esecuzione creano almeno un processo. Ogni processo ha un identificatore PID (process identifier) che consiste in un numero unico.
Il comando ps, acronimo di process status, indica lo stato dei processi in esecuzioni sulla macchina.
Utilizzando il comando ps aux è possibile esaminare l’intera lista dei processi in uso ottenendo anche una serie di informazioni interessanti.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
utente1 8092 3.1 2.6 190496 54284 ? Sl 14:26 0:08 /usr/lib/iceweasel/firefox-bin -a
utente1 8137 0.6 0.8 31196 17728 ? S 14:26 0:01 gedit
utente1 8271 0.0 0.0 4252 1684 pts/2 Ss 14:30 0:00 bash
utente1 8279 0.0 0.0 3712 1028 pts/2 R+ 14:30 0:00 ps aux
Nella tabella riportata sono mostrati una parte dei processi in esecuzione. Ogni riga rappresenta un processo. Nella prima colonna USER si trova l’utente che ha lanciato il processo mentre nella successiva c’è l’identificativo del processo (PID). L’ultima colonna riporta il comando lanciato.
In questo caso l’utente1 ha avviato una sessione di firefox, dell’editor gedit, di un terminale bash e ha lanciato il comando ps aux.
La colonna centrale %CPU e %MEM indicano la percentuale di occupazione del processore e della memoria fatta dal processo. Nel esempio riportato il processo firefox con PID 8092 consuma il 3,1% della CPU e il 2,6 della RAM.
L’acronimo RSS significa Resident Set Size e indica l’occupazione della memoria fisica senza swap in kilobyte.
L’acronimo VSZ sta per (Virtual SiZe) e rappresenta l’uso della memoria virtuale del processo nella quale è conteggiato anche RSS, cioè RSS è parte di VSZ. Mentre RSS non conteggia la memoria swap usata, VSZ potrebbe includerla.
Sia VSZ sia RSS sono soltanto delle stime di occupazione perché talvolta i processi fanno uso di librerie condivise e lo spazio di queste librerie andrebbe quindi sottratto ai due valori.
TTY indica da quale terminale è stato avviato il processo.
START mostra l’ora o il giorno che il processo è stato avviato.
TIME, invece, indica quanto tempo CPU è stato consumato dal processo.
STAT sta per stato del processo, probabilmente è la voce più complessa dell’output di ps.
Un processo può assumere un diverso stato durante il suo tempo di vita. Il primo carattere della colonna STAT indica lo stato principale.
D indica un processo sul disco o in attesa da breve termine.
I rappresenta un processo inattivo (idle) dormiente per più di 20 secondi.
L sta aspettando per acquisire un Lock.
R è in esecuzione.
S sta dormendo (sleeping)da meno di 20 secondi.
T è stato fermato.
W indica un thread interrotto inattivo (idle).
Z marca un processo morto (a “zombie”).
A volte lo stato principale è seguito da un altro carattere che completa la descrizione del processo.
+ il processo è in un gruppo di processi in primo piano.
< ha aumentato la priorità nella pianificazione dell’uso della CPU.
E sta cercando di uscire.
J il processo sta in una jail. The hostname della gabbia si può controllare in /proc/<pid/status>.
L ha delle pagine bloccate sul core (per esempio in raw I/O).
N la sua priorità di esecuzione è stata ridotta.
s è un leader di sessione.
V è sosteso durante un vfork.
W è stato spostato dalla memoria principale a quella virtuale.
X il processo è sottoposto a tracciamento or debug.