Input/Output

27
1 Input/Output

description

Input/Output. Livelli del sottosistema di I/O. Modo utente. Software di I/O di livello utente. Software di sistema indipendente dal dispositivo. Modo kernel. Driver dei dispositivi. Gestori delle interruzioni. Hardware. I controllori dei dispositivi. Monitor. - PowerPoint PPT Presentation

Transcript of Input/Output

Page 1: Input/Output

1

Input/Output

Page 2: Input/Output

2

Livelli del sottosistema di I/O

Hardware

Gestori delle interruzioni

Driver dei dispositivi

Software di sistema indipendente dal dispositivo

Software di I/O di livello utente

Modokernel

Modoutente

Page 3: Input/Output

3

I controllori dei dispositivi

La parte meccanica viene controllata da un controllore del dispositivo (device controller) o adapter

Monitor

Bus

Page 4: Input/Output

4

Controllore I/O

Registro/i dati

Registro/i controllo

Unità di controllo

Bus datiBus indirizzi

Bus controllo

Dispositivo

porta

Operazione /esiti

Dati da/perla periferica

I controllori dei dispositivi (2)• Esempio di controllore di una porta.

Page 5: Input/Output

5

I controllori dei dispositivi (3) • Problema 1 : come si accede ai registri dei controllori ?

– Si utilizzano istruzioni assembler ‘speciali’ per l’I/O (es. IN, OUT)• ogni registro dei controllori è contraddistinto da un numero di porta di I/O es. IN R0, 4

– Si ‘mappano’ i registri del controllore su particolari indirizzi di memoria, e si utilizzano le normali LOAD/STORE (memory mapped I/O)

Page 6: Input/Output

6

Memory-Mapped I/O

(a) Spazi di memoria ed I/O separati(b) Memory-mapped I/O(c) Modello ibrido

Page 7: Input/Output

7

Memory-Mapped I/O (2)• Come si discrimina fra accessi di I/O e

accessi in RAM ?

Page 8: Input/Output

8

Memory Mapped I/O (3) • Attenzione alla cache!!!!

– Se si usa MMIO, deve essere possibile disabilitare selettivamente il caching degli indirizzi relativi a registri di I/O – … altrimenti non saremo mai in grado di accorgerci di modifiche dei registri da parte del controllore!

Page 9: Input/Output

9

Accesso diretto alla memoria (DMA)• Vari tipi di gestione delle interazioni con le

periferiche– a controllo di programma : il processore esegue

personalmente tutti i trasferimenti dalla RAM alle periferiche e viceversa

– in DMA (Direct Memory Access) l’interfaccia può accedere direttamente alla RAM

• possibilità di trasferire dati mentre il processore elabora• la periferica avverte quando ha finito con una interruzione

Page 10: Input/Output

10

Accesso diretto alla memoria DMA (2)

Operazioni effettuate durante un trasferimento DMA– da notare: memoria virtuale, pinning

Page 11: Input/Output

11

Livelli del sottosistema di I/O

Hardware

Gestori delle interruzioni

Driver dei dispositivi

Software di sistema indipendente dal dispositivo

Software di I/O di livello utente

Modokernel

Modoutente

Page 12: Input/Output

12

Gestori delle Interruzioni (Interrupt Handlers)• Tipicamente i driver sono bloccati in attesa che

arrivi una interruzione dalla periferica che stanno controllando

– es: il driver si blocca dopo aver iniziato una operazione di I/O

• Quando arriva una interruzione – viene mandato in esecuzione il gestore delle

interruzioni (GI) di quel tipo (selezionato in base al vettore di interruzione)

– GI sblocca il driver utilizzando un opportuno meccanismo di IPC

Page 13: Input/Output

13

Gestori delle Interruzioni (2)• Abbiamo già visto il meccanismo delle interruzioni

in dettaglio. Le operazioni effettuate dai GI sono :– invocare la routine assembler che salva i registri del

processo interrotto– segnalare al controllore delle interruzioni quando può

inviare una nuova interruzione– svegliare il driver opportuno– chiamare lo scheduler– invocare la routine assembler che carica il nuovo

processo• I GI usano uno stack a parte nel kernel

Page 14: Input/Output

14

Livelli del sottosistema di I/O

Hardware

Gestori delle interruzioni

Driver dei dispositivi

Software di sistema indipendente dal dispositivo

Software di I/O di livello utente

Modokernel

Modoutente

Page 15: Input/Output

15

Driver dei Dispositivi (1)

Page 16: Input/Output

16

Driver dei Dispositivi (2)• Il driver di un dispositivo è la parte del sistema

