Gestione delle periferiche
Le periferiche sono dispositivi che permettono le operazioni di input/output.
Si possono classificare in base alle: Operazioni consentite input, output, i/o Funzione memorizzazione, comunicazione, interazione Accesso sequenziale, semicasuale o diretto
Ogni periferica ha bisogno di un: Controller circuiti che controllano il funzionamento, interno o esterno alla periferica Driver programma di gestione che consente al s.o. di controllare il funzionamento dell’hardware.
Nella gestione delle periferiche il sistema operativo deve: Controllare l’esecuzione delle operazioni sui dispositivi per conto dei processi. Assegnare i dispositivi ai processi che li richiedono secondo un’opportuna politica di schedulazione.
Il primo compito è realizzato dal nucleo che si occupa della gestione dei segnali di sincronizzazione e della trasmissione delle informazioni ai dispositivi. Le politiche di schedulazione sono attuate dai gestori dei dispositivi.
La gestione delle periferiche è complessa perché i dispositivi sono molto più lenti del processore e sono asincroni; inoltre essendo meno affidabili richiedono una gestione dei malfunzionamenti e degli errori.
Per garantire la protezione, i programmi non possono eseguire direttamente le operazioni di I/O sulle periferiche, devono richiedere un servizio al sistema operativo.
Quando il programma richiede una operazione di I/O (generando una interruzione di tipo sw) il sistema passa da stato utente a stato supervisore, mentre il processo passa in stato di attesa quindi il s.o. controlla l’esecuzione di tutte le operazioni.
Nei sistemi di grandi dimensioni le operazioni di I/O possono essere affidate a processori specializzati chiamati processori di I/O o canali.
Per eseguire un’operazione di I/O su una periferica bisogna che sia disponibile la periferica e un canale. Se ci sono più processi in attesa di utilizzare un canale, lo schedulatore di I/O deve scegliere quale processo avviare.
Allocazione periferiche Seriale se assegnata in modo dedicato a un processo per tutta la sua durata (stampanti) Condivisa se assegnata a più processi in modo dinamico per il tempo necessario ad effettuare una operazione di I/O ( hard disk)
Schedulazione dei dispositivi L’assegnazione delle periferiche ai processi è stabilita in base ad un algoritmo di schedulazione. Priorità assegnata ai processi di I/O Caratteristiche dei dispositivi (hard disk)
Hard disk l’hard disk è costituito da una pila di dischi che ruotano attorno ad un asse comune. Le informazioni sono memorizzate su ogni facciata lungo le tracce concentriche. Ogni traccia è divisa in archi chiamati settori, separati da una zona chiamata gap. Un cilindro è dato dalle tracce equidistanti dall’asse di rotazione.
Ad ogni operazione di lettura o scrittura viene letto o scritto un intero settore. Ogni settore è individuato da un indirizzo costituito da numero di cilindro, numero di traccia e numero di settore. Il tempo di accesso è chiamato diretto o semicasuale.
Il tempo di accesso dipende: Tempo di seek Tempo di latenza Tempo di trasferimento
Le politiche di schedulazione di accesso al disco cercano di minimizzare soprattutto i tempi di seek (spostamento della testina).
Politiche di schedulazione FCFS ( first come first served) SSTF ( shortest seek time first) SCAN o politica dell’ascensore C-SCAN (circular scan) N- SCAN
FCFS (first come first served ) Le diverse richieste sono servite secondo l’ordine di arrivo, le testine si muovono casualmente sulla superficie del disco.
SSTF (shortest seek time first) Serve per prima la richiesta che si riferisce alla traccia più vicina a quella su cui è posizionata la testina. Privilegia le richieste localizzate, non è equa nei confronti dei processi.
SCAN Sceglie la richiesta con tempo di seek minore ma sempre nello stesso verso del movimento della testina. La tesina si muove prima in una direzione, poi raggiunto una estremità si muove in direzione contraria.
C-SCAN E’ una variante dello SCAN, il braccio della testina si muove in modo circolare, dopo aver raggiunto una estremità torna all’inizio. Schedulazione più equa della scan.
N-SCAN Variante dello SCAN. Divide le richieste in più code di lunghezza N; mentre una coda è servita, le nuove richieste sono inserite nelle altre code, che poi verranno servite ciclicamente.
DISPOSITIVI VIRTUALI Una unità virtuale è un’applicazione che simula le funzionalità di una unità fisica. Sono usate per permettere a più applicazioni di usare contemporaneamente una unità fisica.
L’unità virtuale conserva le informazioni sullo stato dell’unità per ogni applicazione. Quindi ogni applicazione può essere eseguita come se avesse una unità dedicata.
SPOOL (Simultaneous Peripheral Operations On Line) Per le periferiche che devono essere usate in modo dedicato (stampanti) può essere simulata l’allocazione condivisa utilizzando la tecnica di allocazione a periferiche virtuali.
Con questa tecnica l’operazione di I/O non ha un effetto realmente sulla periferica ma agisce su un area del disco che simula la periferica (file di spool).
Il collegamento tra periferica virtuale e periferica reale viene realizzato dai programmi di SPOOL che si occupano del trasferimento da e verso la periferica di ogni file di spool messo in coda.
Se più processi richiedono l’uso della stampante, ad ognuno di essi viene associato un file su disco in cui vengono memorizzate le informazioni da stampare.
Solo quando il processo è terminato il file di spool può essere mandato alla stampante e cancellato dal disco. Se la stampante è occupata il file di stampa viene posto in una coda di stampa.
Vantaggi Utilizzo efficienti delle stampanti lavorano alla massima velocità Eliminazione del ritardo per i processi stampano subito usando un dispositivo virtuale Possibilità di ordinare le stampe in attesa