|
Appunti informatica |
|
Visite: 1960 | Gradito: | [ Picolo appunti ] |
Leggi anche appunti:Gestione dei dispositiviGESTIONE DEI DISPOSITIVI Introduzione In ogni sistema di elaborazione Il dispositivo Bus/MemoriaIl dispositivo Bus/Memoria I campi relativi alla configurazione di un bus sono Interfaccia col pilota umanoInterfaccia col pilota umano 1.1 Obiettivi I |
In ogni sistema di elaborazione i Device Driver permettono l'accesso ai dispositivi periferici; Però accade talvolta (soprattutto nei sistemi multiprogrammati e distribuiti) che più processi o job richiedano contemporaneamente di accedere ad uno stesso dispositivo o che quest'ultimo non sia disponibile. I Device Driver non sono concepiti per risolvere problemi di questo tipo, percui un sistema operativo deve affiancare ai Device Driver altri software in grado di implementare un'efficace politica di gestione delle periferiche. Questi moduli software si possono inquadrare a livello 3 della rappresentazione a cipolla (Gestione dell' I/O), le cui principali funzioni sono le seguenti:
Controllare lo stato delle periferiche
Decidere la politica di assegnazione del dispositivo ai programmi
Allocare la risorsa e dare inizio all'operazione di I/O
Rilasciare la periferica
Controlla lo stato dei dispositivi per avere presente la situazione delle periferiche (disponibili/occupate)
Decide a quale processo richiedente assegnare il dispositivo libero, predisponendo il percorso che conduce al dispositivo.
Tra i compiti principali del sistema operativo è la gestione dei canali e delle unità di controllo.
Canale:
E' un particolare processore dedicato alle operazioni di I/O per superare i problemi della diversa velocità tra cpu e periferica (fig. 3.2)
Questo schema prevede l'utilizzo di tre canali diversi:
Canale multiplexato Riesce a servire simultaneamente piùdispositivi (è utilizzato da periferiche a bassa velocità)
Canale selettore Con tale canale viene servito un solo dispositivo alla volta (Dispositivi I/O ad alta velocità)
Canale multiplexato a bloccchi Viene eseguita un' istruzione di I/O alla volta per ognuna delle periferiche (in pratica è una sorta di compromesso tra gli altri due)
Molte periferiche sono dotate di una untià di controllo che ne regola l'attivita, in modo da ottenere una soluzine semplice ede econimica. In pratica più periferiche uguali vengono accumunate ad un'unica unità di controllo e quindi il canale non è più connesso direttamente ai disposotivi, ma deve selezionere l'uintà di controllo a cui il dispositivo è associato (figura 3.3).
Il controllo del traffico è assegnato all'I/O traffic controller, il quale è responsabile di un lavoro molto complesso, in quanto un percorso può liberarsi anche solo parzialmente (esempio: Canale libero, u.c. e periferiche occupatte).
L'I/O traffic controller esegue le seguenti attività:
Determina se un Paths è disponibile
Determina se più Paths sono disponibili insieme
Determina se un paths occupato si libererà
Per fare ciò il traffic controller utilizza un database che fornisce una mappa degli stati e e delle connessioni (fig. 3.4).
In sostanza quando il traffic controller vuole vedere se un paths è libero interroga la U.c.b. (Unit control bloc) per ricavare lo stato della peiferica desiderata. Quindi se è libero verifica a quale unità di controllo la èpeiferica è collegata e tramite la C.c.b. (Channel control block) rileva lo stato del canale. Se anche l'u.d.c. è libera si consulta i c.c.b. in modo da identificare un percorso libero.
Nela caso che un apparato I/O abbia una configurazione asimmetrica (fig. 3.5)
Il traffic controller deve rilevare la presenza di percorsi contemporaneamente disponibili. per fare ciò il trffic controller deve prevedere all'interno dei blocchi che costituiscono il suo database, un campo in cui mantenere una lista di processi in attesa. In questo modo per ogni periferica, canale o unità di controllo è possibile trovare un insieme di eventuali processi interessati all'utilizzo del dispositivo.
L'ALLOCAZIONE DEI DISPOSITIVI
A questo punto entra in gioco la IO Scheduler il cui compito principale è quello di risolvere le contese tra i processi, stabilendo una gerarchia tra le richieste inoltrategli, cioè i dispositivi con i relativi PATHS. La IO Scheduler ha dei concetti uguali a quelli del Job Scheduling tranne che la possibilità di interrompere e riprendere l'operazione di IO. I processi richiedenti mantengono le stesse priorità assegnategli dal Process Scheduler in modo che un Job con alta priorità avrà la stessa priorità anche sulla risorsa. A questo punto si può allocare la risorsa, quindi attiveremo il driver del dispositivo, attivando anche il canale. Adesso avrà luogo la IO fisico e poi la deallocazione della risorsa.
Queste operazioni seguono regole ben precise che cambiano da sistema a sistema, ma comunque sono raggruppabili in tre tipi a seconda dei dispositivi:
Dispositivi dedicati: sono quei dispositivi che non possono essere utilizzati da più utenti contemporaneamente. In questo caso vengono allocati ad un processo fini a quando questo non cessa la sua attività.
Questa tecnica viene usata raramente perché la risorsa rimarrebbe inaccessibile per un lungo
periodo di tempo, o i PATHS per altri dispositivi potrebbero risultare bloccati.
Dispositivi condivisi: sono quei dispositivi che permettono l'accesso a più processi. In questo caso il dispositivo viene diviso in più aree di utilizzo, ognuna delle quali simula un dispositivo dedicato. Questa tecnica risolve i problemi della precedente ma sovraccarica il S.O.
Dispositivi virtuali: in questa tecnica i dispositivi reali vengono simulati utilizzando dispositivi di memoria. La IO fisico verrà svolto successivamente rispetto allo IO logico.
DISPOSITIVI VIRTUALI:
BUFFERING E SISTEMI DI SPOOL
La virtualizzazione delle periferiche ci permette di sincronizzare le attività dei processi( alta velocità) con quella delle periferiche( bassa velocità). L'idea è quella di simulare la periferica con un dispositivo ad alta velocità( per esempio un banco di memoria). Con questa tecnica si eliminano i tempi morti sia nell'utilizzo della periferica sia nell'esecuzione del processo.
La tecnica del buffering prevede, per ogni processo che necessita del dispositivo, la presenza, in memoria centrale, di un buffer attraverso il quale transita il flusso dei dati.
Guardando la figura notiamo una generica operazione di input: viene eseguito il programma di canale impostato dal driver della periferica, per leggere dati e memorizzarli nel buffer. A questo punto il processo può prelevare i dati dal buffer e la risorsa verrà liberata. Con questo metodo la risorsa può essere associata a più processi, e i dati verranno memorizzati nei relativi buffer.
Il processo di buffering ha un limite nell'utilizzo di buffer rigidi, che possono risultare o insufficienti ( a contenere tutti i dati ) o sovradimensionati (con una diminuzione della memoria dedicabile ad altri scopi). Quindi sarebbe meglio utilizzare una struttura dinamica. Questo è quello che avviene nei sistemi di spool (Simultaneus Peripherical Operation On Line). In questo metodo i buffer vengono sostituiti da files memorizzati sul disco. Entrano in gioca anche dei processi consumatori ( SPOOLER) che si dividono in:
Spooler di uscita: leggono i files e inviano alla periferica dati.
Spooler d'ingresso: leggono dalla periferica e scrivono sui files i dati.
La gestione dei files varia a seconda dei casi: o si scelgono prima i files relativi ai processi con maggiore priorità oppure quelli più corti.
Con questo metodo abbiamo il vantaggio dell'utilizzo di una struttura dinamica che non va preventivamente dimensionata. Inoltre ci permette di utilizzare politiche di gestione diverse, non adattabili con i buffer (strutture strettamente sequenziali). Un altro vantaggio e quello della non volatilità dei dati, infatti anche dopo un improvviso spegnimento del sistema i dati rimangono salvati.
Appunti su: schema a blocchi per la gestione di un27aula multimediale, |
|