operativo che interagisce con il dispositivo– legge/scrive i registri di controllo– tratta le caratteristiche a basso livello– fornisce una interfaccia astratta del dispositivo

indipendente dai dettagli hw al resto del sistema operativo

– tipicamente è sviluppato dal costruttore del dispositivo (…)

Page 17: Input/Output

17

Driver dei Dispositivi (3)Tipico funzionamento di un driver :1. Inizializza il dispositivo2. Accetta richieste di operazioni e ne controlla la correttezza3. Gestisce le code delle richieste che non possono essere subito servite4. Sceglie la prossima richiesta da servire e la traduce in una sequenza S di comandi a basso livello da inviare al controllore5. Trasmette i comandi in S al controllore eventualmente bloccandosi in attesa del completamento dell’esecuzione di un comando6. Controlla l’esito di ciascun comando gestendo eventuali errori7. Invia l’esito dell’operazione ed eventuali dati al richiedente

Page 18: Input/Output

18

Driver dei Dispositivi (4)

• Tipicamente le interfacce astratte fornite dai driver vengono classificate in due categorie principali :– interfacce a blocchi (block-oriented) :

• la lettura/scrittura sul dispositivo fisico avviene un blocco alla volta,

• tipicamente i dati scritti vengono bufferizzati nel SO finchè non si raggiunge l’ampiezza di un blocco

• es : dischi, nastri …

Page 19: Input/Output

19

Driver dei Dispositivi (5)

• Tipicamente le interfacce astratte fornite dai driver vengono classificate in due categorie principali (cont.):– interfacce a caratteri (character-oriented) :

• la lettura/scrittura sul dispositivo fisico avviene un carattere alla volta,

• non c’è bufferizzazione, • es : tipicamente tastiera, mouse,• es : si possono avere interfacce a caratteri anche per dischi,

nastri

Page 20: Input/Output

20

Driver dei Dispositivi (6)

• Alcuni driver possono fornire sia interfaccia a caratteri che a blocchi – es. driver del disco

• Le interfacce fissnao un insieme di chiamate di funzioni standard fornite da tutti i driver che le implementano– es. tutti i driver che forniscono una interfaccia a blocchi

forniscono una implementazione di una funzione read() per scrivere/leggere blocchi con formato fissato

Page 21: Input/Output

21

Livelli del sottosistema di I/O

Hardware

Gestori delle interruzioni

Driver dei dispositivi

Software di sistema indipendente dal dispositivo

Software di I/O di livello utente

Modokernel

Modoutente

Page 22: Input/Output

22

Software di I/O Indipendente dal dispositivo (1)

• Funzioni del software di I/O indipendente dal dispositivo– fornire funzionalità di sistema ai driver attraverso

una interfaccia uniforme• es. allocazioni di memoria, etc….

– bufferizzare le informazioni– segnalare, gestire errori– allocare e rilasciare le risorse– ….

Page 23: Input/Output

23

Software di I/O Indipendente dal dispositivo (2)

• Accetta le richieste dal livello utente e invoca il driver opportuno utilizzando le funzioni di interfaccia– problema: come si risale dal nome del dispositivo al

driver?• Fornisce un insieme uniforme di funzioni invocabili

da chi scrive il driver – allocazione di aree di memoria fisica contigua per i buffer– interazione con il controllore DMA, la MMU

Page 24: Input/Output

24

Software di I/O Indipendente dal dispositivo (3)

Gestisce la bufferizzazione dove necessario : (a) Input non bufferizzato, un interrupt per carattere (inefficiente)(b) Input bufferizzato in spazio utente, (occupa RAM utente) (c) Input bufferizzato nel kernel, seguito da una copia in spazio utente (se la seconda è lenta si

possono ancora perdere info)(d) Doppia bufferizzazione nel kernel

Page 25: Input/Output

25

Software di I/O Indipendente dal dispositivo (4)

La bufferizzazione può portare a molte copie durante il cammino dei dati!

Page 26: Input/Output

26

Livelli del sottosistema di I/O

Hardware

Gestori delle interruzioni

Driver dei dispositivi

Software di sistema indipendente dal dispositivo

Software di I/O di livello utente

Modokernel

Modoutente

Page 27: Input/Output

27

Software di I/O in spazio utente• Funzionalità del software di I/O che gira in spazio utente :

– librerie linkabili da programmi utente (es. stdio, unistd ...)• passano i parametri alle SC nel modo giusto• gestiscono la formattazione (es. printf()..)

– spooling• processo utente (demone di stampa)• directory di spool (in cui l’utente copia il file da stampare)