ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le...

19
Gestione dell'Input/Output Dispositivi di Input/output L'Input/Output (I/O) esegue le operazioni di trasferimento dei dati tra la memoria centrale e i dispositivi periferici. Possiamo classificare i dispositivi di I/O in: dispositivi per l'interazione tra uomo e macchina :video, tastiere, mouse, microfoni, altoparlanti; dispositivi per il trasferimento dei dati tra sistemi : il modem o la scheda Ethernet; dispositivi per la memorizzazione permanente, non volatile, dei dati: le unità adisco magnetico, i lettori di DVD e di CD ROM, i masterizzatori di CD o DVD, le unità a nastro magnetico; dispositivi per il controllo di apparati e per la ricezione di dati da apparati : il dispositivo che attiva il motore della centrifuga di una lavatrice e opera sotto il controllo di un microprocessore, l’attuatore che agisce sulle pinze dei freni di un sistema frenante ABS o, infine, il sistema che controlla un reattore nucleare in base al valore di diversi parametri rilevati dagli strumenti di misura. L'efficienza delle operazioni di I/O è di grande importanza per il funzionamento dell'intero sistema, per il file manager, perché: influisce sulla rapidità della risposta alla richiesta di informazioni ricercandole nei file su disco, influisce sulla gestione della memoria virtuale , dove l'I/O è rilevante per lo swapping delle pagine. La gestione dell'l/O è complicata dalla grande varietà dei dispositivi gestiti, con diverse prestazioni e con tempi e modalità di servizio differenti. È difficile determinare una strategia di servizio uniforme; inoltre il software di sistema diventa più complesso. Architettura di Input/Output Un moderno computer è composto: da uno o più processori, dalla memoria centrale, dai dispositivi periferici, dalle schede per il collegamento alle reti di comunicazione da una struttura di interconnessione, detta bus di sistema, per il collegamento delle parti del computer. I dispositivi periferici veri e propri (la tastiera e il video), sono collegati al bus di sistema tramite controllori del dispositivo o schede di controllo del dispositivo . Le informazioni necessarie per operare un trasferimento di dati tra l'unità centrale e le periferiche:

Transcript of ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le...

Page 1: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Gestione dell'Input/Output

Dispositivi di Input/output

L'Input/Output (I/O) esegue le operazioni di trasferimento dei dati tra la memoria centrale e i dispositivi periferici. Possiamo classificare i dispositivi di I/O in:

dispositivi per l'interazione tra uomo e macchina :video, tastiere, mouse, microfoni, altoparlanti; dispositivi per il trasferimento dei dati tra sistemi: il modem o la scheda Ethernet; dispositivi per la memorizzazione permanente, non volatile, dei dati: le unità adisco magnetico, i lettori di

DVD e di CD ROM, i masterizzatori di CD o DVD, le unità a nastro magnetico; dispositivi per il controllo di apparati e per la ricezione di dati da apparati: il dispositivo che attiva il motore

della centrifuga di una lavatrice e opera sotto il controllo di un microprocessore, l’attuatore che agisce sulle pinze dei freni di un sistema frenante ABS o, infine, il sistema che controlla un reattore nucleare in base al valore di diversi parametri rilevati dagli strumenti di misura.

L'efficienza delle operazioni di I/O è di grande importanza per il funzionamento dell'intero sistema, per il file manager, perché:

influisce sulla rapidità della risposta alla richiesta di informazioni ricercandole nei file su disco, influisce sulla gestione della memoria virtuale, dove l'I/O è rilevante per lo swapping delle pagine.

La gestione dell'l/O è complicata dalla grande varietà dei dispositivi gestiti, con diverse prestazioni e con tempi e modalità di servizio differenti. È difficile determinare una strategia di servizio uniforme; inoltre il software di sistema diventa più complesso.

Architettura di Input/Output

Un moderno computer è composto:

da uno o più processori, dalla memoria centrale, dai dispositivi periferici, dalle schede per il collegamento alle reti di comunicazione da una struttura di interconnessione, detta bus di sistema, per il collegamento delle parti del computer.

I dispositivi periferici veri e propri (la tastiera e il video), sono collegati al bus di sistema tramite controllori del dispositivo o schede di controllo del dispositivo.

Le informazioni necessarie per operare un trasferimento di dati tra l'unità centrale e le periferiche:

Scrittura : il controllore del disco deve conoscere i dati da scrivere e la posizione del disco deve scrivere questi dati. Il controllore scrive i dati sul disco e informa l'unità centrale dell’avvenuta operazione inviando un segnale di interruzione. Esso modifica opportuni flag per segnalare l’eventuale presenza di errori e la disponibilità a ricevere altri dati.

Lettura dal disco: il controllore riceve dall'unità centrale l'ordine di leggere e la posizione sul disco dei dati da leggere. Il controllore esegue l'operazione, richiede di accedere al bus e invia i dati letti al processore. Modifica opportuni bit di stato per segnalare la disponibilità a eseguire altre operazioni.

Un computer è un insieme di componenti: la memoria, il processore e i moduli di Input/Output che comunicano tra di loro. Un modulo di Input/Output consiste in un dispositivo che riceve e trasmette segnali che rappresentano:

Dati Indirizzi segnali per il controllo del dispositivo stesso.

La figura mostra un modulo di Input/Output che riceve e invia segnali: la doppia freccia grigia indica che il controllore del dispositivo, oltre a dialogare con gli altri moduli del computer, interagisce con la periferica controllata per lo scambio dei dati.

Page 2: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Dal punto di vista del controllore, i segnali possono essere suddivisi in:

segnali in ingresso , cioè i dati ricevuti dal processore e dalla periferica, gli indirizzi che specificano la posizione dei dati nel dispositivo e i segnali di controllo, per esempio leggi e scrivi.

segnali in uscita , cioè i dati inviati al processore e alla periferica, i segnali di interruzione e di controllo, per esempio la richiesta di accesso al bus.

