Gestire un file system – Parte 2

Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. La libreria Microchip MDD (Memory Disk Drive) permette di trasferire e condividere i dispositivi di memoria portatili tra un sistema embedded e un personal computer, fornendo le funzioni di I/O in grado di leggere e/o scrivere su questi dispositivi di memoria tramite un microcontrollore.

L’MBR

Il Master Boot Record (MBR) contiene le informazioni utilizzate per eseguire il boot dalla card e le informazioni relative alle partizioni definite, fino a un massimo di quattro.

Figura 2: contenuto dell’MBR.

Figura 1: Contenuto dell’MBR

Le Partition Entry presenti nell’MBR (16 byte) sono strutturate come mostrato in Figura 2. In genere, le schede di memoria SD includono una singola partizione attiva.

Figura 3: struttura della partition entry.

Figura 2: Struttura della partition entry

IL BOOT SECTOR

Come indicato in Figura 1, questo è il primo settore di ogni partizione e contiene informazioni relative al file system e puntatori a parti importanti della partizione. Si noti come la prima informazione memorizzata nel boot sector sia un comando di salto a un indirizzo successivo all’area di boot (Figura 3).

Figura 4: struttura del boot sector.

Figura 3: Struttura del boot sector

LA ROOT DIRECTORY

Questa sezione della partizione (si veda la Figura 4) serve a memorizzare, in strutture di 32 byte, le informazioni relative ai file e alle directory.

Figura 5: struttura della root directory.

Figura 4: Struttura della root directory

Ciascuna struttura include il nome del file, la sua dimensione, l’indirizzo del primo cluster del file e l’orario in cui il file è stato creato o modificato. Nel file system FAT16, la root directory si trova nell’area successiva alle FAT; nel file system FAT32, invece, la root è una comune catena di cluster e può trovarsi in qualunque punto dell’unità di memoria.

LA FAT

La File Allocation Table è composta da una serie di elementi, ognuno dei quali è associato a un cluster presente nell’area dati della partizione. Questi elementi sono formati da 2 byte nel caso di file system FAT16, e 4 byte nel caso FAT32; le combinazioni di valori ammissibili per entrambi i casi sono indicate in Figura 5.

Figura 6: i valori del campo FAT.

Figura 5: I valori del campo FAT

Come esempio, si consideri il caso indicato in Figura 6, in cui esistono tre file (File1, File2 e File3) nel file system. File1 e File3 hanno una dimensione minore o uguale a quella di un cluster (e utilizzano i cluster 3 e 6, rispettivamente), mentre File2 occupa ben quattro cluster (4, 5, 7 e 8). Il campo VALUE assume il valore FFFFh nel caso in cui il cluster sia l’ultimo del file, altrimenti punta al cluster successivo. Occorre inoltre osservare come i cluster 0 e 1 siano riservati, e pertanto il primo cluster disponibile nella regione dati è il cluster numero 2. Si noti inoltre che, come avviene in questo caso, non è sempre possibile assegnare cluster contigui a un file: a causa di ripetute operazioni di creazione e rimozione dei file, infatti, si genera una vera e propria “frammentazione” dello spazio su disco, e occorre saltare da una parte all’altra per trovare un cluster disponibile.

Figura 7: catena di cluster nella FAT16.

Figura 6: Catena di cluster nella FAT16

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend