ingresso/uscita u materiale in: –queste trasparenze, non basta il testo! –tanenbaum 2.4.1,...

37
Ingresso/Uscita Materiale in: – Queste trasparenze, non basta il testo! – Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Upload: erminia-guida

Post on 01-May-2015

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Ingresso/Uscita

Materiale in:– Queste trasparenze, non basta il testo!– Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Page 2: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

Page 3: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 4: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.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)

Page 5: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Esempio

Page 6: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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.

Page 7: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 8: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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!

Page 9: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 10: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 11: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 12: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Polling:

Il dispositivo mette le informazioni in un registro di stato (possibilmente mappato in memoria)

L’OS controlla periodicamente il registro di stato

Page 13: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

Page 14: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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?

Leggidati

Memorizzadati

si no

finito? no

si

“busy loop”, pocoEfficiente soprattutto

Se la CPU è veloce

I controlli dello statoDi I/O possono essere

Inseriti tra codice “computeIntensive”

Page 15: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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 %

Page 16: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 17: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 18: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

addsubandornop

readstore...rti

memoria

Programmautente(1) I/O

interrupt

(2) salva PC

(3) IndirizzoDi gestioneinterrupt

ProceduraDi serviziointerrupt(4)

ritorno

CPU

controllore

dispositivo

Memoria

:

Page 19: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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.

Page 20: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

Page 21: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Gestione delle eccezioni, sospensione programma corrente

1. 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)

2. Il program counter deve essere salvato

3. Lo stato deve essere salvato

Page 22: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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.

Page 23: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 24: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

Page 25: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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)

Page 26: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Ritorno da interrupt

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

Page 27: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 28: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 29: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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à

Page 30: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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.

Page 31: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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 partenzaDirezione e dimensioni al controllore.Poi dà il comando di partire

DMAC fornisce tutti i segnaliPer la memoria e per il controlloreDi I/O

Page 32: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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.

Page 33: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Delegazione della responsabilità per l’I/O:

IOPCPU IOP

Mem

D1

D2

Dn

. . .main memory

bus

I/Obus

CPU

IOP

(1) Manda istruzione all’IOP

memory

(2)

(3)

I trasferimenti sono controllatiDall’IOP

IOP utilizza cicli di memoria.

OP Device Address

Nome dispositivo Dove sono i comandi

IOP leggi i comandi dalla memoria

OP Addr Cnt Other

Cosa fare

Dove Mettere

I dati

Quantidati

Richiestespeciali

(4) IOP interrompe la CPU alla fine

Un tipico I/O Processor e’ il famoso Canale IBM

Page 34: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 35: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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 Organizza gli accessi per migliorare le prestazioni

– Es. Buffer disco

Page 36: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

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

Page 37: Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5, 5.7.3

Sommario Le prestazioni dipendono dal componente meno performante della catena

Comunicazione con i dispositivi di I/O:– Polling: spreca cicli di CPU– I/O interrupt: come le eccezioni ma asincrono

Delegazione di responsabilità:– DMA– IOP

Alcuni dispositivi, ad esempio quelli multimediali, creano problemi