1. Il collegamento “punto a punto” serve per la comunicazione tra i due dispositivi collegati. 2. La struttura di connessione a bus serve per la comunicazione di più dispositivi collegati con un mezzo di

trasmissione condiviso.

Nei computer moderni ci sono diversi bus con differenti caratteristiche.

Il bus di sistema è Il bus che collega le componenti principali del computer.Un bus di sistema è formato da un insieme di 100 - 200 linee per la trasmissione dei differenti tipi di segnali. Le linee del bus di sistema sono suddivisi in:

linee per i dati, linee indirizzi linee per il controllo dei dispositivi.

Le linee dati formano il bus dati composto da 16, 32, 64 o più linee che permettono il trasferimento in parallelo di 16,32,64 o più bit. Il numero di linee dati definisce l'ampiezza del bus. Se un processore a 64 bit che è collegato alla memoria con un bus dati a 32 bit per trasferire un dato di 64 bit dalla memoria al processore servono due cicli di bus.

Le linee di indirizzo specificano l’origine o la destinazione предназночение dei dati e permettono di indirizzare i dati in memoria. L’ampiezza del bus indirizzi definisce anche la dimensione dello spazio di memoria fisica indirizzatile.

Le linee di controllo servono per il controllo dei dispositivi e l'accesso al bus. I segnali del bus di controllo servono a specificare:

il tipo di operazione in memoria (leggi o scrivi), il tipo di operazione su un dispositivo di I/O (leggi o scrivi), la richiesta di accesso al bus, la richiesta che il bus è stato concesso, per inviare un segnale di interruzione per il processore per segnalare che il processore deve essere interrotto.

La richiesta per usare il bus è inviata a un apposito hardware per l'arbitraggio del bus che decide a chi concederne l’uso. L'arbitraggio del bus può essere:

centralizzato , quando è attuato da un apposito modulo hardware, distribuito se il controllo è attuato dall'hardware dei controllori che accedono al bus.

Il trasferimento dei dati tra le componenti del sistema avviene nel seguente modo:

un dispositivo che vuole inviare dati >>> richiede l’uso del bus >>> dopo averlo ottenuto, pone i dati da trasmettere nel bus dati >>> specifica nel bus indirizzi la loro destinazione;

un modulo del computer che vuole ricevere dei dati , per esempio il processore >>> richiede l'uso del bus>>> dopo averlo ottenuto, invia segnali di controllo al dispositivo interessato al trasferimento >>> Il dispositivo è identificato >>> specifica l’indirizzo nella linea indirizzi del bus di sistema >>> Il modulo che richiede i dati deve aspettare che i dati siano inviati.

Un'architettura di bus con molti dispositivi collegati da un solo bus può degradare le prestazioni del sistema a causa dell’affollamento dell’unico percorso di trasmissione: si aumenta il tempo di propagazione dei segnali, la frequenza di accesso al bus diminuisce. Contemporaneamente la numerosità dei dispositivi può portare alla saturazione del bus, costringendo i dispositivi attendere che il bus sia libero per ottenerne l’accesso. Il problema può essere risolto:

sia con l'aumento della velocità del bus, ricorrendo quindi a una migliore tecnologia, sia aumentando l’ampiezza del bus per ridurre il numero di accessi dei dispositivi.

Page 3: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

realizzare un sistema di interconnessione con più bus che operano in parallelo.

Adesso si usa un'architettura di bus multipli organizzati in una struttura gerarchica. Il vantaggio:

riduce l'uso del bus di sistema per gli accessi alla memoria permette trasferimenti diretti tra le unità periferiche e la memoria senza l’uso del processore.

I diversi tipi di bus multipli di un personal computer:

Il bus della memoria che collega il processore con la memoria centrale e con la memoria cache: in questo modo il percorso dei dati tra memoria e processore è separato dal traffico dei segnali che viaggiano sul bus di sistema.

Il bus di sistema al quale sono collegati i dispositivi con elevato transferrate, per esempio i dischi, i video collegati con una scheda grafica e le interfacce per l'accesso alle reti locali, per esempio le interfacce SCSI, SATA, USB.

Il bus di espansione ISA (Industry Standard Architccture) è un bus sviluppato da IBM e commercializzato a partire dal 1981. Con un transferrate di 16,67 MB/sec è attualmente superato dalle prestazioni dei più recenti bus PCI, e non è adottato da alcun costruttore per i computer ad uso d'ufficio e domestici, ma è ancora usato per le schede di connessione di alcuni dispositivi periferici usati in particolari settori industriali.

Il bus PCI (Peripheral Component Interconnect) è il bus di sistema usato nei computer più recenti. Progettato da Intel all'inizio degli anni ’90. Transfer rate iniziale da 133 MB/sec a 4266 MB/sec.

L'interfaccia SCSI (Small Computer System Interface) nelle versioni recenti permette un transfer rate di 640 MB/sec.

L'interfaccia SATA (Serial ATA, Serial Advanced Technology Attachment) è un'evoluzione dell'interfaccia parallela ATA nota come Parallel ATA, o P-ATA, e indicata come interfaccia IDE o EIDE (Enhanced Integrated Drive Electronic). Transfer rate di ATA nelle versioni più aggiornate arriva a 133 MB/sec, transfer rate di SATA fino a 768 MB/sec.

L'interfaccia USB (Universal Serial Bus) è un collegamento seriale, cioè è in grado di trasferire un bit alla volta, con transfer rate fino a 600 MB/sec. Le porte USB permettono di collegare dispositivi esterni: mouse e tastiere, dispositivi ad alta velocità quali dischi esterni, fotocamere digitali.

La nuova interfaccia rispetta i seguenti requisiti:

L’utente non deve impostare il settaggio di microinterruttori o ponticelli sulle schede di connessione o sui dispositivi medesimi, e non è necessario aprire il computer per installare nuovi dispositivi e collegarli negli alloggiamenti sulla scheda madre.

Tutti i dispositivi sono collegati con lo stesso tipo di cavo e il cavo di connessione può fornire anche l’alimentazione ai dispositivi stessi.

