47
1 Input/Output

1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

Embed Size (px)

Citation preview

Page 1: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

1

Input/Output

Page 2: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

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: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

3

I controllori dei dispositivi

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

Monitor

Bus

Page 4: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

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: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

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: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

6

Memory-Mapped I/O

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

Page 7: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

7

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 8: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

8

Accesso diretto alla memoria DMA (2)

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

Page 9: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

9

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 10: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

10

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 11: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

11

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 12: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

12

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 13: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

13

Driver dei Dispositivi (1)

Page 14: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

14

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 15: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

15

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 16: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

16

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 17: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

17

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 18: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

18

Driver dei Dispositivi (6)

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

• Le interfacce fissano 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 19: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

19

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 20: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

20

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 21: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

21

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 22: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

22

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 23: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

23

Software di I/O Indipendente dal dispositivo (4)

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

Page 24: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

24

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 25: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

25

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)

Page 26: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

26

Alcuni esempi di dispositivi

Disco rigido, RAID, video

Page 27: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

27

Hardware del disco (1)

Struttura di un disco rigido

Braccio (direzioni movimento)

Testine (una per superfice)

Superfici 0

1

Page 28: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

28

Hardware del disco (2)

• Ogni superficie è divisa in tracce concentriche (una per ogni possibile posizione della testina)

traccia

settore

Unità minima diinformazione leggibile/scrivibileAmpiezza standard:512 byte

Page 29: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

29

Hardware del disco (3)

• Geometria fisica di un disco con due zone • Una possibile geometria virtuale per lo stesso disco

Page 30: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

30

RAID

• Redundant Array of Independent Disks• Sfrutta il parallelismo per rendere l’accesso al

disco più veloce• Il controllore RAID mostra l’array come un unico

disco al resto del sistema• I dati sono distribuiti sui dischi in modo da

favorire le letture parallele di parti dello stesso file– diverse strategie : RAID livello 0, 1, ….

Page 31: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

31

Hardware di un RAIDOgni strip è una fetta di k

settori consecutivi

Bit di parità

Dischi di backup

Page 32: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

32

Hardware di un RAID (2)

Drive di parità

La parità viene calcolata come XOR delle stripe corrispondenti

Distribuisce anche le parità

Page 33: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

33

preambolo dati ECC

Codici correttori di errore :dati in più per accorgersi se la lettura è andata bene

dati

Permette alla testina di capire chesta iniziando un nuovo settore, fornisceil numero del settore etc

Formattazione del disco

• Formattazione a basso livello : Struttura di un settore

Page 34: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

34

Formattazione del disco (2)

Una illustrazione del cylinder skew (pendenza del cilindro)

Page 35: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

35

Formattazione del disco (3)

• Se il controllore dispone di buffer limitato (un settore) è necessario tenerne conto nella formattazione

• Controllori più moderni hanno buffer di almeno una traccia

Senza Interleaving

Singolo Interleaving

Doppio Interleaving

Page 36: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

36

Formattazione del disco (4)• Partizionamento : tipicamente nei PC

– Master Boot Record (settore 0)– Codice di boot, tabella delle partizioni– partizione di boot marcata attiva

• Formattazione ad alto livello– inserisce un file system vuoto nella partizione– boot block (primo blocco della partizione)

• Al boot– BIOS carica ed esegue MBR– caricamento boot block della partizione attiva– caricamento ed esecuzione SO memorizzato nella partizione

Page 37: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

37

Gestione dello spazio disco (1)• Praticamente tutti i file system:

– dividono i file in blocchi di ampiezza fissata ed eseguono letture e scritture su blocchi o multipli

– i blocchi non sono contigui su disco

• Problema 1 : come scegliere l’ampiezza del blocco?– Blocchi piccoli usano meglio lo spazio disco

• diminuiscono la frammentazione interna

– Blocchi grandi velocizzano gli accessi• diminuiscono seek e rotational delay

Page 38: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

38

Alcuni esempi di dispositivi (2)

Disco rigido, RAID

Page 39: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

39

Hardware del disco (2)

Parametri del floppy disk del PC originale di IBM (anni 80) e di un disco rigido Western Digital WD 18300 (2000)

Page 40: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

40

Algoritmi di scheduling per il braccio (1)

• Il tempo necessario per leggere o scrivere un blocco è determinato da tre fattori

– Tempo di seek – Ritardo rotazionale (Rotational Delay) Tempo di trasferimento vero e proprio

• Ad una nuova richiesta RD deve essere pagato comunque

• Il tempo di seek dipende dalla distanza : – viene ottimizzato dagli alg. di scheduling

Page 41: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

41

Algoritmi di scheduling per il braccio (2)

L’algoritmo di scheduling Shortest Seek First (SSF)

Posizione iniziale

Richiestependenti

Page 42: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

42

Algoritmi di scheduling per il braccio (3)

L’algoritmo di scheduling “dell’ascensore”

Posizione iniziale

Page 43: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

43

Gestione dello spazio disco • Problema 2 : come tenere traccia dei blocchi liberi

su disco ?– Free list

• lista concatenata di blocchi pieni di indirizzi di blocchi liberi

– Bitmap• una mappa di bit con un bit per ogni blocco

• es. 0 blocco libero, 1 blocco in uso

• mantiene la contiguità dei blocchi (allocare un file su blocchi vicini diminuisce il tempo di seek in letture consecutive

Page 44: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

44

Gestione dello spazio disco (3)

Free list Bitmap

Page 45: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

45

Affidabilità di un file system

• Problemi legati all’hw del disco– settori difettosi

• sostituzione con spare sectors

– blocchi corrotti • raccolti in file fittizi (bad block files)

Page 46: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

46

Gestione degli errori del disco

• Una traccia con un settore difettoso • Sostituzione del settore difettoso con un settore di

riserva • Slittamento dei settori per evitare quello difettoso

Page 47: 1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo

47

Affidabilità di un file system (2)

• Backup periodici– copia delle informazioni del FS per poterle

utilizzare in caso di • crash del disco, alluvioni etc ...

• cancellazioni accidentali

– backup fisico • si copiano tutti i blocchi del disco (su tape o altro)

– backup logico• si copiano file e directory modificati dopo una certa data