In questa lezione introdurremo i processi, cioè le "attività" che vengono create dai diversi comandi all’interno del nostro sistema operativo. E’ appena il caso di ricordare che Linux (come molti altri OS) è un sistema multitasking ed è in grado, pertanto, di gestire simultaneamente diversi processi. Prima di proseguire, tuttavia, si rende opportuna qualche precisazione preliminare.
Per prima cosa cercheremo, quindi, di rispondere alle domande "cos’è un processo?" e "cos’è il PID?".
Cos’è un processo in Linux?
In Linux, un file eseguibile memorizzato su disco costituisce un programma. Quando un programma viene lanciato e caricato in memoria viene chiamato processo.
Con linguaggio tecnico possiamo definire il processo come l’istanza di un programma.
I processi hanno un ciclo vitale simile a quello degli organismi viventi: nasce (il programma viene lanciato), vive (il programma è in esecuzione) e muove (il programma viene terminato).
Cos’è il PID?
Quando viene avviato un processo gli viene assegnato un numero univoco chiamato ID processo (PID) che lo identifica in modo univoco nel sistema.
Il PID non è modificabile e non varia per tutta la durata del processo. Solitamente il valore di PID viene assegnato in modo sequenziale: un nuovo processo, quindi, assumerà un valore di PID maggiore di uno rispetto all’ultimo processo creato.
Conoscendo il PID è possibile agire sul processo, ad esempio terminandolo.
Processi utenti e Processi di sistema
Il processi possono essere distinti in due gruppi:
- i processi utente sono quelli lanciati dall’utente durante la sua interazione col sistema operativo. Si pensi ad esempio all’esecuzione di un programma per la navigazione on-line come Chrome o Firefox: in questo caso è l’utente a lanciare il programma e lo fa in modo esplicito attraverso una propria azione.
- i processi di sistema (anche detti demoni) sono programmi, avviati al momento del boot del sistema, che vengono eseguiti in background per fornire taluni servizi. Di solito i demoni hanno nomi che finiscono con la lettera "d": per esempio, syslogd è il demone che gestisce i log di sistema, httpd è il demone che fa girare il servizio HTTP e così via.
Ereditarietà e PPID
A ciascun processo viene associato, oltre al già visto PID, un altro identificatore detto PPID (Parent Process ID Number): si tratta di un numero NON univoco che indica qual’è il suo processo genitore. Ogni processo, infatti, ha facoltà di lanciare altri processi che assumeranno il ruolo di child (figli). Ogni processo potrà avere più figli ma uno e un solo padre (parent process).
In base al principio di ereditarietà un processo figlio viene automaticamente terminato quando il processo padre che lo ha direttamente originato termina.