La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory.

Presentazioni simili


Presentazione sul tema: "Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory."— Transcript della presentazione:

1 Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory mapped)

2 Istruzioni specifiche contengono: L ’ identificatore del dispositivo e una parola di comando Identificatore del dispositivo: la CPU comunica l ’ identificatore per mezzo di fili dedicati che fanno parte del bus di I/ –Parola di comando: normalmente viaggia sui fili dedicati ai dati

3 Memory-mapped I/O: Parte dello spazio di indirizzamento dedicato all ’ I/O + Letture e scritture agli indirizzi di I/O sono interpretati come comandi di I/O + I programmi utente non possono eseguire direttamente operazioni di I/O: Lo spazio di inidirizzamento di I/O protetto per mezzo della protezione degli spazi di indirizzamento (vedere in seguito l ’ argomento memoria virtuale)

4 Significato degli indirizzi A ciascun indirizzo sono assegnati uno o piu ’ dati e/comandi + Leggere e scrivere hanno spesso degli effetti collaterali, ad esempio svuotare un buffer.

5 Esempio di lettura da tastiera generica + I dati arrivano a intervalli casuali e uno alla volta + I dati arrivano lentamente La tastiera puo ’ avere o non avere un dato disponibile La tastiera puo ’ essere rotta

6 Esempio di lettura da tastiera generica, cont. + Registri (logici) di interfaccia: – Ready (un carattere disponibile) 1 bit Errori (overrun cioe ’ carattere perso e errore hardware) 2 bit – Dati in uscita 7-8 bit – Quanti indirizzi? Anche uno solo in sola lettura – Comandi? Se carattere disponibile allora cancella il dato dal buffer + Mappabili in un solo word!

7 Esempio di scrittura su terminale seriale + I dati si possono mandare quando si vuole ma non se il dispositivo sta ancora processando il carattere precedente + Non occorre mandare i dati molto velocemente Il terminale puo ’ essere rotto

8 Esempio di scrittura su terminale seriale, cont. + Registri (logici) di interfaccia: Busy, non puo ’ accettare un nuovo carattere; 1 bit –Errore: malfunzionamento generico, fornito carattere troppo presto; 2 bit –Dati in ingresso: 7-8 bit –Quanti indirizzi? Uno solo ma in lettura e scrittura: leggi i bit di stato e scrivi i dati

9 Come i dispositivi di I/O comunicano con l ’ OS L ’ OS deve sapere quando: Un dispositivo ha completato un ’ operazione Un ’ operazione ha causato un errore + Ci sono due modi di implementare questa comunicazione tra OS e dispositivo: –Polling –Interrupt

10 Polling: + Il dispositivo mette le informazioni in un registro di stato (possibilmente mappato in memoria) L ’ OS controlla periodicamente il registro di stato

11 Interrupt: Quando un dispositivo ha bisogno dell ’ attenzione della CPU fa in modo di interrompere l ’ esecuzione delle istruzioni e fa passare l ’ OS a gestire il dispositivo (vedere in seguito come questo possibile). L ’ interruzione avviene SEMPRE tra un ’ istruzione e l ’ altra. Il programma interrotto non si accorge di nulla (a meno che le cause per l ’ interruzione abbiano a che fare con il programma stesso)

12 Polling: I/O programmato + Vantaggi: – Semplice: la CPU totalmente in controllo e fa tutto il lavoro + Svantaggi: L ’ overhead di polling può sprecare molte risorse CPU controllore dispositivo Memoria Dati pronti? Leggi dati Memorizza dati si no finito? no si “busy loop”, poco Efficiente soprattutto Se la CPU veloce I controlli dello stato Di I/O possono essere Inseriti tra codice “compute Intensive”

13 Polling, esempio di prestazioni + Assumiamo 400 cicli per ciascuna operazione di polling, compreso riattivazione del programma utente e un processore che esegue 500 milioni di istruzioni al secondo + Mouse: 30 eventi al secondo, 30 x 400 = 12000 cicli al secondo; 12 mila / 500 milioni = 0.002 %

