Struttura dei dischi Il file system si può considerare composto da tre parti Sistemi Operativi Giuseppe Prencipe Interfaccia Strutture dati usate dal SO per realizzare l’interfaccia Struttura dei mezzi di memorizzazione secondaria (che vedremo oggi) I dischi sono oggi il principale mezzo di memorizzazione secondaria Memoria Secondaria e Terziaria Una volta lo erano i nastri che, dato il loro elevato tempo d’accesso, sono oggi utilizzati sono per copie di riserva (backup) Dal punto di vista dell’indirizzamento, si considerano come un grande vettore monodimensionale di blocchi logici, dove un blocco logico è la minima unità di trasferimento La dimensione di un blocco logico è solitamente di 512 byte 1 2 Struttura dei dischi Schema funzionale di un disco Il vettore monodimensionale di blocchi logici corrisponde in modo sequenziale ai settori del disco: Il settore 0 è il primo settore della prima traccia sul cilindro più esterno La corrispondenza prosegue ordinatamente lungo la prima traccia, quindi lungo le rimanenti tracce del primo cilindro, e così via di cilindro in cilindro, dall’esterno verso l’interno Sfruttando questa corrispondenza si potrebbe trasformare l’indirizzo logico in una tripla (#cilindro, #traccia, #settore); questa operazione è difficile perchè I dischi contengono settori difettosi, che la corrispondenza nasconde sostituendoli con settori funzionanti in altre parti del disco Il numero di settori per traccia non è sempre costante Nei mezzi con velocità lineare costante la densità di bit per traccia è uniforme (CD, DVD) Più ci si allontana dal centro, più la traccia è lunga, più settori vi sono Tipicamente le tracce esterne contengono 40% di settori in più di quelle interne L’unità aumenta la sua velocità di rotazione man mano che la testina si sposta verso l’esterno, per mantenere costante il flusso di dati In alternativa, nei mezzi a velocità angolare costante, per mantenere costante il flusso di dati, le velocità della testina è sempre la stessa, ma diminuisce la densità di bit 3 Scheduling del disco Scheduling del disco Il sistema operativo è responsabile di una gestione efficiente delle risorse fisiche: nel caso delle unità a disco, far fronte a questa responsabilità significa garantire tempi d’accesso contenuti e ampiezze di banda elevate L’ampiezza di banda (bandwidth) è il numero totale di byte trasferiti diviso il tempo totale intercorso fra la prima richiesta e il completamento dell’ultimo trasferimento Il tempo d’accesso ha due componenti principali: Il tempo di ricerca (seek time) è il tempo necessario affinché il braccio dell’unità a disco sposti le testine fino al cilindro contenente il settore desiderato la latenza di rotazione (rotational latency) è il tempo aggiuntivo necessario perché il disco ruoti finché il settore desiderato si trovi sotto la testina Per mezzo dello scheduling delle richieste di I/O è possibile migliorare sia tempo d’accesso che banda 5 1 4 Ogni volta che si compie un’operazione di I/O, un processo esegue una chiamata di sistema La richiesta contiene diverse informazioni Tipo di operazione (lettura/scrittura) Indirizzo nel disco Indirizzo di memoria Il numero di byte da trasferire Se il disco e il controllore sono disponibili, allora la richiesta viene subito eseguita, altrimenti viene aggiunta alla coda di richieste inevase per quel dispositivo Le code possono essere piuttosto lunghe (soprattutto con multiprogrammazione), quindi il SO deve avere delle politiche per la gestione di queste code 6 Scheduling del disco Scheduling FCFS (cont.) Esistono numerosi algoritmi di scheduling Semplice: FCFS (in ordine d’arrivo) È intrinsecamente equo, ma non garantisce la massima velocità del servizio Consideriamo, ad esempio, una coda di richieste che dia una lista di cilindri sui quali individuare i blocchi richiesti (testina inizialmente al cilindro 53) 98, 183, 37, 122, 14, 124, 65, 67 Distanza totale percorsa: 640 cilindri 7 8 Scheduling SSTF Scheduling SSTF SSTF—shortest seek time first (Scheduling per SSTF—shortest seek time first (Scheduling per brevità): seleziona la richiesta con il minor tempo di ricerca rispetto all’attuale posizione della testina. Lo scheduling SSTF è essenzialmente una forma di quale scheduling già visto....???? brevità): seleziona la richiesta con il minor tempo di ricerca rispetto all’attuale posizione della testina. Lo scheduling SSTF è essenzialmente una forma di quale scheduling già visto....???? Scheduling per brevità (SJF, shortest job first) e, al pari di questo, può condurre a situazioni di attesa indefinita (starvation) di alcune richieste....quando può accadere questo....???? 9 10 Scheduling SSTF Scheduling SSTF SSTF—shortest seek time first (Scheduling per brevità): seleziona la richiesta con il minor tempo di ricerca rispetto all’attuale posizione della testina. Lo scheduling SSTF è essenzialmente una forma di quale scheduling già visto....???? Scheduling per brevità (SJF, shortest job first) e, al pari di questo, può condurre a situazioni di attesa indefinita (starvation) di alcune richieste....quando può accadere questo....???? Se continuano ad arrivare richieste vicine alla posizione Distanza totale percorsa: 236 cilindri corrente della testina!!!! Non è lo scheduling ottimale!!!! 11 2 12 Scheduling per scansione (SCAN) Scheduling per scansione (SCAN) Secondo l’algoritmo SCAN il braccio dell’unità a disco parte da un estremo del disco e si sposta nella sola direzione possibile, servendo le richieste mentre attraversa i cilindri, fino a che non giunge all’altro estremo del disco: a questo punto, il braccio inverte la marcia, e la procedura continua L’algoritmo SCAN è a volte chiamato algoritmo dell’ascensore, perché il braccio dell’unità a disco si comporta proprio come un ascensore che serve prima tutte le richieste in salita e poi tutte quelle in discesa 13 Scheduling per scansione (SCAN) 14 Scheduling per scansione circolare (C-SCAN) L’algoritmo SCAN circolare (circular SCAN, C- Quando la testina è a una estremità, ha servito tutte le richieste vicine, e inverte la direzione di marcia.... In questo momento, dove si trova (probabilmente) la più alta densita di richieste 15 ancora da servire (da quale lato del disco)....???? Scheduling per scansione circolare (C-SCAN) SCAN) è una variante dello scheduling SCAN concepita per garantire un tempo d’attesa meno variabile Anche l’algoritmo C-SCAN, come lo SCAN, sposta la testina da un estremo all’altro del disco, servendo le richieste lungo il percorso; tuttavia, quando la testina giunge all’altro estremo del disco, ritorna immediatamente all’inizio del disco stesso, senza servire richieste durante il viaggio di ritorno L’algoritmo di scheduling C-SCAN, essenzialmente, tratta il disco come una lista circolare, cioè come se il primo e l’ultimo cilindro fossero adiacenti 16 LOOK e C-LOOK Versioni ottimizzate di SCAN e C-SCAN Il braccio si sposta solo finché ci sono altre richieste da servire in ciascuna direzione, dopo di che cambia immediatamente direzione, senza giungere all’estremo del disco 17 3 18 Scelta di un algoritmo di scheduling C-LOOK SSTF è molto comune e naturalmente attraente, perchè migliora FCFS SCAN e C-SCAN offrono migliori prestazioni in sistemi che sfruttano molto le unità a disco, e non conducono a attesa indefinita Le prestazioni dipendono in larga misura dal numero e dal tipo di richieste Con una sola richiesta tutti gli algoritmi si comportano come FCFS!!!! Le richieste di I/O per l’unità a disco possono essere notevolmente influenzate dal metodo adottato per l’assegnazione dei blocchi ai file Metodo contiguoblocchi raggruppati, metodo concatenatoblocchi sparsi per il disco 19 20 Gestione dell’unità a disco Scelta di un algoritmo di scheduling Prima che un disco magnetico possa memorizzare dati, Anche la posizione delle directory e dei blocchi deve essere diviso in settori che possano essere letti o scritti dal controllore Questo processo è la formattazione fisica indice è importante Se la directory è nel primo cilindro, e i file in essa contenuti nell’ultimo, la testina viaggia parecchio. Se invece la directory si trova nei cilindri centrali, la situazione migliora Anche l’uso della RAM come cache delle directory contribuisce a ridurre i movimenti del braccio Quindi, l’algoritmo di scheduling del disco dovrebbe costituire un modulo a sé stante del sistema operativo così da poter essere sostituito da un altro algoritmo qualora ciò fosse necessario Sia SSTF sia LOOK costituiscono un ragionevole algoritmo di partenza Il disco viene riempito con una speciale struttura dati per ogni settore, consistente di un’intestazione, un’area per i dati e una coda L’intestazione e la coda contengono informazioni usate dal controllore del disco, come numero del settore e codice per la correzione degli errori (ECC—error-correcting code) Quando il controllore scrive dati in un settore, aggiorna l’ECC secondo il contenuto dell’area dati del settore. Quando legge quel settore, calcola l’ECC e lo confronta con il valore memorizzato: se risultano diversiarea dati del settore non è integra L’ECC è un codice per la correzione degli errori: se solo alcuni bit dati sono danneggiati, il controllore può individuarli e correggerli La formattazione è tipicamente parte del processo produttivo 21 22 Gestione dell’unità a disco Gestione dell’unità a disco Affinché un calcolatore possa entrare in funzione Per usare un disco come contenitore di informazioni, il sistema operativo deve registrare le proprie strutture dati all’interno del disco. Ciò avviene in due passi Suddividere il disco in uno o più gruppi (partizioni) Ogni partizione viene trattata come un disco a sé Per avviare il SO, il programma trova il nucleo nei dischi, lo carica in memoria, e salta a un indirizzo iniziale per avviare l’esecuzione del SO Il programma iniziale è memorizzato in una ROM Creare un file system (formattazione logica) Vengono registrate nel disco le strutture dati iniziali (FAT, (Read Only Memory), che non richiede inizializzazione, e che ha un inidirizzo iniziale fisso dal quale la CPU può cominciare l’esecuzione inode, directory iniziale vuota,....) 23 4 (accensione o riavviamento), è necessario eseguire un programma iniziale, che inizializza il sistema in tutti i suoi aspetti (registri CPU, controllori dispositivi, contenuto RAM, ....) e avvia il SO 24 Gestione dell’unità a disco Per cambiare il programma iniziale bisognerebbe cambiare la ROM Configurazione del disco nell’MS-DOS Alcuni sistemi memorizzano nella ROM solo un piccolo caricatore d’avviamento (bootstrap loader) il cui compito è di caricare da disco il programma iniziale completo Il programma completo si trova in una locazione fissata del disco (la partizione contenente questa locazione è detta d’avviamento) Il codice nella ROM istruisce il controllore del disco affinché trasferisca il contenuto dei blocchi d’avviamento in RAM (non viene caricato alcun driver per il disco), quindi comincia a eseguire il codice Il programma d’avviamento completo è più complesso del suo caricatore, ed è capace di caricare il SO residente su disco 25 Blocchi difettosi 26 Blocchi difettosi In unità a disco più complesse (es., SCSI), la I dischi sono soggetti alla presenza di blocchi difettosi Nel caso di dischi semplici, i blocchi difettosi sono gestiti “manualmente” Es.: con il format dell’MS-DOS si esegue una formattazine logica, e come parte del processo viene esaminato il disco per rilevare la presenza di blocchi difettosi. Se ne viene trovato qualcuno, viene scritto un valore speciale nell’elemento corrispondente nella FAT, per segnalare di non usare quel blocco Se qualche blocco diviene difettoso durante il normale uso del sistema, bisogna lanciare programmi speciali che individuano i blocchi difettosi (es., chkdsk) formattazione fisica mette anche da parte dei settori di riserva non visibili al sistema operativo: si può istruire il controllore affinché sostituisca da un punto di vista logico un settore difettoso con uno dei settori di riserva non utilizzati Questa strategia è nota come accantonamento di settori (sector sparing) Es., il sistema legge un blocco X e lo trova difettoso (tramite ECC) Segnala questo al SO Al successivo riavvio, si esegue un comando speciale che comunica al controllore SCSI di sostituire il settore difettoso con uno di riserva Ogni accesso al settore X verrà reindirizzato a quello di riserva NOTA: un reindirizzamento di questo tipo potrebbe inficiare le strategie di scheduling del disco 27 Blocchi difettosi Gestione dell’area di avvicendamento Area d’avvicendamento (swap-space): la Un’alternativa all’accantonamento dei settori è memoria virtuale usa lo spazio dei dischi come estensione della memoria centrale data dalla traslazione dei settori (sector slipping) Dato che il disco è più lento della RAM, questo può portare a notevoli riduzioni delle prestazioni del sistema Se il blocco logico 17 diviene corrotto, e il primo settore di riserva è il 203, allora tutti i blocchi dal 17 al 202 vengono traslati di 1 L’area di avvicendamento è usata in modo diverso dai vari sistemi 202203, 201201, ...., 1718 In ogni caso la sostituzione di un blocco difettoso non è un processo totalmente automatico, e porta tipicamente alla perdita dei dati contenuti nel blocco corrotto Il file che usava quel blocco deve essere riparato, e questo comporta (tipicamente) un intervento manuale 29 5 28 Può essere usata per mantenere l’immagine di un processo in caso di avvicendamento di processi in memoria I sistemi a paginazione possono memorizzarvi pagine non contenute in memoria centrale Alcuni sistemi (es., UNIX) permettono l’uso di aree di avvicendamento multiple, poste anche in unità a disco distinte 30 Gestione dell’area di avvicendamento Gestione dell’area di avvicendamento L’area d’avvicendamento può essere ricavata all’interno del normale L’area d’avvicendamento può essere ricavata all’interno del normale file system o, più comunemente, può trovarsi in una partizione separata del disco Nel primo caso, possono essere utilizzate le normali funzioni del file system per crearla e assegnarle spazio Questo criterio, anche se semplice da realizzare, risulta però inefficiente Attraversamento struttura directory, possibilità frammentazione, rallentano i tempi file system o, più comunemente, può trovarsi in una partizione separata del disco Nel primo caso, possono essere utilizzate le normali funzioni del file system per crearla e assegnarle spazio Questo criterio, anche se semplice da realizzare, risulta però inefficiente Attraversamento struttura directory, possibilità frammentazione, rallentano i tempi In alternativa, la si crea in una partizione separata, senza alcuna struttura di file system e directory Si usa uno speciale gestore per assegnare e rimuovere i blocchi Il gestore adotta algoritmi ottimizzati rispetto alla velocit, piuttosto che allo spazio impiegato Questo può aumentare la frammentazione, ma non è grave perchè la vita media dei dati in area di swap è breve In questo caso, l’area di swap ha una dimensione fissata (al momento della creazione della partizione)per cambiarne la dimensione bisogna ripartizionare il disco o creare qualche altra area di swap in un altro disco Alcuni sistemi adottano entrambe le strategie (swap su file system e su partizione), come Solaris2 31 Gestione dell’area di avvicendamento: UNIX 32 Mappa d’avvicendamento per il segmento di testo nello UNIX 4.3 BSD Nella versione 4.3BSD si assegna l’area di avvicendamento a un processo quando questo è avviato; si riserva spazio sufficiente per il segmento di testo dove è contenuto il programma e per il segmento dei dati Quando comincia l’esecuzione, il testo del processo viene caricato dal file system, e le sue pagine trasferite in swap (il file system viene consultato una sola volta); simile approccio per le pagine dati Due mappe d’avvicendamento per ogni processo servono al nucleo per tenere traccia dell’area d’avvicendamento correntemente impiegata (testo o dati) 33 Mappa d’avvicendamento per il segmento dei dati nello UNIX 4.3 BSD 34 Gestione dell’area di avvicendamento: UNIX Nella versione 4.3BSD si assegna l’area di avvicendamento a un processo quando questo è avviato; si riserva spazio sufficiente per il segmento di testo dove è contenuto il programma e per il segmento dei dati Quando comincia l’esecuzione, il testo del processo viene caricato dal file system, e le sue pagine trasferite in swap (il file system viene consultato una sola volta); simile approccio per le pagine dati Due mappe d’avvicendamento per ogni processo Per ogni indice i il blocco puntato dall’elemento i-esimo della mappa è di 2ix16 Kb In questo modo, processi piccoli usano solo blocchi piccoli 35 6 servono al nucleo per tenere traccia dell’area d’avvicendamento correntemente impiegata (testo o dati) Solaris 2 assegna spazio nell’area d’avvicendamento solo quando una pagina non può più risiedere nella memoria fisica, e non al momento della creazione della pagina di memoria virtuale 36 Strutture RAID—ridondanza Strutture RAID Gli schemi RAID migliorano l’affidabilità della L’evoluzione tecnologica ha reso le unità a disco progressivamente più piccole e meno costose tanto che oggi è possibile, senza eccessivi sforzi economici, equipaggiare un sistema di calcolo con molti dischi La presenza di più dischi, qualora si possano usare in parallelo, rende possibile l’aumento della frequenza alla quale i dati si possono leggere o scrivere Inoltre, avendo più dischi, è possibile migliorare l’affidabilità della memoria secondaria Ci sono varie tecniche per organizzare i dischi, note con il nome comune di batterie ridondanti di dischi (RAID, redundant array of independent/inexpensive disk) Hanno lo scopo di affrontare i problemi di prestazioni e affidabilità memoria secondaria poiché diventa possibile memorizzare le informazioni in più dischi in modo ridondante La copiatura speculare (mirroring o shadowing) mantiene un duplicato di ciascun disco Ogni disco logico consiste di due dischi fisici Questa tecnica è efficace se i guasti che possono capitare sui due dischi sono indipendenti Questo non è tipicamente vero I guasti capitano molto spesso come conseguenza di fattori esterni quali cali di tensioni e disastri naturali, o difetti di fabbricazione che possono causare guasti simili o correlati Una soluzione al problema del calo della tensione consiste nello scrivere i dati in maniera differita (prima in un disco e poi nell’altro) Se si scrivessero contemporanemente, il calo di tensione agirebbe su entrambi i dischi 37 Strutture RAID—parallelismo 38 Strutture RAID—parallelismo L’utilizzo in paralello di più dischi porta a notevoli vantaggi Nel caso di copiatura speculare, è possibile raddoppiare la frequenza di gestione delle letture (ogni richiesta può essere inviata indifferentemente a uno dei due dischi, e la probabilità di trovarne uno libero è alta) La capacità di trasferimento però non cambia in questo caso Il sezionamento a livello del bit si può generalizzare a un numero di dischi multiplo di 8 o che divide 8 Come faccio con 4 dischi....???? Si può migliorare la capacità di trasferimento distribuendo i dati in sezioni su più dischi Sezionamento dei dati: si distribuiscono i bit di ciascun byte su più dischi (sezionamento a livello di bit) Es.: con 8 dischi, ogni bit di un byte va su un disco diverso. È come avere un disco di dimensione e capacità di trasferimento 8 volte superiore Ogni disco è coinvolto in ogni accessoil numero di accessi che si possono gestire nell’unità di tempo è lo stesso di quelli con un disco solo, ma ogni accesso permette di leggere una quantità di dati 8 volte superiore 39 Strutture RAID—parallelismo 40 Strutture RAID—parallelismo Il sezionamento a livello del bit si può generalizzare a un numero di dischi multiplo di 8 o che divide 8 Come faccio con 4 dischi....???? I bit i e i+4 si memorizzano nel disco i Il sezionamento a livello del bit si può generalizzare a un numero di dischi multiplo di 8 o che divide 8 Come faccio con 4 dischi....???? I bit i e i+4 si memorizzano nel disco i Il sezionamento si può realizzare anche al livello dei blocchi I blocchi di un file si distribuiscono su più dischi Con n dischi, il blocco i si memorizza nel disco (i mod n)+1 sono possibili anche sezionamenti a livello di byte di un settore, o di settori di un blocco 41 7 42 Livelli RAID Livelli RAID La copiatura speculare offre affidabilità, ma è costosa Sono stati proposti vari schemi, classificati in livelli, detti livelli RAID Livello 0: senza ridondanza, con sezionamento a livello dei blocchi 43 Livelli RAID 44 Livello 2: con ECC. Gli errori sono risonosciuti grazie alla presenza di codici di correzione di errori Ne è un esempio il bit di parità: È presente in ogni byte, e specifica se i bit con valore 1 sono in numero pari (parità=0) o dispari (parità=1) In questo modo s’identificano gli errori di un singolo bit Livello 1: copiatura speculare Livelli RAID 45 Livello 2: con ECC. Gli errori sono risonosciuti grazie alla presenza di codici di correzione di errori Ne è un esempio il bit di parità: È presente in ogni byte, e specifica se i bit con valore 1 sono in numero pari (parità=0) o dispari (parità=1) In questo modo s’identificano gli errori di un singolo bit Livelli RAID Questa idea si adotta nelle batterie di dischi, utilizzando il sezionamento, e memorizzando i bit di correzione degli errori in ulteriori dischi 47 8 46 Livello 3: bit di parità intercalati Si ha il sezionamento dei dati ha livello di bit e un ulteriore disco memorizza il bit di parità Quando si ha un errore di lettura da uno dei dischi, grazie al bit di parità memorizzato, il sistema sa quale dovrebbe essere il valore corretto di quel bit Livelli RAID 48 Livello 4: blocchi di parità intercalati S’impiega il sezionamento al livello dei blocchi (come nel livello 0) Si tiene un blocco di parità in un disco separato per i blocchi corrispondenti presenti in n dischi diversi da questo Livelli RAID Livello 5: blocchi intercalati a parità distribuita Invece di memorizzare la parità in un disco separato, i dati e le info di parità sono distribuite fra i dischi Ad esempio, con 5 dischi, la parità per il blocco m si memorizza nel disco (m mod 5)+1, mentre i blocchi mesimi degli altri quattro dischi contengono i dati effettivi Livelli RAID 49 Livello 6: simile al livello 5 Memorizza ulteriori info ridondanti per poter gestire guasti contemporanei di più dischi Invece di usare la parità, si impiegano altri codici per la correzione degli errori (es., codici di Reed-Solomon) Livelli RAID 50 RAID (0 + 1) e (1 + 0) Raid (0+1): combina il livello 0 (sezionamento a livello di blocchi prestazioni) con il livello 0 (copiatura affidabilità) Si sezionano i dati presenti e poi si copia Richiede di raddoppiare il numero di dischi sezione di dati x dup licato sezione di dati a) RAID 0 + 1 con guasto di un solo disco 51 RAID (0 + 1) e (1 + 0) Raid (1+0): si fa prima la copiatura speculare dei dischi a coppie, e poi il sezionamento su queste coppie Vantaggi rispetto allo (0+1)....?? Cosa succede se si Se si guasta un disco....?? RAID (0 + 1) e (1 + 0) x sezione di dati dup licato dup licato dup licato dup licato b ) RAID 1 + 0 con guasto di un solo disco 53 9 52 Raid (1+0): si fa prima la copiatura speculare dei dischi a coppie, e poi il sezionamento su queste coppie Vantaggi rispetto allo (0+1)....?? Cosa succede se si Se si guasta un disco....?? In (0+1).... x sezione di dati dup licato dup licato dup licato dup licato b ) RAID 1 + 0 con guasto di un solo disco 54 RAID (0 + 1) e (1 + 0) Raid (1+0): si fa prima la copiatura speculare dei dischi a coppie, e poi il sezionamento su queste coppie Vantaggi rispetto allo (0+1)....?? Cosa succede se si Se si guasta un disco....?? In (0+1)....tutta le sezione è inaccessibile, mentre in (1+0).... RAID (0 + 1) e (1 + 0) x sezione di dati dup licato dup licato dup licato dup licato b ) RAID 1 + 0 con guasto di un solo disco Raid (1+0): si fa prima la copiatura speculare dei dischi a coppie, e poi il sezionamento su queste coppie Vantaggi rispetto allo (0+1)....?? Cosa succede se si Se si guasta un disco....?? In (0+1)....tutta le sezione è inaccessibile, mentre in (1+0)....si può usare il suo duplicato x sezione di dati dup licato dup licato dup licato dup licato b ) RAID 1 + 0 con guasto di un solo disco 55 56 Memoria secondaria connessa alla macchina Connessione dei dischi I calcolatori accedono alla memoria secondaria in due modi tramite le porte di I/O (memoria secondaria connessa alla macchina, host-attached storage) Vi si accede tramite le porte di I/O I comuni PC impiegano un’architettura per il bus di I/O detta IDE o ATA Consente di avere non più di due unità per ciascun bus di I/O L’architettura SCSI è più sofisticata per mezzo di un file system distribuito (memoria secondaria connessa alla rete, network attached storage) È un’architettura a bus il cui mezzo fisico è di solito un cavo piatto con un certo numero di conduttori (50 o 68) Consente di avere sul bus fino a 16 dispositivi 57 58 Memoria secondaria connessa alla rete Memoria secondaria connessa alla rete È un sistema di memoria al quale si accede in Network—attached storage (NAS) modo remoto per mezzo di una rete I client accedono alla memoria tramite un’interfaccia RPC (ad es. NFS) Le chiamate RPC sono realizzate tramite protocolli TCP o UDP sopra una rete IP Fornisce a tutti i calcolatori di una LAN un modo semplice per condividere spazio di memorizzazione 59 10 60 Rete di memoria secondaria Reti di memoria secondaria Lo svantaggio dei NAS è che le operazioni di I/O sulla memoria secondaria impiegano banda di rete, aumentando la latenza della rete stessa Una rete di memoria secondaria (storage—area network, SAN) è una rete privata (che impiega protocolli specifici per la memorizzazione anziché protocolli di rete) tra i server e le unità di memoria secondaria, separata dalla LAN/WAN che collega i server ai client 61 Rete di memoria secondaria 62 Dispositivi per la memorizzazione terziaria La caratteristica peculiare delle memoria terziaria è il suo basso costo Generalmente, la memoria terziaria è costituita da mezzi rimovibili Alcuni esempi di mezzi rimovibili sono i Sistema flessibile: permette di connettere alla SAN molte macchine e batterie di memoria floppy-disk e i CD-ROM; sul mercato sono disponibili anche molti altri prodotti 63 64 Dischi rimovibili I dischi magneto—ottici registrano i dati su un disco rigido Dischi rimovibili ricoperto da materiale magnetico I dischetti (floppy disk) sono costituiti da un disco sottile e flessibile, ricoperto da materiale magnetico, racchiuso in un involucro protettivo di plastica I comuni dischetti hanno una capacità di 1 MB, ma si usa una tecnologia simile per costruire dischi magnetici rimovibili della capacità di oltre 1 GB I dischi magnetici rimovibili possono funzionare a una velocità quasi pari a quella delle unità a disco, anche se il rischio che la loro superficie sia danneggiata da graffi è maggiore 65 11 La testina è sospesa a una distanza molto maggiore rispetto alla testina di un disco magnetico L’unità ha una bobina capace di produrre un campo magnetico, ma solo a alte temperaturela testina emette un raggio laser verso la superficie del disco, puntandolo sull’area dove si vuole scrivere un bit Dato che la testina è distante dalla superficie del disco, l’unità a disco legge i bit sfruttando una proprietà della luce laser detta effetto Kerr Quando un raggio laser è riflesso da un punto magnetizzato, la sua polarizzazione è ruotata in senso orario o antiorario secondo l’orientazione del campo magnetico: per leggere i bit la testina rileva questa rotazione Il materiale magnetico è protetto da uno spesso strato di plastica o vetro; di conseguenza il disco è più resistente a eventuali collisioni della testina. I dischi ottici non sfruttano il magnetismo ma usano materiali speciali che la luce laser può alterare in modo da creare punti relativamente chiari o scuri 66 Dischi WORM Disco a cambio di fase È ricoperto di un materiale che può solidificare passando a uno strato cristallino o a uno stato amorfo Impiegano laser capaci di emettere raggi a tre differenti livelli di potenza Bassa: per le letture Maedia: per cancellare il disco fondendo e facendo solidificare il mezzo di registrazione nello stato cristallino Alta:, per scrivere, fondendo e facendo solidificare il mezzo di registrazione nello stato amorfo Esempi di questo tipo di disco sono i CD-RW e i DVD-RW I dati memorizzati sui dischi a lettura e scrittura possono essere aggiornati e modificati I dischi WORM (Write Once, Read Many) possono essere scritti solo una volta Una sottile pellicola di alluminio viene inserita tra due piatti di plastica o vetro Per scrivere un bit, l’unità usa un raggio laser per praticare un piccolo foro nell’alluminio; poiché questo processo non è reversibile, le informazioni possono essere lette ma non alterate I dischi WORM sono considerati durevoli e affidabili I dischi a sola lettura come i CD-ROM e i DVD sono commercializzati con un contenuto pre-registrato. E fanno uso di una tecnologia simile a quella dei WORM 67 Nastri 68 Compiti del sistema operativo Rispetto a un disco, un nastro è meno costoso e contiene più dati, ma l’accesso diretto è molto più lento I nastri magnetici sono un mezzo conveniente qualora non si richiedano rapidi accessi diretti, e quindi per copie di riserva, anche nei grandi centri di calcolo Grandi stazioni di registrazione a nastri usano meccanismi automatici per spostare i nastri dalle unità ad appositi contenitori in un archivio di nastri Un file non immediatamente necessario può essere archiviato su nastro a un costo per gigabyte che può essere inferiore; quando il file si renderà necessario, il calcolatore potrà installarlo nuovamente nel disco Due tra gli obiettivi primari di un sistema operativo sono la gestione dei dispositivi fisici e la presentazione di una macchina virtuale alle applicazioni Relativamente ai dischi, il sistema operativo realizza due astrazioni: Dispositivo a basso livello: un semplice vettore di blocchi di dati File system: il sistema operativo accoda e organizza le richieste provenienti da diverse applicazioni 69 Interfaccia per le applicazioni Interfaccia per le applicazioni In questo caso, di solito, l’unità a nastro si riserva per La maggior parte dei sistemi operativi gestisce i dischi rimovibili pressoché nella stessa maniera dei dischi fissi. Quando s’inserisce un nuovo disco nella relativa unità a disco esso deve essere formattato, quindi si crea sul disco rimovibile un file system vuoto che si usa proprio come il file system di un’ordinaria unità a disco La gestione dei nastri è, invece, spesso differente Il sistema operativo di solito presenta un nastro come mezzo di memorizzazione a basso livello. Un’applicazione non apre un file presente nel nastro, apre l’intera unità a nastro come dispositivo a basso livello 71 12 70 l’uso esclusivo da parte di tale applicazione fino a che essa termina o chiude il dispositivo (ragionevole, perchè l’accesso ai dati potrebbe richiedere minuti) Quando un’unità a nastro è presentata come dispositivo di basso livello, il sistema operativo non fornisce i servizi del file system: è l’applicazione che deve decidere come usare il vettore di blocchi Un programma che crea una copia di riserva di un disco su un nastro, potrebbe ad esempio scrivere un elenco dei nomi e delle dimensioni dei file all’inizio, e poi i dati in quell’ordine Visto che ogni applicazione stabilisce i propri criteri di organizzazione del nastro, un nastro contenente dati può essere generalmente usato solo dal programma che lo ha creato 72 Unità a nastro Nomi dei file Le operazioni fondamentali relative a un’unità a nastro differiscono da quelle di un’unità a disco locate posiziona il nastro in corrispondenza di uno specifico blocco logico e non di un’intera traccia (corrisponde a seek) Nel caso di un blocco corrotto, le informazioni vengono scritte in blocchi successivi Le dimensioni dei blocchi non sono determinate a priori, e si determinano al momento della scrittura Questo spiega perchè non sia possibile effettuare una locate oltre l’area del nastro registrata: le posizioni e le numerazioni dei blocchi logici non sono state ancora determinate read position riporta il numero del blocco logico in corrispondenza del quale si trova la testina L’operazione space riguarda gli spostamenti relativi Es.: space-2 riavvolge il nastro di due blocchi logici Le unità a nastro sono dispositivi a solo accodamento di dati (“append-only” devices); l’aggiornamento di un blocco posto in mezzo al nastro comporta la cancellazione di tutto ciò che segue tale blocco Un simbolo di fine nastro (EOT, end of tape) viene posto dopo l’ultimo blocco registrato L’assegnazione dei nomi dei file sui mezzi rimovibili è complicata nel caso s’intenda scrivere dati su un mezzo rimovibile in un certo calcolatore e poi riutilizzare lo stesso mezzo in un altro calcolatore In genere gli attuali sistemi operativi lasciano irrisolto il problema, confidando nel fatto che le applicazioni o gli utenti forniranno una chiave di lettura e di interpretazione dei dati Alcuni tipi di mezzi rimovibili (ad es. i CD) sono così ben standardizzati da essere usati allo stesso modo da tutti i calcolatori 73 74 Gestione gerarchica della memoria Velocità Un sistema di gestione gerarchica della memoria estende la gerarchia di memorizzazione oltre la memoria centrale e secondaria, comprendendo la memoria terziaria; quest’ultima è di solito costituita da un juke—box di nastri o di dischi rimovibili (che permette a un calcolatore di cambiare un nastro o un disco rimovibile senza l’intervento di un utente) In genere la memoria terziaria viene incorporata estendendo il file system I file piccoli e frequentemente usati rimangono nei dischi magnetici I file vecchi, ingombranti e raramente necessari, si archiviano nel juke—box La gestione gerarchica della memoria (HSM, hierarchical storage management) si trova di solito in centri di calcolo La velocità della memoria terziaria è definita da due fattori: ampiezza di banda e latenza L’ampiezza di banda si misura in byte al secondo Ampiezza di banda sostenuta: velocità media di trasferimento nel caso di una rilevante quantità di dati; in altre parole, il numero di byte diviso il tempo di trasferimento Ampiezza di banda effettiva: numero di byte trasferiti rapportato al tempo di I/O totale, inclusi il tempo richiesto da una seek o una locate, e l’attesa eventualmente dovuta a cambi di dischi o nastri eseguita dal juke-box. basati su supercalcolatori e in altri grandi sistemi che possiedono enormi quantità di dati 75 76 Velocità Affidabilità Latenza d’accesso: quantità di tempo necessaria per I dischi magnetici rimovibili sono meno affidabili accedere ai dati Tempo d’accesso per un disco: si sposta il braccio al cilindro selezionato e si aspetta che il settore interessato ruoti sotto la testina: < 35 millisecondi. Un accesso diretto a un nastro richiede lo svolgimento o il riavvolgimento della bobina finché il blocco richiesto raggiunge la testina, in decine o in centinaia di secondi In linea generale l’accesso diretto a un nastro è oltre mille volte più lento dell’accesso diretto a un disco La convenienza economica della memoria terziaria è dovuta alla possibilità di usare molte cartucce (a disco o a nastro) a basso costo, con poche costose unità di lettura e scrittura Un archivio di dati rimovibili è soprattutto adatto alla registrazione di dati usati raramente, perché il numero delle richieste di I/O soddisfacibili per ogni ora d’uso di un tale archivio è relativamente basso 77 13 dei dischi fissi È più probabile che siano esposti a condizioni ambientali dannose (polvere, sbalzi di temperatura, umidità, urti) I dischi ottici sono considerati più affidabili di un disco o un nastro magnetico perché lo strato che memorizza le informazioni è protetto da uno strato trasparente di plastica o vetro Anche le unità a disco fisso hanno punti deboli: la collisione della testina col disco in genere distrugge i dati, mentre il guasto di un’unità a nastro o di un’unità a dischi ottici lascia spesso intatto il mezzo di memorizzazione in uso al momento del guasto 78 Prezzo al MB della memoria DRAM, dal 1981 al 2000 Costi La memoria principale è molto più costosa di quella su 1280 disco 640 16 Kb 320 Il costo per MB su disco magnetico è competitivo rispetto al nastro Dollari/MB 160 L’unità a nastro meno costosa e l’unità a disco meno costosa hanno all’incirca la stessa capacità di memorizzazione 64 Kb 80 256 Kb 40 20 1 Mb 4 MB simm 10 La memoria terziaria produce effettivi risparmi solo 5 quando il numero di cartucce è sostanzialmente superiore al numero dei dispositivi di lettura/scrittura 32 MB 2 1,2 0,8 128 MB 1982 1984 1986 1988 1990 79 1994 1996 1998 2000 80 Anno Prezzo al MB delle unità a disco magnetico dal 1981 al 2000 Prezzo al MB delle unità a nastro, dal 1981 al 2000 100 50 1992 40 10 MB 20 20 20 MB 8 Dollari/MB Dollari/MB 5 120 MB 2 1,2 GB 0,5 50 MB 120 MB 2 2 GB 0,2 1,2 GB 0,5 0,05 0,02 19 GB 0,004 4 GB 0,1 45 GB 1982 1984 1986 1988 1990 1992 1994 1996 1998 72 GB 2000 0,025 Anno 81 1982 1984 1986 1988 1990 1992 1994 1996 1998 Anno 2000 82 Realizzazione della memoria stabile La registrazione con scrittura anticipata (writeahead log scheme) richiede la disponibilità di una memoria stabile. Per oggi basta!!!! Per realizzare la memoria stabile occorre: Replicare le informazioni necessarie in più dispositivi di memorizzazione con modi di malfunzionamento indipendenti. Coordinare l’aggiornamento delle informazioni in modo tale che un eventuale malfunzionamento durante l’aggiornamento non danneggi tutte le copie. 83 14 84