Gestione dei processi
Il processore riesce a eseguire più probrammi contemporaneamente alternandone l'esecuzione nel tempo, secondo diverse modalità e per differenti cause :
il S.O. interrompe l'esecuzione di un programma di bassa priorità per assegnare il processore ad un programma di priorità maggiore
in caso di sistemi timer sharing, allo scadere di una certa quantità di tempo, il programma in esecuzione è interrotto per assegnare la CPU (processore) ad un altro programma
un programma in esecuzione che deve leggere dei dati in una periferica, richiede l'intervento del S.O. che avvia la lettura; meìtre il programma attende la lettua dei dati, il processore avvia un altro programma
un evento esterno al sistema causa l'interruzione del programma in esecuzione, permettendo al S.O. di intervenire per attuare le azioni necessarie
L'abilitazione o meno delle interruzioni è gestita dal S.O. che modifica il valore di un flag memorizzato nella PSW
Un programma per la gestione dell'interruzione, indicato con la sigla ISR, deve:
1. salvare lo stato del programma in esecuzione per farlo ripartire al termine dell'interruzione
2. identificare chi ha inviato la richiesta di interruzione e quindi il tipo di servizio richiesto
3. trasferire il controllo alla routine specializzata nella gestione del servizio richiesto
Le interruzioni possibili sono in numero predefinito. Per velocizzare le operazioni di gestione dell'interruzione si usa un vettore delle interruzioni, cioè un array di puntatori a differenti routine di gestione dell'interruttore
In generale si può dire che :
un processo è un'entità dinamica il cui stato di esecuzione è determinato dai valori assunti dal Program Counter, dai registri utente e di stato, dalla memoria e dallo stack
un processore ha una traccia di esecuzione, che può essere definita come la sequenza di dati assunti dal processore durante l'esecuzione del processo
a un processo sono associati il codice, un'area dati, e le altre risorse (memoria, processori, file, dispositivi di I/O, e ogni altra risorsa assegnabile)
un processo è un programma in esecuzione