14 Polling, esempio di prestazioni, cont. + Assumiamo 400 cicli per ciascuna operazione di polling, compreso riattivazione del programma utente e un processore che esegue 500 milioni di istruzioni al secondo + Floppy: 50 Kbyte/sec, due byte alla volta, circa 25 mila accessi/sec X 400 =10 milioni di istruzioni al secondo o 2% del processore + CHIARAMENTE la gestione di un disco in polling non ha senso

15 Polling, esempio di prestazioni, cont. + Assumiamo 400 cicli per ciascuna operazione di polling, compreso riattivazione del programma utente e un processore che esegue 500 milioni di istruzioni al secondo Disco: 4 Mbyte/sec in 16 byte alla volta da ’ 250K operazioni al secondo X 400 = 100 milioni di istruzioni al secondo o 20% della CPU

16 Trasferimento con interrupt + Vantaggi: L ’ avanzamento del programma utente si ferma solo durante il trasferimento effettivo + Svantaggi, ci vuole hardware particolare per: – Generare un interrupt (nel dispositivo) – Riconoscere un interrupt (CPU) Salvare lo stato per riprendere dopo l ’ interrupt (CPU) add sub and or nop read store... rti memoria Programma utente (1) I/O interrupt (2) salva PC (3) Indirizzo Di gestione interrupt Procedura Di servizio interrupt (4) ritorno CPU controllore dispositivo Memoria :

17 Interrupt, esempio di prestazioni Come per il disco dell ’ esempio di polling precedente: 500 istruzioni per gestire l ’ interrupt ed acquisire 16 byte, 250K X 500 = 25% della CPU MA se il disco e ’ attivo solo il 5% del tempo in questo caso il 5% di 25% = 1.25% !! L ’ interrupt vince perche ’ una periferiche non e ’ mai SEMPRE attiva.

18 Eccezioni, come per l ’ interrupt Interruzioni del flusso di esecuzione per cause legate all ’ esecuzione stessa (invece che cause legate a eventi INDIPENDENTI) + Esempi: –Divisione per zero –Passaggio al sistema operativo (trap, system call)

19 Gestione delle eccezioni, sospensione programma corrente Il processore deve terminare (se puo ’ ) l ’ esecuzione dell ’ istruzione corrente o comunque andare in uno stato ben definito (cio e ’ talvolta difficile in processori implementati in modo molto sofisticato) + Il program counter deve essere salvato + Lo stato deve essere salvato

20 Salvataggio stato, cont. Lo stato deve essere salvato in una struttura a pila o tale da garantire la possibilita ’ di salvare piu ’ volte prima di ritornare, cioe ’ quando un interrupt interrompe la gestione di un altro interrupt.

21 Salvataggio stato Puo ’ essere fatto sia in hardware che con un misto di hardware e software. E ’ critico che, se fatto in software, l ’ hardware provveda a salvare quanto il sofware non puo ’ (tipicamente almeno il program counter). + Il sofware deve essere molto attento a non modificare lo stato prima di salvarlo

22 Gestione delle eccezioni, gestione del problema La seconda fase dopo aver salvato lo stato e ’ individuare il problema e decidere quale codice eseguire. Anche qui la gestione puo ’ essere preminentemente software o hardware – Registro di stato (es. MIPS) » Un registro contiene un codice che identifica l ’ errore – Vettore (es. X86) » L ’ hardware forza l ’ esecuzione a un indirizzo che dipende dal tipo di errore (e dove presumibilmente si e ’ messo del codice apposito)

23 Gestione del problema Sarebbe pericoloso gestire il problema (o l ’ I/O) nello stesso spazio di esecuzione dell ’ utente e quindi ci vuole un passaggio di livello che viene implementato al momento della chiamata al codice di gestione dell ’ interrupt (questa e ’ un ’ altra funzione implementabile solo in hardware)

24 Ritorno da interrupt + Infine bisogna tornare, se possibile, al programma utente ripristinando il suo stato. –Hardware: cambiamento di livello –Software o hardware: ripristino stato.

25 Priorita ’ Dalla descrizione precedente e ’ chiaro che un interrupt potrebbe essere interrotto a sua volta. Occorre: – Stabilire una gerarchia di interrupt per evitare che si creino dei problemi » Logici se il codice interrotto esegue delle funzioni che mettono temporaneamente la macchina in uno stato non corretto, ad esempio cambiando strutture dell ’ OS » Prestazionali se il codice interrotto aveva delle necessita ’ temporali che non sono piu ’ rispettate a causa della sua interruzione