L’interfaccia permette il collegamento di più dispositivi, fino a 127. È anche possibile collegare i dispositivi “a caldo", cioè a computer funzionante, senza la necessità di riavviare il sistema dopo il collegamento.

Il bus ha un basso costo di produzione.

Il bus USB, progettato per il collegamento a dispositivi lenti, nelle prime versioni aveva una velocità di trasferimento di 1,5 MB/sec. Il bus USB si collega al bus di sistema tramite un hub radice dotato di prese alle quali connettono i dispositivi di I/O o altri hub, realizzando una serie di collegamenti a cascata con una struttura ad albero.

I cavi di collegamento sono costituiti da 4 fili:

due dei quali sono usati per la trasmissione dei segnali i due rimanenti per l'alimentazione della periferica.

II bus USB si basa su un protocollo master/slave per comunicare con i dispositivi periferici ad esso collegati. Le comunicazioni sono controllate in modo centralizzato e avviene solo tra sistema centrale e unità periferiche: le unità periferiche collegate al sistema con le porte USB non possono stabilire un collegamento diretto fra di loro.

Page 4: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Come funziona:

Il collegamento di un dispositivo a una presa USB viene rilevato dall'hub radice che invia un segnale di interruzione al processore.

La routine di gestione dell'interruzione di questo evento interroga il dispositivo per individuarne le caratteristiche e la velocità di collegamento.

La routine di gestione assegna dinamicamente un indirizzo, nell'intervallo 1-127 al nuovo dispositivo e lo memorizza nei registri del dispositivo stesso.

Tutti i dispositivi USB sono poi gestiti da un unico driver.

Con questa tecnica il dispositivo è configurato dinamicamente dal sistema e l'utente non deve eseguire altre operazioni oltre a collegare l’unità periferica alla presa.

Operazioni di I/O, moduli di I/O e controllori

Le operazioni di Input/Output riguardano il trasferimento dei dati tra l'unità centrale e le unità periferiche. L'interazione tra periferia e unità centrale avviene per mezzo dei controllori della periferica, cioè con dispositivi specializzati nella gestione delle periferiche. Per il processore il disco magnetico è un'unità alla quale invia i dati, o dalla quale riceve i dati, in blocchi, o record fisici, per 4 KB. l’intero disco è un array di blocchi. Un'operazione di I/O che coinvolge il disco usa una System cali, con il significato di: o

Dove:

NumeroBlocco indica la posizione dei dati su disco Buffer è l'area di memoria che contiene i dati da scrivere su disco o dove sono ricevuti i dati letti.

Il controllore del dispositivo trasforma il numero del blocco in base alla geometria del disco in:

cilindro, superficie numero di settore.

Il controllore tiene conto:

degli eventuali settori difettosi dei settori distribuiti nei cilindri del disco.

Il controllore di un dispositivo è dotato di opportuni registri, porte, che variano per numero e composizione da dispositivo a dispositivo, ma che si possono suddividere in due gruppi:

porte con la funzione di buffer per il trasferimento dei dati tra processore e periferica; porte con la funzione di registri per il controllo del dispositivo e per raccogliere le informazioni sullo stato del

dispositivo. Le informazioni per il controllo del dispositivo contengono flag per specificare l’operazione che la periferica deve eseguire (lettura/scrittura), oppure per inviare segnali di interruzione al processore.

Le operazioni di Input/Output sono eseguite, al livello del linguaggio macchina, trasferendo informazioni tra i registri della CPU e le porte dei controllori con comandi come i seguenti:

Il processore invia segnali di controllo e dati al controllore e riceve dal controllore informazioni di stato e dati. Analogamente il controllore invia comandi e informazioni all'unità di I/O e riceve informazioni di stato e dati dal dispositivo vero e proprio. Il dialogo tra processore e controllore e l’interazione tra controllore e unità periferica sono due processi che evolvono in parallelo e devono essere controllati e sincronizzati.

Le modalità del controllo delle attività di Input/Output:

I/O a controllo di programma, I/O guidato dalle interruzioni, I/O con dispositivo di accesso diretto alla memoria, I/O a canale.

Page 5: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

I/O a controllo di programma: il processore gestisce il trasferimento dei dati leggendo i registri di stato del controllore per sapere quando è pronto per ricevere o trasmettere dati. Il controllo del dispositivo avviene in un ciclo di attesa attiva nel quale il processore controlla il valore di un apposito bit del registro di stato. Quando il controllore è pronto a ricevere o trasmettere dati, il trasferimento viene eseguito usando i registri del processore e le porte del controllore.

I/O a controllo di programma:

1.il processore gestisce il trasferimento dei dati leggendo i registri di stato del controllore per sapere quando è pronto per ricevere o trasmettere dati

2.Il controllo del dispositivo avviene in un ciclo di attesa attiva nel quale il processore controlla il valore di un apposito bit del registro di stato

3.il trasferimento viene eseguito usando i registri del processore e le porte del controllore.

Si usa in un sistema monoprogrammatoLo svantaggio: il processore è dedicato all'esecuzione di un singolo processo e non può fare altro fino al suo fine

I/O guidato dalle interruzioni

1.il processo prepara i dati di output, poi attiva la periferica. La periferica, dopo aver eseguito l'operazione di I/O, invia un segnale di interruzione al processore.

2.Il processore completata l’esecuzione, riconosce il segnale di interruzione e invia un segnale alla periferica per indicare che ha ricevuto il segnale di interruzione, quindi esegue la routine di gestione dell’interruzione (ISR).

3.La routine di servizio dell'interruzione del dispositivo riattiva il processo in attesa. Progetto 1 in libro

Si usa in un sistema multiprogrammatoLo svantaggio:processore è continuamente interrotto perché deve eseguire il trasferimento dei dati dalla porta del controllore alla memoria.

I/O con accesso diretto alla memorianei computer moderni è stato introdotto il DMA (Direct Memory Access), un dispositivo che gestisce autonomamente il trasferimento dei dati tra l'unità periferica e la memoria non usando la CPU.

