Scusatemi la latitanza nel proseguire, ho avuto una settimana parekkio piena!
Riprendiamo il discorso, ampliamo quello ke abbiamo detto sulla comunicazione tra il processore e le unità di I/O...
E' capitato a tutti voi in ognuna delle installazioni ke avete fatto di arrivare alla fase di piazzare nel vostro sistema i driver delle periferike... ma vi siete mai kiesti xkè senza questi driver le periferike o funzionano a un quarto o non funzionano del tutto? Probabilmente nn ve lo siete mai kiesto e avete accettato x fiducia ke fossero indispensabili xkè il vostro sistema funzionasse...
Ebbene, dovete sapere ke ogni periferica piazzata nella vostra configurazione x lavorare deve avere "qualcuno" capace di rikiedere le operazioni ke la periferika deve svolgere nel "linguaggio" giusto. Questo "qualcuno" è proprio il driver della periferica! Il driver è un programma come gli altri ke xò x le sue caratteristike particolari si piazza un livello sotoo le applicazioni utente vere e proprie (come il word, l'outlook ecc...) xkè è in realtà "un'estensione" del sistema operativo (magari un giorno si potrà fare una discussione + particolareggiata su questo concetto di estensione)...
Quando accendete il computer il vostro sistema operativo ha bisogno di farsi una tabellina con tutte le corrispondenze tra le periferike e il driver associato, xkè?
Torniamo al post precedente e precisamente al momento in cui l'unità ke ha inviato l'interruzione ha avuto accesso al bus. La prima cosa ke l'unità dirà al processore attraverso il bus è il proprio nome. Il processore ha necessariamente bisogno di questa informazione xkè tramite il nome dell'unità (ke in questo caso è un numero ke identifica l'unità) è capace di ritrovare il driver associato a questa unità. Questo passaggio è indispensabile xkè solo il driver dell'unità sa come "colloquiare" con l'unità in questione. una volta trovato il driver giusto questo va in esecuzione e comunicando con l'unità "scopre" il motivo dell'interruzione e si preoccupa di fare tutto ciò ke serve.
Rivediamo quindi come funziona il meccanismo dell'interruzione:
- Una unità rikiede un'interruzione al processore ke nel frattempo sta eseguendo un prog qualsiasi
- L'arbitro del bus segnala l'interruzione al processore ke al momento giusto la rileverà
- Quando il processore rileva l'interruzione deve innanzitutto salvare da qualke parte il contenuto del registro IC (vi ricordate di questo registro?) e in questo modo potrà ripartire nell'esecuzione del programma esattamente da dove è stato interrotto
- Salvato il contenuto di IC il processore invia tramite il bus una comunicazione all'unità ke ha kiesto l'interruzione x farle sapere ke ora può inviare le sua rikiesta
- L'unità si identifica mandando sul bus il proprio nome (identificativo numerico)
- Il processore consulta la tabella di corrispondenza dei driver scoprendo qual'è quello relativo all'unità in questione
- Viene fatta una jump (ve ne ricordate?) alla prima istruzione del driver
- A questo punto il driver va in esecuzione e si preoccuperà di servire l'unità e, quando finirà, di far riprendere l'esecuzione del programma ke era stato interrotto.
Ora quindi avete un'idea di come funziona l'interazione tra le diverse unità e il processore. Quello ke vi ho descritto succede continuamente mentre state daventi al computer, infatti il driver della skeda video, della skeda audio, del disco sono attivi costantemente xkè molte delle operazioni ke facciamo comunemente utilizzano queste periferike.
Ci risentiamo nel prossimo post ke sarà breve e parlerà del DMA
Ciao a tutti!