26 Eccezioni, esempi Overflow aritmetico (puo ’ tipicamente essere inibita) + Divisione per zero Risultato non normalizzabile di un ’ operazione floating-point + Accesso a dati non allineati + Istruzione non definita Chiamata a OS, questa ovviamente non e ’ una condizione di errore!! Accesso a memoria non esistente, l ’ istruzione non puo ’ essere terminata!! Ma deve essere ripresa dopo aver sistemato il problema

27 Interrupt rispetto a eccezioni + Un interrupt come un eccezione solo che: – Un interrupt asincrono Richiede che dell ’ informazione ulteriore venga fornita dal dispotivo – Un interrupt non associato con una specifica istruzione Un interrupt non impedisce che un ’ istruzione termini » La CPU può gestire un interrupt quando desidera (ovviamente prima possibile) L ’ interrupt più complicato di un eccezione: Deve acquisire l ’ identità del dispositivo che l ’ ha causato – Le richieste di interrupt possono avere diversi livelli di urgenza: » Le richieste di interrupt devono essere ordinate secondo priorità

28 Esempio, gestione in interrupt della tastiera Si deve assegnare al bit di “ carattere disponibile ” un interrupt Il codice del “ driver ” gestisce un piccolo buffer Se l ’ utente chiede un carattere lo fornisce dal buffer o ritorna un errore se il buffer e ’ vuoto. – NON FA ALTRO + Il codice di interrupt se viene attivato legge il carattere e lo mette nel buffer del driver. – In caso di errore del dispositivo o di buffer troppo pieno segnala al sistema operativo la condizione di errore » L ’ OS puo ’ semplicemente loggare il problema o terminare il programma utente.

29 Delegazione della responsabilità per l ’ I/O: DMA + Direct Memory Access (DMA): –Esterno alla CPU –Master del bus Trasferisce interi blocchi senza l ’ intervento della CPU CPU controllore dispositivo Memoria DMAC La CPU comunica l’indirizzo di partenza Direzione e dimensioni al controllore. Poi dà il comando di partire DMAC fornisce tutti i segnali Per la memoria e per il controllore Di I/O

30 DMA: concetti base Il DMA e ’ potenzialmente indipendente dal tipo di I/O usato (memory mapping, polling, interrupt) anche se usa tipicamente l ’ interrupt. + Il DMA non fa che eseguire quello che la CPU avrebbe eseguito. Alla fine dell ’ operazione il DMA si comporta rispetto alla CPU come un dispositivo che segnala la fine dell ’ operazione.

31 Compiti del sistema operativo + Il sistema operativo agisce da interfaccia tra: L ’ hardware e il programma che ha chiesto l ’ I/O + Tre caratteristiche del sistema di I/O: –Condiviso da più programmi Usa l ’ interrupt per comunicare informazioni riguardanti l ’ I/O. »Gli interrupt devono essere gestiti dall ’ OS perch richiedono un accesso “ protetto ” alla CPU –Il controllo di un dispositivo di I/O può essere molto complesso: »Gestione una serie di eventi concorrenti »Le necessità di un particolare dispositivo possono essere molto complesse

32 Compiti del sistema operativo + Protegge risorse condivise – Garantisce che un utente acceda a un dispositivo o a una parte di esso solo se ne ha il diritto Fornisce un ’ astrazione per l ’ accesso ai dispositivi: – Fornisce funzioni per gestire un dispositivo + Gestisce gli interrupt + Fornisce una condivisione di accesso che garantisce accesso a tutti gli utenti

33 Comunicazione tra I/O e OS + Il sistema operativo deve prevenire: –Accesso diretto dei programmi ai dispositivi + Se gli utenti potessero fare I/O direttamente: –Le risorse condivise non sarebbero protette + Tre tipi di comunicazione sono richiesti: L ’ OS deve poter dare comandi Il dispositivo deve poter notificare l ’ OS in caso di terminazione o errori –Deve trasferire i dati


Scaricare ppt "Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory."

Presentazioni simili


Annunci Google