1.Il processore carica alcuni registri del DMA con le informazioni necessarie ad operare il trasferimento 2.Il DMA esegue il trasferimento dei dati3. Il DMA, dopo aver completato il trasferimento, invia un segnale di interruzione al processore.

Il DMA agisce sotto il controllo del processore che informa DMA sull'origine, la destinazione e la quantità di dati da trasferire e poi lascia DMA. DMA opera il trasferimento da solo.

La gestione del N/O con il DMA coinvolge il processore solo all'inizio e alla fine del trasferimento dei dati. Il processore deve in ogni caso preparare i dati da trasmettere e deve gestire le eventuali situazioni di errore.

Si usa in un sistema multiprogrammato

Page 6: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

I/O a canale Il canale è un dispositivo DMA potenziato che esegue programmi posti nella memoria del processore (programmi di canale).

Il canale è un processore specializzato nell'esecuzione delle istruzioni di I/O. Quando il canale ha una propria memoria locale per l’esecuzione dei programmi di I/O si chiama processore di Input/Output, per indicare il fatto che il canale è un vero e proprio computer autonomo, specializzato nell'eseguire operazioni di I/O.

1.Il processore lascia al canale il compito di eseguire una serie di procedure di Input/Output poste in memoria centrale. 2.Il canale esegue autonomamente le istruzioni in memoria centrale e, 3. Il canale al termine dell'esecuzione informa il processore con un segnale di interruzione.

Si usa in un sistema multiprogrammato

4. Software di Input/Output

Gli obiettivi del software di I/O del sistema operativo:

L’efficienza delle operazioni: Poiché il software di Input/Output interviene nella gestione delle operazioni con il disco, la sua efficienza è molto importante anche per il file System e la gestione della memoria virtuale.

un software di I/O più semplice, con meno errori, più facile da sviluppare e da mantenere.

Per raggiungere questi obiettivi il software di Input/Output è strutturato in un insieme di livelli interagenti.

Il processo dell'utente e l'unità periferica si scambiano dati indirettamente, attraverso un serie di livelli così organizzati:

Il software dell’utente effettua alcune operazioni preliminari предварительные e, per iniziare I/0 traduce il comando di I/O in una richiesta al sistema operativo. Il sistema operativo mette a disposizione del livello superiore una serie di servizi di I/O, che si traducono in opportune API di I/O (Application Programming Interface di I/O).

Un primo livello delle azioni del sistema operativo, indicato come livello dell'Input/Output logico, è il software indipendente dal dispositivo che ha lo scopo di uniformare le operazioni che devono essere eseguite per ogni tipo di dispositivo. I dispositivi sono trattati come file e identificati con un nome simbolico. Il software implementa azioni del tipo:

a) Open, per stabilire un legame tra dispositivo e processo, b) dose, per terminare l'accesso del processo al dispositivo, c) Read, Write, Rewind, per le operazioni di lettura, scrittura e riposizionamento dall'inizio. d) la gestione dello SPOOL e) la bufferizzazione dei dati.

Un livello inferiore , il software dipendente dal dispositivo ha il compito di nascondere al livello superiore i dettagli delle operazioni sullo specifico dispositivo. Il software dipendente dal dispositivo tratta le operazioni tramite i driver dei dispositivi, cioè i software specializzati nella gestione dei dispositivi.

Il livello delle interruzioni, della schedulazione delle operazioni di I/O e dell'interazione diretta con il dispositivo è un livello ancora più basso che fa la gestione del dispositivo fisico vero e proprio.

I dispositivi di I/O possono essere classificati in dispositivi a blocchi e dispositivi a caratteri.

I dispositivi a blocchi , come i dischi e i nastri, registrano i dati in blocchi di dimensione fissa e il trasferimento dei dati avviene per blocchi.

I dispositivi a carattere , come le stampanti e le tastiere, trattano l'Input/Output come un flusso di caratteri non strutturato.

Software di I/O dell’utente

Page 7: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Al livello del software dell’utente l'Input/Output avviene con comandi del tipo:

Read(File,Buffer,Len) Write(File,Buffer,Len)

dove:

File identifica, con un nome simbolico, il dispositivo origine o destinazione del trasferimento; Buffer è una variabile con i dati da trasferire alla periferica o dove ricevere i dati inviati dalla periferica; Len è il numero di caratteri da trasferire.

Le azioni eseguite a questo livello sono implementate dai compilatori dei linguaggi di programmazione, che eseguono la trasformazione delle richieste di I/O nelle chiamate alle API di I/O.

Software di I/O indipendente dal dispositivo

Alcune azioni a questo livello, per esempio Open, dose. Read e Write sono in comune con il software del file manager, di cui si parlerà nel prossimo capitolo.

Lo SPOOL (Simultaneous Peripheral Operation On Line) è un sistema per gestire in ambiente multiprogrammato l'accesso a unità periferiche, per esempio le stampanti, che non possono essere condivise da più processi.

Nel sistema operativo opera un processo speciale, indicato con demone di spool, e una directory speciale, detta directory di spool.

Supponiamo che ci siano tre processi che vogliono stampare dei dati: File1, File2 e File3.1 sono inseriti nella directory di spool. Il demone della stampante esamina periodicamente la directory di spool e, se ci sono file pronti per essere stampati, li invia uno per volta alla stampante rimuovendoli dalla directory di spool. Il demone di spool ha lo scopo di mettere in sequenza gli accessi alla stampante.

Buffer di sistema è spazi di memoria dove memorizzare temporaneamente i dati durante il trasferimento.

Ci sono due importanti motivi per usare la bufferizzazione delle operazioni di I/O:

Per disaccoppiare распаривает il processo che effettua l'I/Ó e la periferica. In assenza di bufferizzazione:a) il processo che legge o scrive deve rimanere in attesa che l’operazione di I/O sia conclusa per poter

