|
Appunti informatica |
|
Visite: 1237 | Gradito: | [ Medio appunti ] |
Leggi anche appunti:La velocità: una misura difficileLa velocità: una misura difficile Cosa vuoi dire che un processare è migliore Cd-audioCd-audio Nel giugno del 1980 è stato presentato sul mercato un rivoluzionario Il computer al servizio del progresso dell'umanitàIl computer al servizio del progresso dell'umanità La nostra era moderna, |
LA GESTIONE DELLE PERIFERICHE
Il modulo del sistema operativo preposto al device management ovvero alla gestione delle periferiche, delle unità di controllo e di quelle di canale deve svolgere le seguenti funzioni :
Ricordiamo che : se una periferica è assegnata a livello di lavoro, essa gli viene associata al processo al momento in qui questo viene creato e ad esso rimane associata fin quando il processo esiste. Se una periferica è assegnata a livello di processo, essa viene assegnata solo per il tempo strettamente necessario.
CONTROLLORE DEL TRAFFICO DI I/O.
Il modulo che si preoccupa di controllare e tenere aggiornato lo stato delle periferiche (e dei canali) è il "controllore del traffico I/O" (I/O traffic controller).
Il C.D.T. in ogni istante deve essere in grado di conoscere la disponibilità dei canali e delle periferiche e decidere a quale processo tra quelli in attesa assegnare il canale o la periferica richiesti.
Per fare questo deve consultare e tenere aggiornate due tabelle :
Il Controllore del traffico di I/O si avvale di un algoritmo che gestisce la politica di assegnazione delle periferiche ai processi o ai lavori. Questo algoritmo chiamato Schedulatore di I/O (I/O scheduler) viene interpellato dal c.d.t. ogni volta che viene mandato in esecuzione un processo o sottoprocesso di I/O.
L'effettivo trasferimento fisico delle informazioni tra il sistema e la periferica avviene per mezzo di un programma posto in memoria di massa detto Handler della periferica (driver?) che ha il compito di creare i programmi di canale, di inizializzare l'operazione di I/O e di ottimizzare i tempi di trasmissione.
Poiché in un ambiente multiprogrammato, le periferiche possono essere richieste contemporaneamente da più processi attivi, per mantenere elevato i rendimento del sistema e massimizzarne l'uso si deve ricorrere a particolari tecniche di gestione :
E' un sistema di allocazione utilizzato per quelle periferiche che possono essere usate solo serialmente quindi quando servono un processo non possono servire nessun altro processo. Questo sistema di allocazione prevede all'assegnazione della periferica a livello di lavoro, ovvero per l'intera durata dello stesso nessun'altro processo potrà utilizzarla. Il lato negativo di questo tipo di assegnazione è chiaro : anche se la risorsa (periferica) rimarrà inutilizzata per diverso tempo, essa non è utilizzabile da altri processi.
Questa modalità di assegnazione è quella messa in pratica per la maggior parte delle risorse che quindi possono essere utilizzate "parallelamente" da più processi (un esempio è il disco fisso : i processi di i/o non interf. Tra loro):
Questo è possibile grazie a due fattori :
L'attuazione di questo sistema di allocazione prevede l'assegnazione dinamica della risorsa ai vari processi per il solo tempo necessario al suo uso e per mezzo di una politica di assegnazione a priorità che tenga conto delle caratteristiche dei processi. Per garantire meccanismi di protezione, nei moderni S.O. le operazioni di I/O vengono definite come privilegiate cioè possono avvenire solo tramite intermediazione del S.O. che controlla se la richiesta del processo è lecita.
La difficoltà della gestione delle periferiche dedicate ha suggerito la possibilità di convertirle in risorse compartite in modo da far avanzare in maniera parallela i processi che le richiedono.
In pratica vengono simulate le periferiche tramite delle opportune aree di memoria di massa nelle quali memorizzare i dati diretti alla periferica. Sarà compito dei programmi di SPOOL (Simultaneous Peripheral Operations On Line) dirottare i dati diretti alla periferica verso le aree del disco consentendo al processo di proseguire il suo task e successivamente, quando la periferica si libera di trasferire i dati dall'area del disco alla periferica.
In un sistema operativo, Il modulo di gestione delle periferiche ha anche il compito di sovrintendere alle operazioni dei canali di I/O i quali sono dei processori dedicati che eseguono particolari programmi detti programmi di canale.
Anche se sarebbe desiderabile disporre di un processore di canale per ogni tipo di periferica, questo non è possibile per gli elevati costi di implementazione; quindi il loro numero è molto minore rispetto a quello delle periferiche.
E' intuitivo che per poter effettuare un trasferimento dati tra la memoria e una periferica è indispensabile che siano unite da una linea di trasmissione eventualmente condivisa da più dispositivi.
In questo caso il controllore del traffico di I/O dovrà verificare lo stato di ogni dispositivo presente sulla linea consultando la lista dei descrittori delle periferiche e la lista dei descrittori dei canali.
In considerazione del fatto che se un canale è utilizzato da un dispositivo, non sarebbe possibile raggiungere gli altri dispositivi connessi allo stesso canale sono state sviluppate delle tecniche per minimizzare questo fenomeno:
Adottare delle periferiche indipendenti significa usare periferiche dotate di particolari dispositivi che le rendono in grado di effettuare alcune operazioni necessarie per il trasferimento senza l'assistenza del processori di canale. In questo modo, mentre la periferica operata autonomamente, il processori di canale può essere utilizzato per inizializzare una nuova operazione di I/O.
In considerazione del fatto che il processore di canale più quindi servire più processi è necessario sincronizzare le operazioni di I/O su tutte le periferiche collegate allo stesso canale.
A tale scopo si usano opportuni segnali di interruzione che vengono attivati ogni volta che un dispositivo (canale o periferica) ha terminato il proprio lavoro.
Queste interruzioni, dette interruzioni di fine I/O vanno a modificare alcuni bit della parola di stato del canale (channel status word) definendo quindi lo stato di ciascuno dei componenti presenti sulla linea di trasmissione rendendo quindi disponibile l'informazione di tutti i dispositivi disponibili per nuove operazioni.
In particolare il segnale di fine uso del canale porrà a 0 il bit relativo al processore di canale, ma lasciando invariato quello della periferica che sta ancora lavorando autonomamente, mentre il segnale fine operazione di I/O porrà a 0 sia il bit del processore di canale che quello della periferica rendendo disponibile l'intera linea.
Sono dotate di un'area di memoria autonoma (buffer) su cui depositare temporaneamente i dati nel corso delle operazioni di I/O. Questo riduce di tempi morti legati alla minore velocità della periferica rispetto al sistema e di conseguenze limitare l'uso del canale al solo tempo necessario al trasferimento dei dati.
Una terza tecnica che consente di superare le limitazioni imposte dal collegamento diretto tra periferica e canale è quella di disporre di più collegamenti fisici tra canali e dispositivi rendendo quindi la periferica utilizzabile indipendentemente dalla disponibilità di un particolare canale.
Questa tecnica è detta delle linee multiple. Se si potesse avere un linea di collegamento tra una periferica e tutti i processori di canale saremo certi che per accedere a tale periferica basterebbe avere anche un solo canale disponibile. Questo però non è praticamente possibile per via dell'alto costo di implementazione del collegamenti, ma ci si limita a implementare linee multiple di collegamento con quelle periferiche maggiormente usate e il cui funzionamento influenza fortemente il rendimento del sistema (per esempio le unità disco).
Per sfruttare appieno le potenzialità delle periferiche indipendenti e bufferizzate è possibile usare dei canali multiplexati in maniera tale da avere una sorta di "multiprogrammazione" a livello di I/O consentendo al processori di canale di servire "contemporaneamente" più programmi. Non appena la periferica (bufferizzata o indipendente)
Non richiede l'intervento diretto del processore di canale quest'ultimo viene dirottato su un altro programma.
Le periferiche condizionano maggiormente l'efficienza di un sistema informatico sono indubbiamente le unità disco che rappresentano le memorie di massa più utilizzate.
E' quindi comprensibile come l'ottimizzazione dei tempi medi di accesso al disco grazie ad una corretta politica di gestione delle richieste dei processi (politiche di schedulazione) possa incidere in modo non trascurabile sui tempi di risposta dei singoli programmi.
Le politiche di schedulazione si basano sommariamente su principi simili a quelli esposti per la schedulazione dei processi; vengono però applicate ai processi in coda di attesa alla periferica allo scopo di determinare in modo più veloce per servire le richieste di accesso.
Nella realizzazione degli algoritmi di schedulazione del disco (politiche di schedulazione) occorre tenere presenti i fattori che influenzano il tempo di risposta della periferica :
La maggior parte degli algoritmi tende ad ottimizzare soprattutto i tempi di seek che sono molto più gravosi di quelli di latenza e trasferimento.
I sistemi di schedulazione più diffusi sono :
Schedulazione FCFS (First Come First Served)
Questa strategia non prevede alcun ordinamento o analisi di priorità tra i processi in attesa, semplicemente i processi vengono serviti nell'ordine in cui hanno richiesto la risorsa : inizialmente il primo, poi il secondo e così via. E' molto semplice da implementare poiché in pratica si tratta di una coda FIFO (first in first out). E' intrinsecamente imparziale , ma non offre un buon tempo di risposta dato che le testine sono spesso costrette a muoversi senza razionalità sulla superficie del disco in accordo con le tracce richieste dai singoli processi.
Schedulazione SSTF (Shortest Seek Time First)
Con questa strategia viene servita per prima la richiesta che indirizza verso la traccia più vicina a quella su cui si trova già posizionata la testa, ovvero la richiesta che genera il minor spostamento della testina.
Questo algoritmo privilegia fortemente le richieste localizzate e penalizza molto quelle distribuite sulla superficie del disco dando luogo a possibili starvation.
Fornisce un tempo medio di risposta migliore del FCFS, ma può essere ancora migliorato.
Schedulazione SCAN (politica dell'ascensore)
E' un'evoluzione del SSTF , quindi la selezione del processo da servire si basa sempre sul minore "seek time", ma vengono considerati però i processi che richiedono l'accesso a settori raggiungibili mantenendosi nella direzione corrente del movimento della testina. La direzione non viene cambiata finchè non si raggiunge l'estremità della superficie del disco. La testina quindi esegue una scansione continua del disco da un'estremità all'altra, prima in una direzione poi nell'altra.
Schedulazione C-SCAN (Circular SCAN)
Questa strategia è una variante della SCAN ed'è stata progettata per avere tempi di attesa più uniformi. La differenza rispetto alla SCAN consiste nel fatto che una volta raggiunta l'estremità del disco, invece di percorrerlo nel senso opposto (come la SCAN) torna immediatamente all'inizio ripercorrendo la superficie nello stesso verso. In pratica le tracce del disco vengono considerate come una lista circolare in cui all'ultima traccia segue la prima.
Schedulazione C-LOOK (Circular LOOK)
E' una versione migliorata del C-SCAN. A differenza di questo, infatti, la testina non arriva all'estremità opposta del disco, ma inverte direzione dopo aver servito l'ultima richiesta e prosegue poi a servire in senso opposto partendo dalle richieste più vicine all'altro estremo. In pratica non raggiunge i cilindri che stanno agli estremi se non i sono richieste per quei cilindri.
Appunti su: |
|