Input Output Principi di gestione dell’hardware di I/O Dispositivi di I/O Gestione dei dischi magnetici Altri dispositivi Principi dell‘hardware di I/O Dispositivi Velocità di trasferimento Keyboard 10 bytes/sec Mouse 100 bytes/sec 56K modem 7 KB/sec Scanner at 300 dpi 1 MB/sec Digital camcorder 3.5 MB/sec 4x Blu-ray disc 18 MB/sec 802.11n Wireless 37.5 MB/sec USB 2.0 60 MB/sec FireWire 800 100 MB/sec Gigabit Ethernet 125 MB/sec SATA 3 disk drive 600 MB/sec USB 3.0 625 MB/sec SCSI Ultra 5 bus 640 MB/sec Single-lane PCIe 3.0 bus Thunderbolt 2 bus 985 MB/sec SONET OC-768 network 5 GB/sec Sistemi Operativi 15/16 • L'hardware di I/O può essere descritto a vari livelli – Ingegneri elettronici – Programmatori – Sistema operativo • Quali sono i moduli che gestiscono l'hardware? – Interfaccia applicativa di I/O – Sottosistema del kernel per I/O – Trasformazione di richiesta di I/O in operazioni hardware • Aspetto importante: le prestazioni 2.5 GB/sec Input Output 2 Dispositivi di I/O • Si distinguono due categorie di dispositivi: 1. dispositivi a blocchi • • • • • • Blocco da 512 byte a 64K Ogni blocco può essere letto e scritto indipendentemente dagli altri. Ogni blocco è identificato da un indirizzo I comandi comprendono read, write, seek L'accesso ai file viene fatto tramite mappatura in memoria Ove possibile l’accesso viene fatto a basso livello oppure con un sistema di file system 2. dispositivi a caratteri • Un dispositivo a carattere non è indirizzabile e non ha alcuna primitiva di posizionamento (seek) • I comandi comprendono get e put • L'editing di linea è possibile mediante librerie ad hoc • • Non tutti i dispositivi di I/O ricadono in questa tassonomia (timer, display mappati in memoria) È fondamentale che il S.O. possa gestire l'I/O indipendentemente dal dispositivo Sistemi Operativi 15/16 Input Output 3 I controllori di dispositivo • • Le unità di I/O: componente elettronica e meccanica La parte elettronica è gestita dal controllore di dispositivo o adattatore • Esempi: controllori – IDE (Integrated Drive Electronics) • (P)ATA ((Parallel) AT Attachment) – SCSI (Small Computer System Interface) – SATA (Serial Advanced Technology Attachment) • Spesso i controllori sono integrati sulle schede madri • Uso di buffer per blocco o sequenze di caratteri Interfaccia Controllore-dispositivo CPU Memoria Dischi Stampante Controllore del disco Controllore stampante Altri controllori Bus di sistema Sistemi Operativi 15/16 Input Output 4 Tipica struttura del bus di un PC Sistemi Operativi 15/16 Input Output 5 I/O • • • Ogni controllore usa un insieme di registri per comunicare con la CPU Su alcuni computer (es. 680x0) i registri sono nel normale spazio di indirizzamento della memoria (I/O mappato in memoria) In altri casi si utilizza uno spazio di indirizzamento separato – Esiste anche un approccio misto • Il S.O effettua l'I/O scrivendo nei registri del controllore Porte di I/O Memoria Buffer di I/O Memoria Memoria Porte di I/O Sistemi Operativi 15/16 Input Output Porte di I/O 6 Accesso diretto in memoria (DMA) • • • • Viene usato per evitare l'I/O programmato e per grandi trasferimenti di dati Richiede un controller di DMA: si trova concettualmente tra la CPU e la memoria Fisicamente è collegato a memoria e CPU tramite bus Consente di scaricare la CPU dal compito di trasferire dati tra il dispositivo di I/O e la memoria Disco CPU Controllore del disco Memoria Valore del contatore Sistemi Operativi 15/16 Buffer Registri DMA Indirizzo di memoria Contatore Input Output 7 I/O gestito da interrupt • • Al termine di ogni operazione di I/O corrisponde un segnale rilavato dal controllore di interrupt Se non vi sono altre interruzioni in corso la richiesta viene gestita immediatamente, altrimenti viene momentaneamente ignorata Sistemi Operativi 15/16 Input Output 8 I/O programmato copia_da_utente(buffer, p, contatore); for(c=0; c<contatore; c++) { while(*stato_stampante != PRONTO); *registro_dati_stampante = p[c]; } ritorna_a_utente(); Sistemi Operativi 15/16 Input Output 9 I/O guidato dalle interruzioni // codice chiamata di sistema copia_da_utente(buffer, p, contatore); abilita_interruzioni(); while(*stato_stampante != PRONTO); *registro_dati_stampante = p[0]; Scheduler(); // codice di servizio di ogni interupt if(contatore == 0) { sblocca_utente(); } else { *registro_dati_stampante = p[c]; contatore = contatore – 1; c = c + 1; } acknowledge_interruzione(); ritorna_da_interruzione(); Sistemi Operativi 15/16 Input Output 10 I/O tramite DMA // codice chiamata di sistema copia_da_utente(buffer, p, contatore); imposta_controllore_DMA(); scheduler(); // codice di servizio interupt acknowledge_interruzione(); sblocca_utente(); ritorna_da_interruzione(); Sistemi Operativi 15/16 Input Output 11 Device Driver • • • • • • Contiene tutto il software dipendente dal dispositivo Impartisce i comandi al controllore e ne verifica il corretto funzionamento Accetta richieste astratte indipendenti dal dispositivo e le traduce in istruzioni dipendenti Scrive nei registri del controllore Il gestore può essere bloccato oppure no. Nel primo caso viene risvegliato da un interrupt Dopo il completamento della operazione di I/O il gestore deve controllare la correttezza dell'operazione Sistemi Operativi 15/16 Input Output 12 SW di I/O indipendente dal dispositivo • • • • • • • • Interfacciamento uniforme dei device driver Assegnamento dei nomi ai dispositivi Protezione dei dispositivi Dimensione del blocco indipendente dal dispositivo Buffering Allocazione della memoria per i dispositivi a blocchi Allocazione e rilascio di dispositivi dedicati Informazioni sugli errori Sistemi Operativi 15/16 Input Output 13 Buffering (a) Input senza uso di buffer (b) Uso di buffer nello spazio utente (c) Uso di buffer nello spazio del kernel seguito dalla copia nello spazio utente (d) Doppio buffer nel kernel Sistemi Operativi 15/16 Input Output 14 Livelli del software di I/O Livello Funzioni di I/O Eseguire chiamate di I/O, formattazione I/O, spooling Processi utente Software indipendente dal dispositivo Driver di dispositivo Gestore delle interruzioni Hardware Richiesta di I/O Sistemi Operativi 15/16 Gestione dei nomi, protezione, bufferizzazione, allocazione Impostazione registri, controllo dello stato Attivazione del driver quando l’I/O è completato Eseguire le operazioni di I/O Risposta di I/O Input Output 15 Clock • • • • I clock o timer servono per gestire il timesharing, per la CPU e per tutta la gestione dei segnali il software per gestire il clock è considerato un device driver I clock più semplici sono collegati all'alimentazione (una interruzione a ogni ciclo di tensione, 50 o 60 Hz) I clock più complessi sono composti da un oscillatore, un contatore e un registro di caricamento (per quelli programmabili) In genere poi vi è un clock di riserva alimentato a batteria Sistemi Operativi 15/16 Input Output 16 Software del clock • • L'hardware genera solo una interruzione ad intervalli definiti Qualunque altra attività deve essere gestita via software generalmente il driver del clock gestisce – L'ora di sistema – La temporizzazione dei processi – L'addebito della CPU – Meccanismi di allarme ed attesa • La gestione degli allarmi può essere fatta tramite una lista ordinata delle richieste di clock pendenti – Funzioni statistiche Sistemi Operativi 15/16 Input Output 17 Ora di sistema • L'ora di sistema (tempo reale) viene normalmente gestita tramite un contatore che misura i tick a partire da un istante di riferimento (per UNIX 1 gennaio 1970) – con un contatore a 32 bit ed una frequenza di clock di 60Hz in due anni si ha un overflow per cui in genere si utilizzano due contatori • contando solo i secondi un contatore è sufficiente per 136 anni, per avere l'equivalente del millenium bug bisogna aspettare fino al ventiduesimo secolo (ma se considero il segno diventa critico il 19 gennaio 2038), in questo caso il numero di tick del secondo corrente viene misurato a parte • Un diverso approccio consiste nel contare i tick, dall'istante di avvio del sistema – se il sistema rimane attivo più di due anni si ha overflow Sistemi Operativi 15/16 Input Output 18 Dischi magnetici Struttura Algoritmi di scheduling Dischi RAID CD-Rom Dischi magnetici • È il dispositivo principale di memorizzazione di massa – memoria non volatile – ottima capacità a prezzi ragionevoli – accesso casuale – tempi di accesso abbastanza lunghi (ordine ms) • Dischi a stato solido – durata di vita più breve – più costosi – accesso casuale uniforme • non hanno bisogno di deframmentazione – tempi di accesso più brevi (decimi di ms) – bassa (o nulla) rumorosità Sistemi Operativi 15/16 Input Output 20 Schema funzionale di un disco ● Componenti elettronici (il controller) ● Conversione analogico-digitale dei segnali ● Strutturazione dei dati (byte, word, blocchi) Sistemi Operativi 15/16 Input Output 21 Struttura logica di un disco • • • tracce cilindri settori – all'interno di una traccia – qualche centinaio sui dischi rigidi – a dimensione fissa o variabile • blocchi – unità di trasferimento tra disco e memoria – deve essere compatibile con le dimensioni dei settori Sistemi Operativi 15/16 Input Output 22 Esempio floppy • • • • • • • • 40 cilindri per disco 2 tracce per cilindro 9 settori per tracce 720 settori per disco 512 byte per settore 360 KB per disco 128 byte per settore 175 KB per disco Sistemi Operativi 15/16 Input Output 23 Tempi di accesso a un disco rigido 1) 2) 3) 4) Tempo di seek tempo necessario per muovere la testina sul cilindro alcuni millisecondi (2-10 ms) Tempo di latenza tempo necessario affinché il settore sia sotto la testina dipende dalla velocità di rotazione 7200 rpm (giri al minuto) = 120 rps 1/120 sec/giro = 8.3 ms/giro Tempo di trasferimento è proporzionale all'ammontare dell'informazione trasferita se una traccia ha 100 blocchi, è pari a 1/100 del tempo di rivoluzione per blocco Tempo medio di accesso tempo medio di seek + tempo medio di latenza + tempo medio di trasferimento Sistemi Operativi 15/16 Input Output 26 DMA e accesso ai dischi • Un controllore che supporta l'accesso DMA deve avere al suo interno: – I registri DMA – Un buffer – I controllori più semplici non riescono a gestire l'input e l'output simultanei: riescono a leggere un blocco ogni due – Per leggere due settori consecutivi sono necessari due rotazioni – Si ovvia a questo inconveniente con la tecnica di Interleaving Sistemi Operativi 15/16 Input Output 27 Interleaving • La numerazione logica dei settori è diversa dall'ordinamento fisico, saltando un (o più) settore si lascia il tempo per il trasferimento dati del precedente 6 5 7 0 4 3 1 2 3 6 7 0 2 5 4 1 2 7 5 0 4 1 3 6 Pendenza di cilindro Sistemi Operativi 15/16 Input Output 28 Algoritmi di scheduling del disco • • • Al disco arrivano delle richieste di lettura - scrittura generate dai processi Tali operazioni possono essere concorrenti o no A prescindere dalla concorrenza, occorre stabilire l'ordine con cui si evadono le richieste al disco È compito del sistema operativo Algoritmi possibili: – First-Come-First-Served (FCFS) – Shortest Seek Time First (SSTF) – SCAN – C-SCAN Sistemi Operativi 15/16 Input Output 29 Algoritmo FCFS • • Le richieste sono evase a seconda del loro tempo di arrivo facilità d'implementazione – Modellizzazione: coda FIFO o tabelle indicizzate • • non introduce problemi di starvation performance – basse prestazioni per accessi frequenti – è sufficiente per sistemi mono-utente Sistemi Operativi 15/16 Input Output 30 Confronto di algoritmi La valutazione si basa su un modello di richieste • distanza totale che deve compiere la testina • tempo richiesto (proporzionale alla distanza) • tempi di latenza e di trasferimento vengono ignorati – perché non possono essere sotto il controllo del S.O – dipendono dall'hardware e dall'ammontare dei dati trasferiti Occorre conoscere le condizioni iniziali • posizione iniziale • direzione di spostamento Sistemi Operativi 15/16 Input Output 31 Algoritmo FCFS sequenza di riferimento: 39 11 75 50 85 52 66 • condizioni iniziali: traccia 45, velocità 10 tracce/ms in direzione di tracce crescenti 0 11 39 45 50 52 66 + + 75 28 + 25 Sequenza di riferimento:+ 35 39 11 75 50 85 52 66 Movimenti della testina 205 + 33 14 + Input Output 99 Distanza Tempo + 6 64 Sistemi Operativi 15/16 85 + 6 0.6 34 3.4 98 9.8 123 12.3 158 15.8 191 19.1 205 20.5 32 Algoritmo SSTF • si evade la richiesta che richiede il tempo di seek inferiore a partire dalla posizione corrente – di solito si comporta meglio del FCFS – si può verificare la starvation: le richieste lontane dal centro ottengono un pessimo servizio 0 11 39 45 50 52 66 + 5 Sequenza di riferimento: 39 11 75 50 85 52 66 + +2 + 99 5 7 13 20 47 + 9 56 + 10 + 66 140 74 Movimenti totali della testina: 140 + Sistemi Operativi 15/16 85 Distanza 27 Sequenza di servizio: 50 52 39 66 75 85 11 75 Input Output 33 Algoritmo dell’ascensore (SCAN) • • la testina si muove da un'estremità all'altra del disco, una variante (LOOK) non sposta la testina fino alla fine ma solo se necessario per soddisfare le richieste pendenti, altrimenti inverte subito il movimento della testina esiste un limite superiore al movimento della testina: – uno spostamento di due volte il numero di tracce necessariamente permette di soddisfare qualunque coda di richieste • performance molto buone per carichi elevati Sistemi Operativi 15/16 Input Output 34 Algoritmo SCAN 0 11 39 45 + 5 50 52 66 75 + 2 + 5 7 + Sequenza di riferimento: 39 11 75 50 85 52 66 21 9 Movimento totale della testina 142 Sistemi Operativi 15/16 40 + 14 60 + 30 + 10 46 + 99 Distanza 14 28 85 + 54 86 114 114 142 Sequenza di servizio: 50 52 66 75 85 39 11 Input Output 35 Algoritmo C-SCAN • • La scansione è sempre nella stessa direzione Tempi di attesa più uniformi rispetto allo SCAN – Esiste la variante C-LOOK 0 11 39 45 + 5 50 52 66 75 85 99 Distanza + 2 + 14 Sequenza di riferimento: 39 11 75 50 85 52 66 Movimento totale della testina 192 5 7 + 21 9 + 10 30 40 + 14 + 11 + 28 Sistemi Operativi 15/16 + 99 Sequenza di servizio: 50 52 66 75 85 11 39 Input Output + 54 153 164 192 36 Scelta di un algoritmo • • • • • • Le prestazioni dipendono dal numero e dal tipo di richieste È una grande semplificazione alcuni algoritmi di basso livello sono implementati dal controller quindi sfuggono dal controllo del SO La posizione dei blocchi indice sono importanti Le informazioni più utilizzate sono messe nelle tracce centrali L'allocazione di file influenza le prestazioni Può essere utile mettere in cache una traccia intera – vantaggio: si ottimizzano le prestazioni (meno trasferimenti) – la cache può essere gestita dal dispositivo o dal sistema operativo Sistemi Operativi 15/16 Input Output 37 Gestione degli errori su disco • Generalmente è il driver del disco che gestisce gli errori che possono essere: – errori di programmazione (richiesta di settori inesistenti) – errori di checksum (transitori) – errori di checksum (permanenti) – errori di posizionamento (recalibrate) • Gestione dei settori danneggiati Sistemi Operativi 15/16 Input Output 39 RAID • Redundant Array of Independent/Inexpensive Disk – più dischi sono combinati in unico disco logico gestito dal sistema operativo – ogni disco contiene una fetta (strip) dei dati RAID può essere realizzato a livello di SO o di dispositivo Sistemi Operativi 15/16 Input Output 40 RAID 0 (non-ridondante) • • Alta capacità di trasferimento dati, se i trasferimenti riguardano grandi quantità di dati logici contigui Basso tempo di risposta, se il numero di richieste è alto per piccole quantità di dati Sistemi Operativi 15/16 Input Output 42 RAID 1 (mirrored) • • • presenta il vantaggio collaterale di permettere una velocità di lettura doppia le operazioni di scrittura sono doppie, ma parallele è facile sostituire componenti difettose Disco 0 Disco 1 Backup Backup Dati Sistemi Operativi 15/16 Input Output Dati 43 RAID 2 • • • Memorizzazione ridondante tramite un codice Hamming Buon trasferimento di dati, scarsa frequenza di accesso I dischi spesso sono sincronizzati Sistemi Operativi 15/16 Input Output 44 RAID 3 • • Un solo bit di parità Buon trasferimento di dati, scarsa frequenza di accesso Sistemi Operativi 15/16 Input Output 45 RAID 4 • • • Parità di blocco (come RAID 0 + parità) Trasferimento di dati non ottimo Possibile collo di bottiglia sul disco di parità Sistemi Operativi 15/16 Input Output 46 RAID 5 • La parità è distribuita RAID 6 – aggiunge maggiore ridondanza, può gestire guasti su più dischi Sistemi Operativi 15/16 Input Output 47 RAID 0 + 1 • • Il livello 0 fornisce le prestazioni Il livello 1 l'affidabilità Sistemi Operativi 15/16 Input Output 48 RAID 1 + 0 Sistemi Operativi 15/16 Input Output 49 Struttura di un CD o CD-ROM Velocità costante lungo la spirale Sistemi Operativi 15/16 Input Output 52 Struttura logica dei dati 2048 byte su 7203 (588*98/8) 153600 byte/s (X1) Sistemi Operativi 15/16 Input Output 53 Esercizi Scheduling del disco Scheduling del disco Analizzare la successione di accessi alle tracce con gli algoritmi SSTF, SCAN, C-LOOK 20, 51, 8, 75, 37, 96 posizione iniziale 65, verso le tracce alte, il numero totale di tracce è 100. Valutare il tempo necessario per l'evasione delle richieste, se sono necessari 0.1 ms per lo spostamento da una traccia a quella contigua. Cosa cambia se dopo 3 ms arrivano le seguenti richieste? 35, 83 Sistemi Operativi 15/16 Input Output 56 Scheduling del disco FCFS: (65,) 20, 51, 8, 75, 37, 96, [35, 83] SSTF: (65,) 75, 96, [83], 51, 37, [35], 20, 8 SCAN: (65,) 75, 96, 99, [83], 51, 37, [35], 20, 8 C-SCAN: (65,) 75, 96, 99, 0, 8, 20, [35], 37, 51, [83] LOOK: (65,) 75, 96, [83], 51, 37, [35], 20, 8 C-LOOK: (65,) 75, 96, 8, 20, [35], 37, 51, [83] Sistemi Operativi 15/16 Input Output 57 Scheduling del disco FCFS: (65,) 20, 51, 8, 75, 37, 96, [35, 83] SSTF: (65,) 75, 96, [83], 51, 37, [35], 20, 8 Sistemi Operativi 15/16 Input Output 59 Scheduling del disco SCAN: (65,) 75, 96, 99, [83], 51, 37, [35], 20, 8 LOOK: (65,) 75, 96, [83], 51, 37, [35], 20, 8 Sistemi Operativi 15/16 Input Output 60 Scheduling del disco C-SCAN: (65,) 75, 96, 99, 0, 8, 20, [35], 37, 51, [83] C-LOOK: (65,) 75, 96, 8, 20, [35], 37, 51, [83] Sistemi Operativi 15/16 Input Output 61 Scheduling del disco Analizzare la successione di accessi con l'algoritmo SSTF 45 61 31 55 91 98 34 posizione iniziale 40, il numero totale di tracce è 100. Valutare il tempo necessario per l'evasione delle richieste, se sono necessari 0.1 ms per lo spostamento da una traccia a quella contigua. Cosa cambia se dopo 2 ms arriva la richiesta 70? Sistemi Operativi 15/16 Input Output 62 Scheduling del disco SSTF: (40,) 45 55 61 34 31 91 98 SSTF: (40,) 45 55 61 70 91 98 34 31 (considerando 70) Sistemi Operativi 15/16 Input Output 63 Scheduling del disco Schedulazione del disco: analizzare la successione di accessi alle tracce con gli algoritmi SSTF, LOOK 159, 97, 183, 49, 128, 7, 130, 32, 120 posizione iniziale 69, il movimento è verso le tracce alte, le tracce sono numerate da 0 a 199. Valutare il tempo necessario per l'evasione delle richieste, se è necessario un tempo di 0.1 ms per lo spostamento da una traccia a quella contigua, le ultime 3 richieste arrivano dopo 6ms. Sistemi Operativi 15/16 Input Output 64 Scheduling del disco 159, 97, 183, 49, 128, 7 - 130, 32, 120 Sistemi Operativi 15/16 Input Output 65