[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 159.   Memoria di massa: introduzione

Con il termine memoria di massa ci si riferisce alla parte di memoria non volatile di un elaboratore, che consente l'immagazzinamento di grandi quantità di dati. Il tipo di supporto più utilizzato è quello a disco, che permette un accesso rapido ai dati memorizzati, mentre in passato sono stati molto importanti anche i nastri magnetici, graditi a suo tempo per la loro economicità in rapporto alla quantità di dati memorizzabili. Tuttavia, il futuro delle memorie di massa sembra essere rappresentato dalle memorie solide, ovvero da sistemi di memorizzazione elettronica allo stato solido (senza componenti meccanici).

159.1   Nastro

Il sistema di memorizzazione a nastro è stato il primo (a parte le schede perforate) a essere utilizzato con gli elaboratori. In tempi più recenti, dal nastro in bobine si è passati piuttosto a cartucce a nastro magnetico di vario tipo.

La memorizzazione a nastro permette la registrazione di dati in modo sequenziale. Questo significa che la modifica dei dati può avvenire solo aggiungendo queste modifiche alla fine, senza poter intervenire nella parte già memorizzata. Nello stesso modo, l'accesso a un'informazione richiede lo scorrimento del nastro fino al punto in cui questa si trova.

Solitamente, la memorizzazione di dati all'interno di un nastro avviene in forma di archivio, cioè di un file unico contenente tutti i file che si vogliono archiviare. In questo modo, è il programma di archiviazione ed estrazione a prendersi cura del confezionamento dei dati da archiviare e del loro recupero quando necessario.

159.2   Disco

Il supporto di memorizzazione a disco, ha il vantaggio di consentire l'accesso diretto ai dati senza la necessità di scorrerli sequenzialmente. Le tecniche di memorizzazione possono essere differenti: magnetica, magneto-ottica e ottica. Nel primo caso, il più comune, i dati vengono memorizzati su uno strato ferromagnetico; nel secondo, si sfrutta sempre un sistema di memorizzazione magnetica, ma su un materiale che deve essere scaldato con un fascio laser per consentire la memorizzazione; l'ultimo utilizza una memorizzazione puramente ottica, attraverso un laser.

La memorizzazione magnetica è la più comune, offre il vantaggio di una maggiore velocità di lettura e scrittura dei dati, ma è anche la meno sicura per quanto riguarda la durata di mantenimento di questi.

Bisogna ricordare che esiste una grande quantità di fonti magnetiche, cominciando dal campo terrestre, a cui si aggiungono tutti quelli generati dall'attività umana. Tanto per fare un esempio, un telefono mobile acceso, appoggiato vicino a un dischetto magnetico, può provocare la sua cancellazione.

I dischi magneto-ottici sono funzionalmente analoghi a quelli magnetici, con la differenza che, dovendo scaldare le tracce da memorizzare con un laser, quando questo calore non è disponibile non sono tanto sensibili ai campi magnetici estranei.

I dischi ottici utilizzano una memorizzazione attraverso un fascio laser. Il tipo più comune di disco ottico può essere usato una volta sola per memorizzare i dati, consentendo naturalmente una quantità indefinita di letture successive, ma a questo si affianca il disco riscrivibile, che può essere riutilizzato.

159.2.1   Dischi fissi e rimovibili

Esistono due tipi di dischi: quelli che sono fissati stabilmente all'apparecchiatura che permette di effettuare delle registrazioni e di leggerne il contenuto, distinguendoli da quelli che possono essere asportati e quindi sostituiti.

Figura 159.1. Disco fisso e disco rimovibile.

disco-fisso-e-disco-rimovibile

Il disco fisso ha normalmente una capacità molto superiore a un disco rimovibile, permettendo di effettuare le operazioni di registrazione e rilettura dei dati molto più velocemente. Il disco rimovibile ha il vantaggio di poter essere tolto e sostituito con altri così come si può fare con un registratore e le sue cassette.

Figura 159.2. Disco fisso esterno USB.

disco-fisso-esterno-usb

Recentemente si è diffuso anche una variante ulteriore, rappresentata da unità esterne, che possono utilizzare un disco fisso, ovvero un corpo unico con l'unità stessa, oppure un disco rimovibile.

159.2.2   Dischi magnetici

Il disco magnetico è costituito essenzialmente da uno o più piatti di materiale metallico (alluminio o un'altra lega trasparente ai campi magnetici), plastico, o vetroso, ricoperti su entrambe le facce da un deposito di ossidi ferromagnetici (la stessa sostanza che ricopre il nastro magnetico delle cassette audio). Questi piatti vengono fatti ruotare a velocità angolare costante.

Figura 159.3. Visione dall'alto di un piatto sul quale scorre una testina per la lettura e scrittura dei dati. Le tracce magnetiche, concentriche, non sono visibili, ma vengono individuate dalla testina magnetica.

Compilazione

L'operazione di registrazione e rilettura dei dati viene effettuata da testine, una per ogni faccia dei piatti, le quali registrano e rileggono lungo tracce concentriche del disco. Le tracce magnetiche vengono definite dalle testine stesse, durante una fase detta di inizializzazione (o formattazione) a basso livello. Le tracce sono suddivise a loro volta in settori di uguale dimensione contenenti un codice di identificazione.

Figura 159.4. Le tracce concentriche dei dischi magnetici sono suddivise in settori di uguale dimensione.

Compilazione

I settori sono in pratica dei contenitori di dati. L'esistenza di questi settori e del loro sistema di identificazione permette l'accesso diretto ai dati, fino all'unità minima gestibile, che è appunto il settore. Nello stesso modo, non è possibile registrare dati se prima non sono state definite le tracce e i settori.

In passato sono esistiti dischi magnetici nei quali la suddivisione delle tracce in settori veniva identificata attraverso riferimenti estranei alle tracce stesse, per esempio attraverso dei fori in qualche punto del piatto. Questo vecchio tipo di dischi veniva detto hard sectored (suddiviso fisicamente in settori), mentre la modalità attuale, cioè quella che si ottiene con l'inserzione di codici di riconoscimento all'inizio dei settori, si dice soft sectored (suddiviso logicamente in settori). In ogni caso, è sempre presente un riferimento fisico per definire un punto di inizio nella rotazione.

Quando un'unità di memorizzazione è composta da più dischi, questi sono calettati sullo stesso albero (l'asse di rotazione centrale). In questo modo, la registrazione e la lettura avvengono attraverso un pettine di testine collegate assieme.

Le testine non possono appoggiare sul piatto, altrimenti si genererebbe un attrito e conseguentemente un riscaldamento disastroso. La presenza dell'aria o di un altro gas, fa sì che con la rotazione le testine si appoggino su un cuscino d'aria sottilissimo. A volte può succedere che un corpo estraneo si inserisca tra una testina e il piatto. Quando ciò succede, nella maggior parte dei casi, si arriva all'atterraggio della testina e alla conseguente distruzione del piatto e della testina stessa.

Figura 159.5. Foto di un disco fisso aperto. Rispetto al disegno che appare nella figura 159.3, la rotazione di questo disco avviene in senso antiorario.

disco fisso aperto

Figura 159.6. Foto di un disco fisso aperto. In questo caso si può osservare che a riposo, le testine vengono «parcheggiate» all'esterno dei piatti, per evitare problemi di atterraggio alla partenza.

disco fisso aperto

159.2.3   Geometria

Come già accennato, il settore è l'unità di memorizzazione minima a cui si possa accedere in un disco, di qualunque tipo esso sia. Nel caso di dischi organizzati a tracce concentriche, sono state utilizzate storicamente coordinate composte da cilindro, testina e settore.

Figura 159.7. Schema di un disco fisso visto lateralmente.

disco fisso visto lateralmente

Il cilindro rappresenta un gruppo di tracce, tutte alla stessa distanza dall'asse di rotazione centrale; la testina identifica la traccia specifica facendo riferimento alla faccia di un piatto particolare da prendere in considerazione; il settore è il segmento di traccia a cui si vuole accedere.

Per definire le caratteristiche di un disco del genere si parla di geometria, che si esprime attraverso l'indicazione del numero di cilindri, di testine e di settori a disposizione. La dimensione di un disco, espressa in settori, si esprime quindi come il prodotto di questi tre valori.

Infine è importante considerare anche la dimensione del settore, ovvero la quantità di byte che questo può contenere. La dimensione normale è di 512 byte, ma esistono anche dischi con settori di dimensione multipla.

Attualmente, dal momento che il sistema di controllo elettronico di una unità a disco è molto più sofisticato di un tempo, la geometria è un concetto che serve solo a rispettare la tradizione. In generale, sarebbe possibile l'accesso ai settori semplicemente indicandone il numero di sequenza, lasciando al sistema di controllo interno al disco di sapere dove si trova effettivamente, in base alla geometria reale. Tuttavia, per ragioni di compatibilità, si continua a immaginare una geometria, che di solito è solo virtuale, in quanto non corrisponde a quella reale.

159.2.4   Dischi magneto-ottici

Di norma, i dischi magneto-ottici (MO) sono dischi rimovibili in cui i dati sono registrati in forma magnetica, ma l'operazione di registrazione avviene previo riscaldamento da parte di un fascio laser. Si tratta storicamente di unità di memorizzazione di grande capacità, ma ad accesso piuttosto lento, che ormai sono superati.

Figura 159.8. Disco magneto-ottico rimovibile.

disco-magneto-ottico-rimovibile

Il disco magneto-ottico ha una geometria analoga a quella dei dischi magnetici, anche se si tratta solo di un piatto, per cui, anche in questo caso si parla di cilindri, testine e settori.

159.2.5   Dischi ottici

Mentre i dischi magneto-ottici si comportano in maniera analoga a quelli magnetici, i dischi ottici richiedono una registrazione sequenziale, consentendo eventualmente un'aggiunta in coda. Al contrario, la rilettura non comporta limitazioni di accesso.

Per questo, i dischi ottici sono registrati utilizzando un'unica traccia a spirale, un po' come si faceva con i vecchi dischi musicali di vinile.

Figura 159.9. CD-R inciso: si può notare il bordo interno da dove parte l'incisione e il limite esterno dove questa ha termine.

cdr-inciso

159.2.6   Memorie solide

Le memorie solide sono degli integrati che consentono la memorizzazione di discrete quantità di dati, in modo simile a quello delle memorie di massa tradizionali. Attualmente, il limite tecnico di tali sistemi di memorizzazione sta nel numero massimo di cicli di scrittura.

L'uso più comune delle memorie solide avviene attraverso le porte USB, gestendole come se fossero dei dischi esterni.

Figura 159.10. Esempio di memoria solida, per l'uso in apparecchi come le macchine fotografiche.

memoria solida

Figura 159.11. Lettore di vari modelli di memorie solide esterne.

lettore di memorie solide

Figura 159.12. Memoria solida esterna in forma di «penna» USB.

memoria solida USB

159.3   Collocazione e accesso ai dati

Quando si utilizza un nastro magnetico, la memorizzazione dei dati può avvenire solo in modo sequenziale, per cui, di solito si registra un file unico contenente tutto ciò che si vuole archiviare.

Nel caso del disco a tracce concentriche, i dati possono essere suddivisi nell'unità dei settori e sparpagliati nel disco come si vuole, possibilmente con un qualche criterio. Questo criterio è il file system, cioè qualcosa che definisce un'organizzazione dei dati nel disco e il modo per potervi accedere.

Un disco senza file system è solo una serie di settori a partire dalla prima testina del primo cilindro. In questo senso, a volte si utilizzano i dischi come se fossero nastri, registrando e rileggendo i dati nella stessa sequenza naturale di settori, testine e cilindri.

Il caso del disco ottico è speciale, nel senso che la registrazione avviene come se si trattasse di un nastro, ma quanto registrato può contenere un file system (solitamente si tratta di quello definito dallo standard ISO 9660) e la rilettura dei dati può avvenire ad accesso diretto, come nel caso dei dischi normali.

I CD-ROM da utilizzare con i sistemi Unix contengono normalmente un file system ISO 9660 con estensioni Rock Ridge. Quando il CD-ROM viene letto da un sistema che non è in grado di riconoscere queste estensioni, riesce ugualmente ad accedervi, però tutto si manifesta semplicemente come nello standard ISO normale.

159.4   Partizioni secondo la tradizione Dos

Le unità di memorizzazione di massa ad accesso diretto, come i dischi, purché di dimensioni adeguate, possono essere suddivisi in partizioni. Questa suddivisione permette, per esempio, di fare convivere diversi sistemi operativi nella stessa unità.

Teoricamente, un'unità di memorizzazione di qualunque genere può essere suddivisa in partizioni, oppure anche no. In particolare, in presenza di dischi rimovibili di dimensioni superiori a qualche mebibyte (simbolo Mibyte), non suddivisi in partizioni, si parla a volte di superfloppy.

Il sistema della suddivisione in partizioni è una convenzione. Quella più comune è rappresentata dal tipo utilizzato dal Dos e dagli altri sistemi operativi che ne sono derivati. GNU/Linux utilizza fondamentalmente questo tipo di tecnica di partizionamento ed è ciò che qui viene descritto.

159.4.1   MBR

Nel sistema di partizionamento secondo il modello utilizzato dal Dos, le informazioni principali sulla suddivisione in partizioni sono registrate nella parte finale del primo settore del disco, togliendo un po' di spazio alle istruzioni di avvio. Per questo motivo, trattandosi di un settore di avvio con in più le informazioni sulle partizioni principali (primarie), questo si chiama MBR, o Master boot record.

Solitamente, il settore di avvio contiene il codice necessario a passare al primo settore di una partizione il compito di avviare effettivamente il sistema operativo: la partizione avviabile.

Lo spazio riservato nell'MBR per annotare i dati delle partizioni è limitato e consente la suddivisione in un massimo di quattro partizioni principali.

159.4.2   Partizioni primarie ed estese

La possibilità di suddividere lo spazio di un disco in sole quattro partizioni può essere troppo limitante. Per risolvere questo problema si distinguono partizioni di due tipi: primarie ed estese. La partizione primaria è quella normale, a essa si attribuisce un codice per riconoscere il tipo di file system che contiene o che dovrebbe contenere. La partizione estesa viene definita con il codice 5 (ovvero 0516 in esadecimale) ed è il contenitore di altre partizioni più piccole, dette partizioni logiche.

Si osservi che può essere definita una sola partizione estesa e che questa può essere suddivisa anche in più di quattro partizioni «logiche», ovvero sotto-partizioni.

GNU/Linux utilizza nomi particolari per i file di dispositivo che servono a identificare l'intero disco o una singola partizione. In pratica, quando si fa riferimento a una partizione, si aggiunge un numero al nome del file di dispositivo riferito al disco intero. In particolare, i numeri da uno a quattro rappresentano le prime quattro partizioni (primarie o estese), mentre i numeri successivi vengono utilizzati per identificare le partizioni logiche eventuali.

La numerazione delle partizioni segue solo l'ordine di inserimento e non la collocazione effettiva nello spazio del disco. Per esempio, se si hanno tre partizioni primarie e si rimuove la seconda per scomporla in due parti, si ottiene una seconda partizione più piccola e una quarta partizione, collocata tra la seconda e la terza.

Figura 159.13. Suddivisione in partizioni secondo il sistema tradizionale del Dos.

suddivisione in partizioni

159.5   Firmware

Le unità di memorizzazione di massa, non sono solo contenitori di dati: nei sistemi operativi comuni sono coinvolte nel processo di caricamento del sistema stesso. Perché ciò possa avvenire, deve essere avviato un programma iniziale che provvede a sua volta ad avviare il sistema operativo. Questo programma è suddiviso in due parti: il firmware (o BIOS negli elaboratori x86) e il settore di avvio. In pratica, il firmware avvia il settore di avvio, il quale a sua volta avvia un altro settore di avvio oppure, un programma di avvio o direttamente il kernel del sistema operativo.

Figura 159.14. Dal firmware al settore di avvio.

firmware: avvio

Il codice contenuto in un settore di avvio può avvalersi solo di funzionalità offerte dal firmware stesso e quindi dipende da queste la possibilità di raggiungere e avviare il kernel. Nel firmware degli elaboratori x86 esiste una limitazione: le sue funzioni non permettono di accedere a zone di un disco oltre il 1 024-esimo cilindro. Questo significa che un kernel collocato oltre questo punto non può essere avviato. Per risolvere questo problema, alcuni BIOS recenti trasformano in maniera fittizia la geometria dei dischi in modo da mostrare meno cilindri del reale, aumentando gli altri valori (testine o settori per traccia). In tal caso il problema è risolto, altrimenti occorre trovare il modo di fare risiedere il kernel in una posizione accessibile. La tecnica più semplice è quella di predisporre una piccola partizione solo per questo nella zona protetta, al di sotto del cilindro 1 023.

Il firmware degli elaboratori x86 ha delle limitazioni anche negli altri parametri che definiscono la geometria di un disco. In pratica, la dimensione massima di un disco fisso per il quale si voglia mantenere il limite dei 1 024 cilindri, non può superare gli 8 Gibyte. Tuttavia, i sistemi di avvio più recenti riescono ugualmente a superare l'ostacolo.

159.6   Modalità di accesso ai settori

I settori di un disco possono essere raggiunti in due modi: in base alle coordinate definite da cilindro, testina e settore, oppure in base al numero del settore del disco in senso assoluto. Queste modalità hanno due sigle standard, che sono rispettivamente: CHS (Cylinder, head, sector) e LBA (Linear block address).

Naturalmente, la modalità di accesso più «comoda» è LBA, ma questa possibilità dipende dal firmware.

La distinzione tra un accesso di tipo CHS o LBA riguarda principalmente i dischi ATA, che si sono evoluti in un arco di tempo piuttosto lungo. La possibilità di accedere in modalità LBA permette di eliminare il problema delle dimensioni massime che, per motivi storici, rimangono nei valori delle coordinate di tipo CHS. Pertanto, quando si dispone di un accesso LBA, almeno teoricamente, viene a cadere il problema del kernel e dei file del sistema di avvio che devono trovarsi entro il cilindro numero 1 023.

159.7   Memoria cache

L'accesso ai dati dei dischi è un'operazione relativamente lenta e spesso si ripetono accessi successivi a zone contigue, oltre che alle stesse zone con variazioni successive dei dati.

Per ridurre gli accessi ripetuti al disco, i sistemi operativi utilizzano generalmente una memoria cache, riservando parte della memoria RAM, con la quale le operazioni di lettura e scrittura vengono filtrate in modo da evitare richieste ridondanti nel breve periodo. In questo modo, un settore appena letto, se viene richiesto nuovamente dallo stesso programma o anche da un altro, risulta subito disponibile senza disturbare il disco. Nello stesso modo funziona l'operazione di scrittura che viene rinviata a un momento successivo in modo da avere accumulato un blocco di dati più grande.

La memoria cache viene scaricata periodicamente, a intervalli regolari. Tuttavia, a causa di questo meccanismo, uno spegnimento accidentale dell'elaboratore può comportare una perdita parziale dei dati, se le operazioni di scrittura accodate nella memoria cache non sono state trasferite in tempo nel disco.

Oltre all'azione dei sistemi operativi, si aggiunge spesso una memoria cache nell'hardware della stessa unità a dischi. Questa non può essere controllata tanto facilmente se non attendendo qualche secondo prima di spegnere l'elaboratore dopo aver completato la procedura di arresto del sistema, in base al tipo di sistema operativo utilizzato.

159.8   File system Unix

I file system dei vari sistemi Unix condividono lo stesso tipo di impostazione e di conseguenza si utilizza una terminologia comune per descriverne le varie parti.

Semplificando molto le cose, si può immaginare che il file system Unix sia composto da due strutture che si sovrappongono: inode e directory.

La struttura di inode e blocchi di dati è sufficiente a definire le caratteristiche e il contenuto dei file. La struttura di directory permette di raggiungere i file per nome, organizzandoli nel modo consueto, attraverso diramazioni più o meno accentuate.

Nel superblocco, tra le altre cose, viene modificato un indicatore particolare (un flag) quando il suo file system viene innestato. Nel momento in cui si esegue il distacco, l'ultima cosa a essere modificata nel file system è l'indicatore di apertura che viene riportato al livello normale. In questo modo, ogni volta che si innesta un file system Unix è possibile verificare se ne è stato eseguito correttamente il distacco. Se risulta che l'attività nel file system non è stata conclusa correttamente si può temere che i dati siano danneggiati (ovvero che siano incoerenti).

Figura 159.15. File system Unix.

file system unix

159.8.1   Directory e inode

Chi non ha mai avuto a che fare con un sistema Unix può trovare difficoltà a comprendere cosa siano gli inode, mentre questo è necessario per poter intendere correttamente cosa siano i collegamenti.

Un file system Unix ha due livelli di astrazione logica: inode e directory. Nella parte più bassa si trova il disco scomposto in blocchi di dati. Un file di qualunque tipo è composto da una serie di questi blocchi (eventualmente anche nessun blocco) e queste informazioni sono raccolte in un inode. L'inode viene identificato in base a un numero riferito alla tabella di inode.

Una directory è un file (cioè un inode come gli altri) che ha il compito speciale di raccogliere una serie di riferimenti ad altri inode, a cui abbinare il nome relativo. Le voci contenute in una directory sono dei collegamenti (indicati più precisamente come collegamenti fisici o hard link) a degli inode.

Il termine «directory» deriva da questo: si tratta di un elenco di nomi a cui si associa il numero di inode corrispondente.

A questo punto, potrebbe essere interessante distinguere le informazioni contenute negli inode, da quelle che invece appartengono alle voci delle directory.

L'inode contiene le informazioni necessarie a raggiungere i blocchi di dati che compongono il file, oltre alle informazioni seguenti:

La directory contiene una serie di voci, dove ognuna di queste contiene a sua volta:

Figura 159.16. Inode, directory e file.

inode, directory e file

159.8.2   Collegamenti o link

Come descritto nella sezione precedente, le voci di una directory contengono ognuna un riferimento (detto comunemente collegamento) a un inode. Più voci della stessa directory, o di directory differenti, possono puntare allo stesso inode. Quando si cancella un file, si cancella la voce della directory e il numero di riferimenti contenuti nell'inode viene ridotto. Quando questo raggiunge lo zero, quel numero di inode torna a essere disponibile.

Questa possibilità di avere riferimenti multipli allo stesso inode è ampliata dalla presenza dei cosiddetti collegamenti simbolici, o symlink, che sono solo file contenenti un riferimento a un altro file.

Per distinguere questi due tipi di collegamenti, si può parlare di collegamenti fisici, o hard link, per fare riferimento ai collegamenti che puntano direttamente agli inode.

Figura 159.17. Collegamenti. In questa figura si può notare che: i file /bin/arch e /sbin/arch sono la stessa cosa, in quanto corrispondono allo stesso inode; il file /sbin/architett è un collegamento simbolico a /bin/arch.

collegamenti

159.9   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome memoria_di_massa_introduzione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!