Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Architettura degli elaboratori
24 novembre 2004 L’organizzazione dell’I/O: dispositivi di accesso, gestione degli interrupt
2
Gestione degli interrupt
Definizioni di eccezione ed interrupt Perché introdurre interrupt Cosa deve fare il sistema in caso di interrupt Esempi di I/O interrupt Comunicazione tra il processore ed il dispositivo di I/O Abilitazione/disabilitazione di interrupt : livelli Interrupt multipli e simultanei : gestione delle priorità
3
Definizioni di eccezione ed interrupt
Un'eccezione è un evento inaspettato dall’interno del processore (ad es. divisione per zero) Un interrupt è un evento inaspettato che proviene dall’esterno del processore (ad es. terminazione di un’operazione di stampa) Entrambi, come le operazioni di jump/branch, modificano il normale flusso di esecuzione delle istruzioni
4
Approfondimenti nei corsi
Definizioni di eccezione ed interrupt Approfondimenti nei corsi sui Sistemi Operativi Esempi di tipologie di eccezioni Overflow aritmetici Esecuzione di istruzioni non definite Esecuzione di istruzioni privilegiate … … Fault di accesso in memoria System calls (meglio classificate come trap) Esempi di tipologie di interrupt Segnalazioni da parte di dispositivi di I/O
5
Perché introdurre interrupt
Le operazioni di I/O sono di gran lunga piú lente delle operazioni della CPU In un sistema senza interrupt la CPU si ritrova spesso: a fare polling delle periferiche a intervalli regolari per iniziare operazioni di I/O ad attendere il completamento di operazioni di I/O IDEA DI BASE : mettere la CPU in condizioni di svolgere lavoro utile durante le operazioni di I/O
6
Il diagramma di stato che descrive il ciclo di istruzione
Perché introdurre interrupt Il diagramma di stato che descrive il ciclo di istruzione
7
Il diagramma di stato che descrive il ciclo di istruzione
Perché introdurre interrupt Il diagramma di stato che descrive il ciclo di istruzione - come si modifica
8
Cosa deve fare il sistema in caso di interrupt
Salvataggio dell’indirizzo dell’istruzione corrente e di tutti i registri necessari al ripristino Disabilitazione di interrupt successivi durante la gestione di un interrupt Scelta del segmento di codice (routine di gestione dell’interrupt) appropriato per la gestione di quel tipo di interrupt type: X X_handler() dispositivo job j job j CPU Memoria
9
Cosa deve fare il sistema in caso di interrupt
Salvataggio dell’indirizzo dell’istruzione corrente e di tutti i registri necessari al ripristino Disabilitazione di interrupt successivi durante la gestione di un interrupt Scelta del segmento di codice (routine di gestione dell’interrupt) appropriato per la gestione di quel tipo di interrupt dispositivo X_ handler() job j CPU Memoria
10
… e quando l’interrupt handler ha terminato…
Cosa deve fare il sistema in caso di interrupt … e quando l’interrupt handler ha terminato… X_handler() dispositivo job k CPU Memoria
11
Cosa deve fare il sistema in caso di interrupt
A LIVELLO LOGICO… dispositivo X_ handler() job j CPU Memoria Durante l’esecuzione dell’interrupt handler si è in kernel mode, per permettere al solo Sistema Operativo di manipolare le strutture dati utili allo scopo
12
Trasferimento di un blocco dalla memoria al disco
Un esempio : interrupt di disco La CPU mette in comunicazione memoria e controller del disco Può quindi evitare di attendere e “dedicarsi ad altro” Il controller, quando ha finito il trasferimento dei dati, informa la CPU mediante un interrupt Trasferimento di un blocco dalla memoria al disco
13
… ed un altro esempio : interrupt di stampante
Stampare senza interrupt : mandare una riga attendere il completamento mandare la riga successiva … elabora … stampa n righe Stampare con interrupt : mandare una riga andare avanti alla prossima elaborazione quando arriva l’interrupt mandare la riga successiva elaborating waiting la stampante accetta solo una riga alla volta
14
Comunicazione tra il processore ed il dispositivo di I/O
POLLING (diverso dal polling a intervalli regolari!!!) la CPU riceve un interrupt anonimo interroga tutti i dispositivi per vedere chi deve eseguire un’operazione di I/O esegue la routine appropriata Maggior dettaglio nella gestione degli interrupt multipli CAUSE REGISTER la CPU riceve un interrupt con identificatore del dispositivo (o di un gruppo di dispositivi), che va caricato nel cause register il controllo passa all’unica routine di gestione dell’interrupt che determina ed esegue la subroutine appropriata VECTORED INTERRUPT SYSTEM la CPU riceve un interrupt con un indirizzo mediante l’uso di un interrupt vector, manda in esecuzione la routine appropriata
15
Interrupt vector : mappa tipi di interrupt a indirizzi di routine di gestione interrupt
16
Comunicazione tra il processore ed il dispositivo di I/O
ALTRI REGISTRI DI SUPPORTO Cause register – contiene il codice dell’interrupt generato (utilizzato anche per gestire le eccezioni) IPC – contiene il Program Counter memorizzato prima di passare il controllo alla gestione dell’interrupt Status register – per gestire i livelli di interrupt ed il mascheramento … che discuteremo in altra occasione LATENZA DI INTERRUPT : come velocizzare il salvataggio dei registri?
17
… E PER FISSARE I CONCETTI…
Chiediamoci quali sono le principali differenze tra una normale chiamata a procedura e la gestione di un interrupt Per esempio, c’è sempre identità tra l’originatore dell’interrupt e chi lo subisce?!
18
Studiare anche… Abilitazione/disabilitazione di interrupt Interrupt multipli e simultanei : gestione delle priorità
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.