proseguire ed è rallentato dalla bassa velocità delle periferiche. b) il processo è costretto a rimanere in memoria, per ricevere i dati in

caso di input o per fornire i dati in caso di output.

se il trasferimento avviene in un'area del sistema operativo, il processo in attesa del completamento dell'operazione di I/O, può essere rimosso dalla memoria e spostato su disco senza problemi.

Nella bufferizzazione, attuata con un buffer posto nello spazio di memoria del sistema operativo, il sistema operativo gestisce i buffer di sistema e, in seguito alla richiesta di I/O di un processo, assegna ad esso un’area nel proprio spazio di memoria.

La strategia di tipo anticipatorio: un blocco di dati in ingresso è posto nel buffer di sistema. In un secondo tempo, mentre il blocco è trasferito al processo, il sistema operativo trasferisce un altro blocco nel buffer di sistema. In questo modo il trasferimento dei dati dal disco al processo è scomposto in due trasferimenti che sono eseguiti in parallelo: il trasferimento dal disco al sistema operativo e il trasferimento dal sistema operativo al processo utente. Mentre il processo utente elabora il blocco di dati appena ricevuto, il sistema operativo legge il blocco successivo .

Page 8: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Considerazioni simili si possono fare anche per le operazioni di output e per trasferimenti che coinvolgono dispositivi a carattere, dove il trasferimento avviene un carattere per volta o una riga per volta.

Esiste un modo diverso di allocare i buffer di sistema: al processo sono allocati due buffer di sistema (doppia bufferizzazione).

Come funziona doppia bufferizzazione : Consideriamo un'operazione di input da disco. Il sistema operativo trasferisce un blocco dal disco in uno dei due buffer di sistema. A questo punto, mentre il processo preleva il blocco dal buffer di sistema, il sistema operativo trasferisce un blocco di dati dal disco nell’altro buffer di sistema. La lettura dei dati da disco prosegue alternando l'uso dei due buffer.

Lo schema del doppio buffer può essere generalizzato con l'uso di N buffer di sistema.

Software di I/O dipendente dai dispositivi: A questo livello gli ordini di I/O del livello superiore sono tradotti nella corretta sequenza di istruzioni e comandi rivolti al modulo di I/O. Il software di I/O dipendente dai dispositivi ha lo scopo di nascondere al proprio interno i dettagli di funzionamento del controllore di una specifica periferica e di rendere all'esterno dispositivi virtuali gestibili con comandi del tipo:

Read(Periferica, Buffer, NumeroBytes)

Write(Periferica, Buffer, NumeroBytes)

Le operazioni sono svolte da moduli software detti device driver o driver dei dispositivi. In genere questi software sono sviluppati e distribuiti dai costruttori dei dispositivi periferici stessi.

Ci sono due tecniche per includere i driver dei dispositivi nel sistema operativo stesso:

il codice dei driver è collegato con le altre parti del sistema operativo mediante il link editor(usata nei primi computer)

i driver sono collegati dinamicamente al momento dell'esecuzione.

Un driver di dispositivo riceve dai livelli superiori una richiesta del tipo: Write(Periferica,Buffer,NumeroBytes) e deve tradurla nelle corrette azioni agendo sul controllore del dispositivo tramite le sue porte.

Per eseguire queste azioni occorre che il driver memorizzi al proprio interno tutte le informazioni necessarie per la gestione dello specifico dispositivo. Un driver di dispositivo, dopo aver ricevuto la richiesta di I/O, controlla la correttezza dei parametri trasmessi e, se non ci sono errori, esegue i compiti richiesti.

Nel driver presenta una struttura dati, detta descrittore del dispositivo, in grado di memorizzare:

informazioni sul controllore, cioè l’indirizzo delle porte per il controllo del dispositivo, per la verifica del suo stato e per lo scambio dei dati;

informazioni sui dati da trasferire, cioè il puntatore al buffer e il numero di byte da trasferire; informazioni per la gestione del trasferimento, cioè il codice di completamento e la struttura dati usata per la

sincronizzazione con il processo associato.

I compiti di un driver:

la gestione delle richieste per la lettura e la scrittura dei dati e la loro esecuzione, Le funzioni per l’inizializzazione del dispositivo periferico la gestione delle situazioni di errore.

Controllo e schedulazione del dispositivo: Il livello inferiore delle operazioni di Input/output gestisce le interruzioni, il controllo e la schedulazione del dispositivo. A questo livello avviene l'interazione vera e propria con l'hardware della periferica. Il driver deve tener conto delle richieste contemporanee da parte di molti processi. La schedulazione del braccio del disco è un esempio di gestione di richieste di servizio di più processi.

Page 9: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

I dischi magnetici e la schedulazione del braccio del disco

Nei moderni sistemi di elaborazione sono presenti molti dispositivi di memorizzazione esterna: i dischi magnetici, i CD-ROM, i DVD, i nastri magnetici, le flash memory.

I floppy disk sono in disuso вышел из употребления per la loro limitata capacità e sono stati sostituiti, dagli USB flash drive:

sono memorie flash integrate con un connettore USB che permette di collegare il drive al computer attraverso una porta USB.

hanno capacità dell'ordine di diversi gigabyte con costi contenuti e sono diventati, nell'uso personale, i dispositivi di memorizzazione di massa rimovibili più utilizzati.

Negli attuali sistemi i principali dispositivi di memorizzazione di massa sono i dischi magnetici.

Il disco magnetico è costituito da un sottile disco metallico con le due facce ricoperte da materiale magnetizzabile.

La memorizzazione dei dati si basa sui principi delľinduzione elettromagnetica:

La spirale di materiale conduttore è collocata in una testina di lettura e scrittura posta sopra il disco in rotazione. Per scrivere un bit viene inviato un impulso di corrente attraverso la testina che provoca la magnetizzazione di una piccola superficie del disco. Per leggere un bit, viene rilevato il senso della corrente che attraversa la testina, indotta dal verso di magnetizzazione della superficie del disco.Il disco ruota intorno al proprio asse a velocità costante. Mentre, per leggere o scrivere, la testina rimane immobile sopra la superficie del disco.

