LA GESTIONE DELLA I/O Il S.O. È l interfaccia tra l hardware e i programmi che effettuano richieste di I/O Sottosistema di I/O strutturato in moduli chiamati DRIVER uno per ogni dispositivo I Driver rendono uguali le modalità con cui i processi vedono i dispositivi e in cui i dispositivi sono gestiti dal S.O.
DRIVER Un driver è un programma che permette al S.O. Di scambiare inform. con i componenti HW o con disp. Esterni collegati al computer Un insieme di Driver standard viene fornito con il S.O Ogni produttore di periferiche allega un CD con driver specifici e ottimizzati per il proprio prodotto
Dispositivi logici o Canali I processi interagiscono con i dispositivi logici Ad ogni dispositivo fisico è associato un dispositivo logico Ai disp.fisici sono associate routine di basso livello ai dispositivi logici (Canali ) sono associate funzionalità di alto livello (open, read..) Gli scrittori di driver di ogni particolare periferica sono obbligati a rispettare gli standard di interfacciamento imposti dal S.O.
l hardware di I/O Tutte le periferiche di I/O si connettono al calcolatore mediante tre tipologie di componenti hardware Hw di comunicazione (porta) Hw di trasmissione (bus) Hw di interfaccia (controller)
Bus Pur essendo fisicamente unico può essere suddiviso a seconda della tipologia di segnali che porta in: ABUS (address) indirizzo del dispositivo a cui si intende accedere DBUS (data) dato che deve essere trasferito CBUS (control) controllano la comunicazione tra CPU e i vari dispositivi
Controller(hw di interfaccia) Componenti elettronici (più o meno complessi) che svolgono la funzione di adattamento(sia elettrico che logico) tra le periferiche ed il calcolatore Ogni controller ha generalmente tre registri Reg. di stato della periferica(letto dal computer libero/occupato) Reg. di controllo (scritto dal computer per specificare il tipo di op. da svolgere) Reg. dati (la CPU legge/scrive in questo reg i dati)
1. Attesa attiva o Polling I/O a controllo di programma: la CPU inizia, dirige e termina l operazione di I/O rimanendone in attesa del completamento Handsharing (stretta di mano) La cpu continua a leggere il bit busy del dispositivo finchè non lo trova sul valore 0 (disponibile) Specifica il comando nel registro di controllo e setta il bit command-ready a 1, così che la periferica se ne accorga e lo esegua Il Controller mette a 1 il bit busy (occupato) ed esegue il comando Tutti i dati vengono scambiati tramite una porta di lettura/scrittura Terminata l esecuzione vengono azzerati entrambi i bit
Attesa attiva o Polling Vantaggi Semplicità e basso costo tecnica --> utilizzabile in sistemi piccoli e poco complessi Svantaggi Scarso sfruttamento della CPU impegnata per la maggior parte del tempo nell esecuzione del ciclo di polling E difficile introdurre il concetto di urgenza
2. Interrup La periferica manda un segnale di interrupt quando è pronta La CPU verifica lo stato delle linee di richiesta dopo l esecuzione di ogni istruzione Se il controller gli ha mandato un segnale, la CPU salva i valori del Program counter e il contenuto del registro di stato e segnala l accettazione della richiesta Riconosce il tipo e passa il controllo alla relativa procedura di gestione dell interrupt Eseguite le operazioni relative all I/O, la CPU ripristina lo stato precedente l interrupt eseguendo l istruzione successiva a quella interrotta Vengono utilizzati anche per realizzare trap (interruzioni sw)
Riconoscimento degli interrupt Salto ad indirizzo fisso Esiste un unico segnale di INT. È compito della ruotine di gestione eseguire una scansione in polling dei registri di controllo di tutte le periferiche Segnali multipli Esiste un diverso indirizzo di mem. per ogni INT, che contiene l indirizzo a cui si trova la particolare routine di gestione Interruzione vettorizzata Il segnale di INT è unico, ma sul bus dati, la periferica interessata invia un codice con il quale si identifica
Interrupt Vantaggi Maggiore flessibilità, possibilità di gestire priorità e annidamenti Svantaggi Può passare del tempo dal momento in cui viene generato l interrupt all istante in cui viene riconosciuto Parte del tempo CPU viene impiegato per effettuare il salvataggio/ripristino dei registri
DMA-Direct Memory Access Viene utilizzato un disp. Hw (DMAC Controller) contenente un processore specifico capace di trasferire blocchi di dati tra la memoria e una periferica operando direttamente sul bus di mem. che lancerà un interrupt a trasferimento compiuto. Indirizzo base Indirizzo porta periferica lunghezza Controllo (codici errori)
Altri servizi del sottosistema di I/O I/O scheduling: trovare un ordine efficiente per eseguire le richieste di I/O Buffering: si provvede a memorizzare in opportune aree di memoria (buffer) i dati in input o in output prima degli opportuni trasferimenti Caching: memoria veloce nella quale si mantiene copia dei dati più recentemente usati Spooplig: (buffer su memoria di massa) dispositivo virtuale realizzato da un file su disco. Quando un processo chiude il proprio dispositivo virtuale il file viene trasferito al dispositivo fisico da un processo di sistema (spooler) che offre agli utenti la possibilità di vederlo /cancellarlo /sospenderlo