Interrupt della CPU


Il dispositivo di I/O può richiedere il collegamento alla CPU tramite un’interruzione (interrupt). La linea di interrupt è un ingresso particolare della CPU collegato alla sua logica interna.
Esempio = Rispetto al polling il cameriere passa dal cliente con la mano alzata.

Interruzione
Con l’attivazione del segnale di interruzione si ottiene:
- l’interruzione dell’esecuzione del programma in corso; [registro di stack]
- l’avvio di una nuova sequenza di istruzioni (il programma di risposta). [sottoprogramma]

Al termine del programma di risposta all’interruzione dovrà essere possibile riprendere il programma interrotto. L’interruzione è un evento non programmato. La CPU non può prevedere quando o con quale frequenza ci sarà una richiesta in tal senso. L’interruzione è quindi un evento asincrono rispetto al programma in corso perché avviene in momenti non prevedibili dal programma interrotto.
Esaminiamo più nel dettaglio, il meccanismo dell’interruzione procede attraverso i seguenti passi:
1. la CPU sta svolgendo un programma;
2. in un certo istante non previsto arriva dalla periferica una richiesta di interruzione;
3. la CPU si interrompe e salta all’esecuzione del programma di risposta.

Programma di risposta
Il programma di risposta si svolge secondo le seguenti fasi:
  1. salvataggio;
  2. riconoscimento della periferica;
  3. gestione servizio;
  4. ripristino;
  5. uscita dall’interruzione.

Il salvataggio consiste nell’inserire i contenuti (catasta) dei vari registri della CPU e del PC nell’area di memoria riservata (lo stack). Nell’istante considerato il PC conteien l’indirizzo dell’istruzione successiva a quella eseguita, che viene quindi memorizzata in vista di un ulteriore riutilizzo.

Il riconoscimento della periferica consiste nell’individuare quale tra le diverse periferiche ha chiesto l’interruzione.
La gestione servizio consiste nell’eseguire le operazioni relative alla periferica che ha causato l’interruzione.
Il ripristino consiste nel recuperare dallo stack i dati precedentemente salvati ripristinando così lo stato della CPU prima del verificarsi dell’interruzione.
L’uscita dell’interruzione si verifica quando, al termine del programma di risposta, viene incontrata un’istruzione che permette il ritorno al programma prima dell’interruzione.
Non sempre è accettabile che un programma sia interrotto in un punto qualunque delle sue operazioni. I programmi di risposta, ad esempio, è bene che non siano interrompibili per poter terminare rapidamente il loro compito. Ogni CPU ha quindi la possibilità di accettare o non accettare le interruzioni a seconda dell’informazione contenuta in un apposito registro di stato. Se un programma non può essere interrotto, l’esecuzione dell’interruzione resta sospesa fino a quando non viene modificato il contenuto di tale registro.


Nessun commento :

Scrivi un commento

I commenti dovranno prima essere approvati da un amministratore. Verranno pubblicati solo quelli utili a tutti e attinenti al contenuto della pagina. Per commentare utilizzate un account Google/Gmail.