Negli attuali sistemi a disco, più dischi sono montati su un asse centrale, intorno al quale ruotano con velocità uniforme: i pacchetti di dischi o diskpack

Le due facce del disco, o superfici, sono suddivise in piste concentriche, dette tracce.

Le tracce sono suddivise in parti uguali, dette settori. Un valore tipico del settore è di 512 byte. I settori sono separati da gap. Una traccia è la parte di una superficie del disco che passa sotto la testina di lettura/scrittura con il braccio fermo;

Un cilindro è l'insieme di tutte le piste alla stessa distanza dal centro. Il cilindro è l'insieme di tutte le tracce alle quali si può accedere senza spostamento della testina di lettura/scrittura.

Un blocco, o duster, è formato da un gruppo di settori di un disco e costituisce la quantità di dati che viene trasferita in un'operazione di I/O da disco.

Le testine di lettura e scrittura, una per ogni superficie, sono montate su un unico braccio meccanico, che consente il movimento radiale tra i dischi. Le testine non sono a diretto contatto con la superficie del disco ma sorvolano il disco a una

distanza inferiore al millesimo di millimetro; questo fatto permette velocità di rotazione delle migliaia di giri al minuto ed evita fenomeni di usura della superficie.

In ogni settore sono presenti:

informazioni per identificare il settore, informazioni per dichiarare il settore difettoso e non più utilizzabile, i dati accessibili dall'utente, codici di controllo per garantire l'integrità dei dati, gap di separazione tra i settori.

Tali informazioni sono memorizzate sul disco nel corso delle sua formattazione a basso livello programmato dal azienda produtrice. La formattazione a basso livello definisce la struttura fisica e la geometria del disco.

Una formattazione ad alto livello è effettuata dall’utente, che prepara il disco per essere utilizzato secondo le richieste del file System del sistema operativo.

Page 10: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Nei dischi magnetici si parla di accesso diretto alle informazioni in quanto è possibile accedere ai settori del disco indipendentemente dalla posizione del settore nel disco. Però, a differenza con la memoria centrale dove il tempo di accesso a una parola di memoria è indipendente dal suo indirizzo, il tempo di accesso al settore non è esattamente indipendente dalla sua posizione nel disco ma dallo spostamento meccanico del braccio e la rotazione del disco.

Per precisare meglio il valore dei tempi osserviamo tre valori C, T. S, dove:

C è il numero del cilindro, che determina la posizione del braccio con la testina di lettura/scrittura;

T è il numero di testina; S è il numero di settore che identifica, nella traccia (C,T), il settore cercato.

Il tempo TB, necessario per trasferire i byte di un settore nel buffer del dispositivo: TB = Ts + TR + TT dove:

1. Ts è il tempo di posizionamento (seek Urne) del braccio, cioè il tempo necessario per spostare il braccio con la testina di lettura/scrittura sul cilindro. Questo tempo dipende, dalle prestazioni del drive, dal numero di tracce che devono essere attraversate per raggiungere il cilindro cercato. Nei dischi attuali valori medi del tempo sono di 6 - 16 msec a seconda.

2. TR è la latenza rotazionale, cioè il tempo occorrente perché il settore cercato passi sotto la testina. Mediamente è pari al tempo necessario per compiere mezza rotazione del disco e dipende quindi dalla velocità di rotazione. Le velocità di rotazione maggiormente diffuse nei dischi attuali, sono tra 3600 e 7200 giri al minuto, il tempo di latenza assume valori compresi tra 8.3 e 4,17 msec. I dischi nei server ruotano a 10000 - 15000 giri al minuto.

3. TT è il tempo di trasferimento di un settore dalla superficie del disco al buffer del drive: dipende dalla velocità interna di trasferimento dei dati (internai transfer rate) e varia in funzione della velocità di rotazione e del numero di settori per traccia. Nei dischi recenti il trasferimento di un settore di 512 byte avviene in 0,004-0,01 msec. Con tali valori un file di 100 KB, memorizzato in 200 settori contigui sulla medesima traccia, è trasferito in 0,8 - 2,0 msec. Quindi il tempo per trasferire un settore, o un cluster formato da pochi settori contigui, risulta trascurabile rispetto al tempo di posizionamento e alla latenza rotazionale e non influisce significativamente sulle prestazioni del disco.

Il tempo di accesso è la somma Ts + TR che assume valori compresi tra 8 e 24 msec a seconda dei dispositivi.

La capacità di un disco è un isieme della densita lineare e la densita delle tracce. La capacità dei dischi moderni varia da alcune decine a diverse centinaia di gigabyte per singolo drive.

La densità lineare è di quanto vicini possoni essere registrati i bit su una stessa traccia.

La densità delle tracce è di quanto possono essere avvicinate le tracce sulla superficie di un disco .

I dischi attuali hanno una densità lineare superiore a 1.000.000 bit per pollice (bpi, bit per inch) e una densità di traccia superiore a 170.000 tracce per pollice (tpi, track per inch).

Le densita di area è il prodotto della desità lineare e la densità della traccia, che dipende dai materiali con cui viene realizzato il disco e può assumere valori superiori a 500 Gbit per pollice quadrato.

Progetto 2 nel libro

Il tempo di posizionamento medio nella riga Seek medio in msec, è fornito dal costruttore in base a valori sperimentali e simulazioni di 1000 posizionamenti casuali del braccio.

Nella tabella, in corrispondenza del numero di settori per traccia, compaiono due dati: un valore minimo e un valore massimo. Questo dipende dal fatto che nei dischi magnetici nelle tracce esterne è possibile allocare più settori di quelli che si possono mettere nelle tracce interne. L'adozione di questa tecnica di registrazione complica la geometria del disco, ma permette di aumentarne significativamente la capacità rispetto a dischi formattati con lo stesso numero di settori per tutte le tracce del disco. Per questa ragione i dischi attuali sono formattati con questa tecnica, detta zone recording (registrazione a zone),

Page 11: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

La tecnica «zone recording» (registrazione a zone): le tracce di ogni superficie sono suddivise in un certo numero di zone e ogni zona raggruppa un certo numero di tracce tutte con il medesimo valore di settori per traccia.

II sistema operativo può inviare le richieste così come arrivano dai processi, oppure può riordinarle secondo opportuni algoritmi, detti algoritmi di schedulazione del braccio del disco, per ottimizzare gli spostamenti del braccio del disco e minimizzare il tempo di accesso medio.

Nella reale schedulazione del disco la sequenza delle richieste non è una lista statica, come nell'esempio, ma è continuamente aggiornata per effetto di nuove richieste in arrivo.

I tipi degli algoritmi: l'algoritmo FIFO, l'algoritmo SSTF, l'algoritmo SCAN e l’algoritmo Circular SCAN.

FIFO

Nell'algoritmo FIFO (First In First Out, primo arrivato primo servito) le diverse richieste sono servite secondo l’ordine di arrivo senza rielaborare la coda delle richieste. Questa schedulazione ha il pregio уважает nei confronti delle richieste dei processi.

SSTF

Nell'algoritmo SSTF (Shortest Service Time First, servi per prima la richiesta con il minor tempo di servizio) la prossima richiesta servita è quella che genera il minor spostamento del braccio. Questa strategia è molto efficiente, ma non è equa nei confronti dei processi, in quanto ritarda le richieste lontane dalla posizione attuale del braccio.

SCAN

Il nome dell'algoritmo indica, in lingua inglese, l'azione di scandire. Infatti con questo algoritmo il disco viene esaminato in una direzione e poi nell’altra rispondendo alle richieste incontrate. L'algoritmo è noto anche come algoritmo dell'ascensore: il braccio si muove continuamente avanti e indietro, scandendo il disco per servire le richieste tra i cilindri più esterni e quelli più interni. L'algoritmo ha un comportamento meno efficiente dello SSTF. ma è più equo e previene il ritardo indefinito, anche se favorisce le richieste vicine ai cilindri più esterni e più interni.

C-SCAN

L'algoritmo C-SCAN (Circolar SCAN) è una variante dell'algoritmo SCAN con il braccio che serve le richieste in una sola direzione. Nell’esempio precedente il braccio si muove dai cilindri esterni verso quelli più interni per riprendere poi la scansione a partire dalle tracce più esterne. Questa variante fornisce una schedulazione più equa di quella generata dall'algoritmo SCAN che privilegia le richieste nei cilindri vicini alle due estremità del disco.

N-SCAN

L'algoritmo N-SCAN divide le richieste in più code di lunghezza N. Mentre una coda è servita, le nuove richieste sono inserite nelle altre code. Le diverse code sono servite ciclicamente.

Nei dischi più recenti l'ottimizzazione degli spostamenti del braccio dei dischi non è più attuata dal sistema operativo, ma è cablata direttamente nel drive del disco.

6. I dischi RAID

Il tempo di accesso del disco è passato dai 50-100 msec del 1970, ai 5-10 msec dei dischi del 2013, migliorando di dieci volte.

Il tempo di accesso alla memoria si è ridotto nel medesimo periodi di 1000 volte.

La velocità del processore è aumentata più di 10.000 volte.

Per migliorare le prestazioni dei dischi sono stati progettati sistemi di dischi paralleli con l'obiettivo di ridurre il tempo di accesso di tante volte. Questi dischi sono indicati come RAID (Redundant Array of Independent Disk, insieme ridondante di dischi indipendenti).

Page 12: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

I dischi RAID nascono alla fine degli anni 80, in contrapposizione ai tradizionali dischi SLED (Single Large Expensive Disk, disco singolo grande e costoso) dei grandi sistemi con lo scopo di ridurre il tempo di trasferimento e di aumentare l’affidabilità dei dischi.

Il principio di funzionamento di un array RAID : se un processo vuole accedere al blocco B1 e un altro ha bisogno delle informazioni contenute nel blocco B3, collocato in un altro disco, i due accessi possono essere eseguiti contemporaneamente raddoppiando la velocità di accesso ai dati su disco.

Distribuendo le informazioni su un array di più dischi fisici si può aumentare il transfer rate di tante volte quanti sono i dischi dell'array: nel caso di 5 dischi la velocità di accesso ai dati può aumentare fino a 5 volte.

Per il sistema operativo l'array RAID è un unico disco logico e il controller del RAID distribuisce le informazioni sull'array di dischi, paralizzando le letture e le scritture su più dischi.

La tecnologia RAID ha i sistemi di dischi che garantiscono la fault tolerance (tolleranza ai guasti).

In un array RAID ci sono:

i dati Le informazioni di controllo sui dati stessi. Per esempio, nel caso in cui la serie RAID sia costituita da 5 dischi,

4 contengono i dati, mentre il quinto viene usato come disco per il controllo dei dati.

La tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura:

se il malfunzionamento riguarda il disco di controllo, i dati vengono letti dagli altri dischi e le informazioni di controllo sono ricostruite, su un nuovo disco, utilizzando opportuni algoritmi;

se il guasto si riferisce a uno dei dischi con i dati, le informazioni mancanti sono ricostruite sulla base dei dati presenti negli altri dischi e di quelle del disco di controllo.

Ci sono diverse modalità standardizzate di usare un array di dischi RAID e sono indicate come differenti livelli:

RAID Livello 0

Il livello 0 è un livello privo di ridondanza излишеств . L'array RAID è usato solo per paralizzare gli accessi.lo striping dei dati: il sistema RAID è visto dal sistema di Input/Output come un unico disco logico dove i dati sono memorizzati nei blocchi 1,2, 3. ... , N. Il controllore dell'array RAID riceve le richieste di accesso in termini di blocchi logici e distribuisce le informazioni sui dischi fisici: nel caso di un array con 3 dischi il blocco 0 è collocato nel disco 0, il blocco 1 nel disco 1, il blocco 2 nel disco 2. per poi riprendere con il disco 0 per il blocco3 e così via, ciclicamente.

