La suddivisione di un disco è così articolata: il disco magnetico è suddiviso in tracce concentriche una traccia è suddivisa in spicchi di disco detti settori, i settori sono suddivisi in gruppi di blocchi detti cluster. Il File System – principi generali A basso livello (livello hardware) il disco è formattato in blocchi di dimensione usualmente di 512 byte l’uno (talvolta 256 byte o 1024 byte) detti blocchi fisici. A livello del file system esiste un altro tipo di blocco (record), detto blocco logico, usualmente di dimensione tra 1024 e 4096 byte. La dimensione del blocco logico deve essere comunque mutiplo o sottomultiplo di quella del blocco fisico. Una volta fissate tali ampiezze tutti i blocchi logici hanno uguale dimensione tra loro e così quelli fisici. 1
Il File System – principi generali Esiste quindi una possibile relazione fra record logici e fisici. Si indica con fattore di blocco il numero di blocchi logici contenuti in un blocco fisico. I blocchi logici si dicono: sbloccati – se blocco logico e fisico hanno la stessa dimensione bloccati – se il record logico ha misura inferiore a quello fisico ( un blocco fisico contiene un gruppo di blocchi logici) multiblocco – se occorrono più blocchi fisici per memorizzare un blocco logico 2
Il File System – principi generali Un file è costituito da una sequenza di blocchi logici. Un primo problema è con quali criteri memorizzare questi blocchi su disco. Vi possono essere: Allocazione contigua Allocazione concatenata Allocazione indicizzata Tra i vari tracce, settori e blocchi esistono delle zone di suddivisione dette gap che servono a segnare il termine di una traccia di un settore o di un blocco e l’inizio di un altro. 3
La allocazione contigua presuppone che vi siano sul disco un certo numero di blocchi logici contiguo disponibili adeguato per memorizzare il file ed eventualmente ulteriori dati futuri. Questa scelta pone ovviamente problemi per trovare lo spazio sufficiente e adeguato (in alcuni casi potrebbe essere eccessivo). Il File System - principi generali Ha anche il vantaggio di un recupero dati e lettura particolarmente veloci. Per contro presenta difficoltà per individuare e gestire adeguatamente gli spazi disponibili. Con questo tipo di sarà però facile tener conto del posizionamento dei dati, in quanto partendo da un certo blocco essi sono disposti sequenzialmente. 4
Il File System – tipi di allocazione La allocazione concatenata prevede che i blocchi impegnati su un file non siano più contigui, ossia in sequenza, ma posizionati in diversi punti del disco Tali blocchi sono individuati tramite un puntatore al primo blocco. Ogni blocco contiene poi puntatori al blocco successivo. Il file è quindi memorizzato come una “catena di blocchi”. Difetto: nella allocazione concatenata la perdita di un riferimento al blocco successivo fa perdere tutti i dati dopo di esso. è necessario sempre scansire il file sequenzialmente per individuare il dato desiderato Adatta a file sequenziali (tipicamente file di testo) Non adeguata a files con operazioni ad accesso diretto (files di record) 5
Il File System – tipi di allocazione La allocazione indicizzata prevede che i blocchi impegnati su un file siano individuati tramite un apposito indice che ne elenchi la posizione su disco Adatta sia a file sequenziali che ad accesso diretto. La bitmap dei blocchi è una struttura, memorizzata nel file system, atta memorizzare i blocchi liberi e quelli occupati associando in essa ad ogni blocco i valori 0 e 1. Essa serve ad individuare quali blocchi siano disponibili per l’utilizzo. Ma come è possibile capire quali blocchi sono occupati o liberi ? 6
Il File System – tipi di allocazione La FAT (File Allocation Table) è un noto file system utilizzato in DOS, nelle prime versioni di Windows e successivamente, con ulteriori modifiche ed aggiornamenti, in Windows 95 e 98. Essa individua i blocchi associati ad un file tramite una tabella nella quale ogni elemento rappresenta un cluster di blocchi Gli elementi della FAT risultano linkati fra loro tramite il valore in essi contenuto, definendo un collegamento quindi anche tra i blocchi a cui sono associati. E’ utilizzata ancora, ad esempio, nelle penne USB. Esistono diverse versioni di FAT (FAT12, FAT16, FAT32), che si distinguono soprattutto per la capacità massima di memoria gestibile. La indicazione numerica indica l’ampiezza in bit degli elementi della tabella FAT. Ovviamente quindi: più bit l’indice può essere più grande maggior numero di blocchi indirizzabili 7
Il File System – la FAT Evoluzione di FAT: FAT 12 – versione FAT iniziale (fino a DOS 3.3) Adatta a floppy (1,4 Mb) e hard disk di piccole dimensioni (< 32 Mb) FAT 16 – dal 1998 (DOS 4.0 e succ.) Utilizzata anche da Windows 95 capace di gestire HD fino a 2Gb FAT 32 – Utilizzata da Windows 98 e ME Supporta HD oltre i 2Gb 8
Il File System – la FAT Valori limite della FAT 32: Dimensione massima del singolo file: 4Gb Dimensione massima del volume (partizione): 2 Tb Lunghezza massima nomi di file: 255 caratteri a) Non supporta meccanismi di protezione dei files b) Non supporta la crittografia dei files in modo nativo c) Non supporta la compressione dei files in modo nativo Riguardo al punto (a) FAT mostra le sue origini di file system per semplici sistemi monoutente. E’ relativamente di semplice implementazione e quindi anche veloce. Per questo viene impiegata spesso nelle memorie di massa compatte (SD, chiavette, e simili) 9
Il File System - NTFS Un altro file system assai utilizzato nei prodotti Microsoft è NTFS. NTFS nasce negli anni ’90 quando Microsoft decide di sviluppare un sistema operativo alternativo ad OS/2 di nome NT (New Technology) Rappresenta una evoluzione rispetto a FAT perché: Supporta “journaling”, ossia l’annullamento, in sicurezza, della ultima operazione su disco, se essa fallisce. Ha un completo sistema di permessi di accesso in relazione alle utenze Supporta Unicode (set ampio di caratteri) nei nomi dei files. Supporta files e dischi di grandi dimensioni (>= 16 Tb). Utilizzato in tutta la gamma dei sistemi operativi NT, quali Windows NT, Windows 2000, Windows XP, Vista, 7 e successivi oltre che nelle versioni server di Windows. 10
Il File System – tempo di accesso Il Tempo di Accesso ad un dato si definisce come al somma dei tempi: Tempo di seek: ossia quanto tempo ci mette a muovere la testina sulla traccia voluta Tempo di latenza: ossia dopo quanto tempo dal posizionamento sulla traccia è possibile leggere effettivamente i dati (dovuto al tempo di posizionamento del dato sotto la testina) Tempo di trasferimento: ossia tempo necessario per trasferire effettivamente il dato una volta assunto il necessario posizionamento. E’ legato all’ampiezza di banda, ossia quanti byte si riescono a trasferire per unità di tempo. Ossia: T I/O = T seek + T latenza + T trasferimento 11
Il File System – gestione richieste La gestione di una serie di richieste accodate è più efficacemente effettuabile con certe strategie di risposta alle richieste stesse. La più semplice strategia di risposta alle varie richieste è quella di svolgerle nella stessa sequenza in cui sono accodate. Tale metodo si chiama FCFS (Firts Come First Served). Ovvi svantaggi di tale metodo è che, siccome le richieste arrivano in ordine sparso, non ottimizza gli spostamenti della testina (ossia la somma dei delta degli stessi risulta alta). Ad esempio nel caso della sequenza: 52, 100, 170, 25, 122, 15, 130, 77, 81 S delta = abs(100 – 52) + abs(170 – 100) + abs(25 – 170) + … 12
Una strategia migliore della precedente è data dal Metodo SSTF (Shortest Seek Time First) Il File System – gestione richieste Tale strategia prevede di rendere minimo il delta tra due richieste e si realizza andando a ordinare le richieste opportunamente. In pratica data la solita sequenza: 52, 100, 170, 25, 122, 15, 130, 77, 81 SSTF le serve nell’ordine: 52, 77, 81, 25, 15, 100, 122, 130, 170 Il principale difetto di questa strategia, che potrebbe sembrare l’ottimale, è che tende a esaudire richieste vicine a quelle correnti e questo potrebbe comportare grosse attese per richieste lontane dalle tracce dove si stà lavorando. 13
Il File System - gestione richieste Per ovviare alla problematica di SSTF è stato proposto l’algoritmo SCAN. SCAN ordina le richieste considerando la più prossima alla corrente. Scelto il verso esso procede ad ordinare le richieste in un verso e poi arrivato alla fine nel verso opposto. Questo algoritmo non è ottimale negli spostamenti della testina, ma evita di ignorare per lungo tempo richieste in posizione “periferica”. Inoltre anche questo algoritmo possiede la problematica di esaudire le richieste con tempi non uniformi (le richieste, ulteriori, sulle zone estreme sono servite con due passate in stretta sequenza, mentre le altre attendono) 14
Il File System – gestione richieste Per uniformare il servizio di SCAN è stato proposto C-SCAN. Esso, una volta raggiunto l’estremo del disco, invece di invertire la direzione di scansione, si sposta sul margine opposto del disco iniziando una nuova scansione sempre nello stesso verso, quindi in modo ciclico. Conseguenza di ciò è l’eliminazione delle non uniformità (vd. SCAN) nella risposta alle richieste. 15