Silberschatz and Galvin 1999 12.1 Operating System Concepts Il sistema di I/O Hardware di I/O...
-
Upload
azzolino-fois -
Category
Documents
-
view
216 -
download
1
Transcript of Silberschatz and Galvin 1999 12.1 Operating System Concepts Il sistema di I/O Hardware di I/O...
Operating System Concepts Silberschatz and Galvin1999 12.1
Il sistema di I/O
• Hardware di I/O
• Interfaccia di I/O per le applicazioni
• Sottosistema per l’I/O del kernel
• Trasformazione delle richieste di I/O in operazioni dell’hardware
• Prestazioni
Operating System Concepts Silberschatz and Galvin1999 12.2
Hardware di I/O
• Esiste una incredibile varietà di dispositivi di I/O.
• Concetti comuni:
– Porta
– Bus (daisy chain o accesso diretto condiviso)
– Controller (host adapter)
• Le istruzioni di I/O controllano i dispositivi.
• I dispositivi hanno indirizzi usati da:
– Istruzioni dirette di I/O
– Memory-mapped I/O
Operating System Concepts Silberschatz and Galvin1999 12.3
Polling
• Determina lo stato di un dispositivo:– command-ready– busy– error
• Si ha un ciclo busy-wait per attendere l’I/O dal dispositivo.
Operating System Concepts Silberschatz and Galvin1999 12.4
Interrupt
• La linea di richiesta dell’interrupt della CPU viene settata dal dispositivo di I/O.
• Il gestore di interrupt (interrupt–handler) riceve gli interrupt.
• Alcuni tipi di interrupt possono essere mascherati, per ignorarli definitivamente o rimandarne il servizio.
• Il vettore degli contiene gli indirizzi di memoria dei gestori specializzati.
– Basato su priorità
– Alcuni sono non mascherabili
• Il meccanismo di interrupt viene impiegato anche per le eccezioni.
Operating System Concepts Silberschatz and Galvin1999 12.5
Ciclo di I/O guidato da interrupt
Operating System Concepts Silberschatz and Galvin1999 12.6
Accesso diretto alla memoria – DMA
• Viene impiegato per evitare l’I/O programmato (PIO) per trasferimenti di grandi quantità di dati.
• Richiede un controller di DMA.
• Si evita così di sovraccaricare di compiti la CPU: è il controller di DMA che si occupa di trasferire i dati direttamente tra il dispositivo di I/O e la memoria.
Operating System Concepts Silberschatz and Galvin1999 12.7
Passi di un trasferimento DMA
Operating System Concepts Silberschatz and Galvin1999 12.8
Interfaccia di I/O per le applicazioni
• Le chiamate di sistema di I/O incapsulano i comportamenti dei dispositivi in classi generali.
• Lo strato dei driver dei dispositivi nasconde al sottosistema di I/O del kernel le differenze fra i controller dei dispositivi di I/O.
• I dispositivi possono differire per molteplici aspetti:
– Character–stream o block–stream (trasferimento a flusso di caratteri o di blocchi);
– Accesso sequenziale o casuale;
– Dispositivo sincrono o asincrono, condivisibile o dedicato;
– Velocità di funzionamento;
– Lettura e scrittura, sola lettura o sola scrittura.
Operating System Concepts Silberschatz and Galvin1999 12.9
Dispositivi con trasferimento a blocchi o a caratteri
• Dispositivi con traserimento a blocchi comprendono principalmente drive di dischi:
– Il dispositivo comprende istruzioni del tipo read, write, seek;
– Raw I/O (I/O di basso livello);
– Possibilità di accesso ai file mappato in memoria.
• Dispositivi a caratteri comprendono tastiere, mouse, porte seriali:
– Comandi classici sono get, put;– Con l’uso di librerie appropriate permettono l’accesso per
righe e la gestione di un buffer.
Operating System Concepts Silberschatz and Galvin1999 12.10
Dispositivi di rete
• Variano molto dai dispositivi per il trasferimento di I/O a blocchi e/o caratteri fino a presentare una propria interfaccia specifica.
• Unix e Windows/NT comprendono un’interfaccia socket:
– Separa il protocollo di rete dalle operazioni di rete;
– Include la funzionalità select.
• Gli approcci variano molto (pipe half–duplex, FIFO full–duplex, stream full–duplex, code di messaggi, socket)
Operating System Concepts Silberschatz and Galvin1999 12.11
Clock e Timer
• Forniscono il tempo corrente, il tempo trascorso, regolano un timer per avviare l’operazione X al tempo T.
• Se impiega un interval timer per la tempificazione: con questo meccanismo è possibile avere interrupt periodici.
• La system call ioctl (su UNIX) controlla vari aspetti di I/O come clock e timer.
Operating System Concepts Silberschatz and Galvin1999 12.12
I/O bloccante e non bloccante
• I/O bloccante: il processo viene sospeso fino al completamento dell’operazione di I/O.
– Facile da usare e da comprendere;– Per alcuni scopi è insufficiente.
• I/O non-bloccante: la chiamata ad I/O ritorna appena possibile (dopo aver iniziato il trasferimento di dati).
– Utile per processi utente, e per trasferimento dati, ad esempio da disco a schermo (I/O bufferizzato);
– Viene implementato per mezzo di multi-threading;– Ritorna rapidamente con il numero di byte letti o scritti.
• I/O asincrono: il processo prosegue mentre avviene l’I/O. – Difficile da usare;– Il sottosistema di I/O segnala al processo il completamento
dell’I/O.
Operating System Concepts Silberschatz and Galvin1999 12.13
Sottosistema di I/O del kernel
• Scheduling
– Alcune richieste di I/O sono ordinate per mezzo di code in ciascun dispositivo;
– Il sistema operativo è equo: nessuna applicazione deve ricevere un servizio carente, da maggiore priorità ad applicazioni inficiate da un ritardo nel servizio.
• Buffering: si memorizzano i dati in memoria mentre avviene il trasferimento fra dispositivi.
– Utile per gestire la differenza di velocità dei dispositivi;
– Per gestire la differenza di dimensione dei blocchi di trasferimento dei dispositivi;
– Per mantenere la “semantica di copia”.
Operating System Concepts Silberschatz and Galvin1999 12.14
Kernel I/O Subsystem
• Caching: una regione di memoria veloce che serve per mantenere copie di certi dati. L’accesso a queste copie è più rapido che l’accesso agli originali.
• Spooling: è un buffer contenente output per un dispositivo che non può accettare flussi interfogliati di dati (ad esempio, una stampante).
• Prenotazione di un dispositivo: fornisce accesso esclusivo ad un dispositivo.
– System call per allocazione e deallocazione dei dispositivi;
– Responsabilità di evitare i deadlock.
Operating System Concepts Silberschatz and Galvin1999 12.15
Gestione degli errori
• Un sistema operativo che usi la protezione della memoria può recuperare varie situazioni di errore, ad esempio, errori di lettura di un disco, errori per dispositivi non disponibili o errori di scrittura momentanei.
• La maggior parte dei sistemi operativi restituisce un codice di errore quando una richiesta di I/O fallisce.
• I file log di errori possono essere consultati per avere statistiche sul funzionamento del sistema.
Operating System Concepts Silberschatz and Galvin1999 12.16
Strutture dati del kernel
• Il kernel mantiene informazioni sullo stato dei componenti coinvolti nelle operazioni di I/O, come la tabella dei file aperti e la tabella delle socket.
• Moltissime strutture dati complesse tengono traccia dell’allocazione dei vari buffer, dell’allocazione della memoria e dei blocchi “dirty”.
• Alcuni sistemi operativi utilizzano metodologie object-oriented e message passing per l’implementazione dell’I/O.
Operating System Concepts Silberschatz and Galvin1999 12.17
Trasformazione delle richieste di I/O in operazioni hardware
• Si consideri la lettura di un file su disco da parte di un processo:
– Si determina il dispositivo su cui il file è memorizzato;
– Si opera la traduzione fra nome del dispositivo e suo driver fisico;
– Si leggono i dati dal disco in un buffer;
– Si rendono i dati disponibili al processo che li ha richiesti;
– Si ritorna il controllo al processo richiedente.
Operating System Concepts Silberschatz and Galvin1999 12.18
Schema di esecuzione di una richiesta di I/O
Operating System Concepts Silberschatz and Galvin1999 12.19
Prestazioni
• L’I/O è un fattore fondamentale per le prestazioni dell’intero sistema:
– Richiede un notevole impegno della CPU per l’esecuzione del codice dei driver e per lo scheduling dei processi;
– Produce numerosi context switch dovuti agli interrupt;
– Sovraccarica il bus della memoria durante i trasferimenti di dati tra i controller e la memoria fisica e tra i buffer del kernel e lo spazio di indirizzamento delle applicazioni.
Operating System Concepts Silberschatz and Galvin1999 12.20
Comunicazione fra computer
Operating System Concepts Silberschatz and Galvin1999 12.21
Come migliorare le prestazioni
• Ridurre il numero di context switch.
• Ridurre il numero di trasferimenti di dati.
• Ridurre il numero di interrupt, trasferendo grossi volumi di dati, utilizzando controller intelligenti e polling.
• Utilizzare il DMA
• Equilibrare le prestazioni della CPU, della memoria, del bus e dell’I/O, dato che il sovraccarico di una componente qualsiasi provoca il basso utilizzo delle altre.