Vedremo ora, come i processi sono organizzati in forma gerarchica, quali sono caratteristiche e proprieta che ciascuno di essi porta con se, e come vengono gestiti all’interno del sistema.
Le caratteristiche dell’architettura dei processi
Una delle caratteristiche principali dell’architettura dei processi in un sistema unix-like e che qualunque processo puo creare nuovi processi; in questo contesto il processo originale viene chiamato padre, mentre i processi da lui creati vengono detti figli.
Pertanto tutti i processi avranno un padre; l’unica eccezione e quella di init, il processo iniziale che, venendo lanciato direttamente dal kernel all’avvio, non e glio di nessun altro processo.
Questa caratteristica permette di classificare i processi in una gerarchia ad albero basata sulla relazione padre-figlio; in questa gerarchia init viene a ricoprire nel sistema un ruolo speciale, come radice dell’albero. Questa classificazione può essere stampata con il comando pstree che evidenzia in maniera grafica l’albero genealogico dei processi presenti nel sistema, con un risultato del tipo:
[email protected]:~$ pstree -A
init-+-acpid
|-atd
|-cron
|-dhclient
|-exim4
|-5*[getty]
|-login—bash
|-portmap
|-rpc.statd
Si tenga presenta che questa architettura, in cui qualunque processo puo creare degli altri processi, e molto diversa da quella di altri sistemi operativi in cui spesso l’operazione di lanciare un nuovo processo e privilegiata e non puo essere eseguita da un programma qualsiasi.
Una seconda differenza rispetto ad altri sistemi multiutente come il VMS o Windows, e che in Linux la creazione di un processo e l’esecuzione di un programma sono due operazioni separate, gestite da due system call diverse, la prima delle quali crea un nuovo processo, identico al padre, il quale normalmente va ad usare la seconda per eseguire un altro programma