[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


51. Memoria di massa

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, anche se ci sono ancora i nastri magnetici, graditi in passato per la loro economicità.

51.1 Nastro

Il sistema di memorizzazione a nastro è stato il primo (a parte le schede perforate) a essere utilizzato con gli elaboratori. Attualmente, si utilizzano quasi esclusivamente cartucce a nastro magnetico di vario tipo.

La memorizzazione a nastro permette la registrazione di dati in modo sequenziale. Questo significa che la modifica di dati può avvenire solo aggiungendo queste modifiche alla fine, e non intervenendo 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.

51.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. *1*

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 irreversibile attraverso un fascio laser. Sono ottimi per archiviare dati una volta sola, e la loro vita media è superiore a quella di qualunque altro tipo di memorizzazione.

51.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, e quelli che possono essere asportati e quindi sostituiti.

Il disco fisso ha normalmente una capacità molto superiore a un disco rimovibile, e permette 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.

51.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) o plastico, 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.

37.jpg

Figura 51.1: 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.

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.

38.jpg

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

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 collocati assieme sullo stesso asse. 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.

51.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, si utilizzano coordinate composte da cilindro, testina e settore.

39.jpg

Figura 51.3: Schema di un disco fisso visto lateralmente.

Il cilindro rappresenta un gruppo di tracce, tutte alla stessa distanza dal centro; 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, e questa 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.

51.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 generalmente di unità memorizzazione di grande capacità, ma ad accesso piuttosto lento.

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.

51.2.5 Dischi ottici

Mentre i dischi magneto-ottici si comportano in maniera analoga a quelli magnetici, i dischi ottici richiedono una registrazione sequenziale, ed eventualmente consentono 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.

51.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 filesystem, cioè qualcosa che definisce un'organizzazione dei dati nel disco e il modo per potervi accedere.

Un disco senza filesystem è 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 filesystem (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. *2*

51.4 Partizioni secondo la tradizione Dos

I dischi fissi, e anche quelli rimovibili di grandi dimensioni, possono essere suddivisi in partizioni. Questa suddivisione permette, per esempio, di fare convivere diversi sistemi operativi nello stesso disco fisso.

Teoricamente, un disco di qualunque genere può essere suddiviso in partizioni, oppure anche no. In pratica, i dischi fissi vengono sempre suddivisi in partizioni, anche se si dovesse trattare di una sola, mentre i dischi rimovibili no. In particolare, in presenza di dischi rimovibili di grandi dimensioni, 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.

51.4.1 MBR

Nel sistema di partizionamento secondo il modello utilizzato dal Dos, le informazioni 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, 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.

51.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 filesystem che contiene o che dovrebbe contenere. La partizione estesa viene definita con il codice `5' (ovvero 0x05 in esadecimale) ed è il contenitore di altre partizioni più piccole, dette partizioni logiche.

GNU/Linux utilizza nomi di dispositivo particolari per identificare l'intero disco o una singola partizione. In pratica, quando si fa riferimento a una partizione, si aggiunge un numero al nome del 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. Per cui, se si hanno tre partizioni primarie e si rimuove la seconda per scomporla in due parti, si otterrà una seconda partizione più piccola e una quarta partizione, collocata tra la seconda e la terza.

51.5 Firmware

I dischi, di qualunque tipo essi siano, non sono solo contenitori di dati. Nei sistemi operativi attuali, sono coinvolti 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 i386) 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 direttamente il kernel del sistema operativo.

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 i386 esiste una limitazione: le sue funzioni non permettono di accedere a zone di un disco oltre il 1024-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 1023.

Il firmware degli elaboratori i386 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 1024 cilindri, non può superare gli 8 Gbyte.

51.6 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ù consistente.

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 hanno fatto in tempo a essere trasferite 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.

51.7 Filesystem Unix

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

Semplificando molto le cose, si può immaginare che il filesystem 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 filesystem viene montato. Nel momento in cui viene smontato, l'ultima cosa a essere modificata nel filesystem è l'indicatore di apertura che viene riportato al livello normale. In questo modo, ogni volta che si monta un filesystem Unix è possibile verificare se questo era stato chiuso (smontato) correttamente. Se risulta che l'attività nel filesystem non era stata conclusa correttamente si può temere che i dati siano danneggiati.

51.7.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 filesystem 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 un compito speciale, quello di raccogliere una serie di riferimenti ad altri inode, a cui abbinare altre informazioni, come il nome e i permessi. Le voci contenute in una directory sono dei collegamenti (indicati più precisamente come collegamenti fisici o hard link) a degli inode.

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

Inode

L'inode contiene le informazioni necessarie a raggiungere i blocchi di dati che compongono il file, e inoltre:

  • la data dell'ultimo accesso;

  • la data dell'ultima modifica;

  • la data di creazione (dell'inode);

  • il tipo di file;

  • i numeri UID e GID che rappresentano l'utente e il gruppo proprietari;

  • i permessi;

  • un contatore delle voci delle directory che vi fanno riferimento (ovvero, un contatore dei collegamenti fisici).

Directory

La directory contiene una serie di voci, e per ognuna di queste:

  • il nome;

  • il riferimento all'inode (cioè il collegamento fisico).

51.7.2 Collegamenti o link

Come si è visto 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, 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.

51.8 Riferimenti

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Bisogna ricordare che siamo immersi in una grande quantità di fonti magnetiche, cominciando dal campo terrestre, a cui si aggiungono tutti quelli generati dall'attività umana: un telefono cellulare acceso, appoggiato vicino a un dischetto magnetico provoca la sua cancellazione.

2.) I CD-ROM da utilizzare con i sistemi Unix utilizzano normalmente un filesystem 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 esattamente come nello standard ISO normale.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]