Cinque attività principali di un OS per la gestione dei processi
Ci sono cinque attività principali che un sistema operativo deve mantenere per gestire i processi in esecuzione. Senza queste, un OS non potrebbe rimanere stabile a lungo.
Creazione processi
All'accensione, l'OS avvia processi per servizi come spooler stampa e sicurezza. Quando l'utente accede e avvia programmi, questi creano processi dipendenti. Un processo non è il programma in sé, ma le istruzioni che la CPU usa per eseguirlo. Un processo appartiene a Windows o a un altro programma installato.
Stato del processo
Lo stato può essere "creato", "in esecuzione", "in attesa" o "bloccato". Un processo è "in attesa" appena dopo l'avvio del programma padre, prima che la CPU lo elabori. È "in esecuzione" quando la CPU lo sta processando. È "bloccato" se non c'è abbastanza memoria o se i file associati non sono trovabili. Tutti gli OS hanno sistemi di gestione processi, con nomi diversi per ogni stato.
Sincronizzazione processi
Una volta in esecuzione, l'OS deve garantire che due processi non accedano alle stesse risorse simultaneamente. Nello specifico, due processi non possono tentare di eseguire la stessa area di codice insieme. Se lo facessero, un crash potrebbe verificarsi mentre tentano di richiamare gli stessi file e inviare le stesse istruzioni alla CPU. Se due processi devono eseguire lo stesso codice, uno deve attendere che l'altro finisca.
Comunicazione processi
Il computer deve garantire che i processi comunichino con la CPU e tra loro. Un programma può avere molti processi, ognuno con diverso livello di permesso. Il livello indica l'accesso che un processo dovrebbe avere al sistema. La comunicazione tra processi assicura che il computer determini i permessi di ciascuno. È cruciale per prevenire malware che cancelli file di sistema o aggiunga istruzioni all'OS.
Prevenzione deadlock
Infine, il computer deve evitare che i processi vadano in deadlock. Il deadlock avviene quando due processi richiedono ciascuno una risorsa che l'altro sta usando, e nessuno può finire. Le risorse non possono essere rilasciate e i programmi si bloccano. Si parla di "attesa circolare". Gli OS prevengono il deadlock in modi diversi; il più comune è costringere un processo a dichiarare le risorse necessarie prima di avviarsi. Alternativamente, un processo può richiedere risorse a blocchi e rilasciarle man mano che finisce.