Il livello 0 del RAID accelera le operazioni di I/O, ma dal punto di vista dell'affidabilità non presenti alcun vantaggio rispetto ai dischi tradizionali. In quanto il guasto ad uno solo dei dischi rende inutilizzabile l'intero array a causa della distribuzione delle informazioni su tutti i dischi. Poiché la probabilità di guasto dell'array è data dalla somma delle probabilità di guasto di un singolo disco, un array RAID 0 con 5 dischi è 5 volte meno affidabile di un singolo disco.

RAID Livello 1

Il livello 1 del RAID attua la ridondanza duplicando i dati (mirroring dei dati). In pratica metà dei dischi sono usati per memorizzare i dati e l’altra metà per contenere una copia degli stessi. Il RAID 1 è ritenuto un sistema costoso perché per implementarlo occorre raddoppiare il numero di dischi necessari.

Il sistema è due volte più veloce in scrittura e quattro volte più veloce in lettura potendo. Dal punto di vista delle sicurezza il sistema riesce a sopportare il guasto di uno e, sotto opportune condizioni, anche della metà dei dischi.

RAID Livello 2

Page 13: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

Nel livello 2 del RAID i dati sono distribuiti a livello di bit. Per esempio, in un array di 7 dischi, 4 sono usati per memorizzare un semibyte e i tre rimanenti contengono i tre bit di controllo secondo il codice di Hamming.

Il codice di Hamming è un codice di controllo in grado di riconoscere la presenza di un errore nel semibyte (b0, bv b2, b3) e. in caso di errore, di costruire il valore corretto. Il livello 2 richiede che i dischi siano sincronizzati per permettere l'accesso parallelo ai singoli bit dell'array. Questo livello del RAID non è implementato in pratica.

RAID Livello 3

È definito anche come il livello del parallelismo a livello di bit con controllo di parità. Il livello 3 del RAID distribuisce le informazioni nei dischi dell'array bit per bit. come nel livello 2, ma il controllo è realizzato con un solo bit aggiuntivo, avente la funzione di controllo di parità. Con un array di 5 dischi, per esempio. 4 sono usati per memorizzare le informazioni di un semibyte, bit per bit, e il quinto disco contiene un controllo di parità costruito in funzione dei bit precedenti. Anche il livello 3 richiede la sincronizzazione dei dischi. Questa organizzazione aumenta il transfer rate, ma non a paralizzare accessi che provengono da più processi ed è inefficiente in ambienti con molti utenti.

RAID Livello 4

Il RAID livello 4 è un livello 3 dove non è più necessario sincronizzare i dischi e dove è possibile l'esecuzione parallela di più richieste di accesso.

In un array con N dischi, N-1 sono usati per memorizzare i dati, distribuiti a blocchi come nel RAID 0, mentre l'N-esimo disco serve per memorizzare i blocchi con i controlli di parità. Per esempio, in un sistema con 4 dischi, 3 sono usati per i dati e il quarto per i controlli di parità.

RAID 4 richiede due operazioni di scrittura: una nel disco che contiene il blocco modificato e un'altra nel disco dove sono memorizzati i blocchi di parità. Nello schema RAID 4 le letture possono essere accelerate per effetto del parallelismo dei dischi, ma le scritture, coinvolgono sempre il disco di parità che rappresenta un collo di bottiglia per il sistema. Il livello 4 del RAID non è usato in pratica.

RAID Livello 5

Lo schema RAID 5 cerca di eliminare il collo di bottiglia provocato dalla concentrazione delle informazioni di parità in un solo disco, distribuendo il blocco di parità su tutti i dischi dell'array, ciclicamente.

Per questa ragione il RAID5 è indicato come un array RAID con parità a blocchi distribuita. Il RAID5 è in grado di operare anche con un disco guasto. In un sistema RAID5 con N dischi lo spazio usato per i blocchi di controllo occupa uno spazio equivalente a un disco. Il costo della ridondanze dello spazio è come nel RAID4, di un disco ogni N.

RAID Livello 6

Nello schema RAID6 sono usate due procedure distinte P1 e P2 per calcolare i valori di controllo in due distinti blocchi di controllo che sono poi distribuiti ciclicamente nei dischi. Lo schema RAID6 è in grado di operare anche con 2 dischi guasti. La maggiore affidabilità del sistema è ottenuta raddoppiando il costo della ridondanza. In un sistema RAID6 con N dischi lo spazio occupato dalle informazioni è equivalente alla capacità di 2 dischi. Il costo della ridondanza è di due dischi ogni N.

I vantaggi delle tecnologie RAID sono i seguenti:

Page 14: ciao.ucoz.com · Web viewLa tecnica RAID sopporta il guasto di un solo disco, senza interrompere le operazioni di lettura e scrittura: se il malfunzionamento riguarda il disco di

L'unità centrale del computer vede i dati che servono in modo trasparente, anche nel caso di guasto ad uno dei supporti.

Non ci sono tempi di downtime imprevisti dovuti al malfunzionamento di una delle componenti in quanto si tratta di dischi hot swap (scambio a caldo). I dischi che compongono l’array RAID sono rimuovibili e sostituibili con il drive in funzione. Il disco guasto può essere sostituito senza fermare il sistema.

Il sistema può continuare ad operare anche durante la sostituzione di una componente danneggiata. Vengono ridotte al minimo le operazioni di manutenzione del sistema non programmate.

Gli schemi RAID più diffusi sono: livello 0. livello 1 e livello 5. Il RAID livello 0 è usato per aumentare la velocità dei dischi, mentre il RAID1 è impiegato per la sua affidabilità e l'elevata velocità in lettura. II sistema RAID livello5 è preferito per i dischi affidabili e veloci con i costi della ridondanza limitati .

Periferiche e stampanti in Linux Ubuntu guardare a libro