File System

Materie:Appunti
Categoria:Sistemi

Voto:

2.5 (2)
Download:110
Data:28.09.2006
Numero di pagine:11
Formato di file:.doc (Microsoft Word)
Download   Anteprima
file-system_1.zip (Dimensione: 14.89 Kb)
trucheck.it_file-system.doc     68 Kb
readme.txt     59 Bytes


Testo

GESTIONE DEI FILE
Il file system è, informalmente, un meccanismo con il quale i file sono immagazzinati e organizzati su un dispositivo d’archiviazione di massa. Più formalmente, è l'insieme dei tipi di dati astratti necessari per la creazione, la memorizzazione, l'organizzazione gerarchica, la manipolazione, l'accesso e la lettura dei dati.
Il file system può essere strutturato in tre livelli:
• file system fisico: livello a diretto contatto con il gestore del disco fisso; ha una visione fisica del supporto, conosce le sue tecniche d’utilizzo e le strutture a supporto del sistema di memorizzazione
• gestione dei file: livello che ha il compito di mettere in relazione i cluster fisici a cui fa riferimento il livello precedente, con i blocchi in cui è stato suddiviso ogni file. Esso opera solo sui dati veri e propri e non ha alcuna capacità interpretativa dei contenuti o dell’organizzazione logica di questi dati ma ne permette l’accesso diretto agli stessi
• file system logico: livello di natura logica a diretto contatto con i programmi e l’interfaccia utente, gestisce la struttura organizzativa del file system.
Un file è caratterizzato da una serie di attributi:
• nome: identifica simbolicamente il file, composto da caratteri alfanumerici e simboli (con opportune regole di validità), è scelto dall’utente.
• file_id: codice identificativo del file utilizzato dal sistema operativo per contraddistinguerlo univocamente a suo interno.
• locazione: puntatore o coordinate che identificano lo spazio fisico dove è allocato o inizia l’allocazione del file.
• tipo: codice che indica l’applicazione utilizzata o la codifica adottata per produrre e/o interpretare le informazioni che compongono il file. Questi alcuni tipi comuni:
o .exe .com .bin : file di tipo eseguibile
o .lib .dll: librerie eseguibili
o .bat .sh .scr : file di script, insiemi di comandi per interpreti
o .txt .doc .pdf : file di testo
o .gif .jpeg .bmp : file di immagini
o .zip .tar .grz : file compressi
• creazione: informazioni che identificano l’istante in cui è stato creato il file.
• modifica: informazioni che identificano l’istante dell’ultimo accesso al file
• protezione: insieme di bit che specificano il tipo di operazioni ammissibili per quel file (ex. sola lettura, nascosto, ecc ).
• dimensione: grandezza effettiva del file (Byte).
• password: informazione necessaria per poter accedere al file.
• lock: bit che specifica se il file è attualmente condiviso da altri processi.
• offset: puntatore che indica la posizione attuale dove verrebbe applicata un’eventuale operazione di ricerca, estrazione o inserimento.
Operazioni sui file
Le principali operazioni applicabili sono:
• creazione: che richiede di individuare i dati che comporranno il file, la definizione degli attributi, lo spazio fisico dove allocarlo e la sua collocazione all’interno della struttura gerarchica dei file system
• apertura: permette l’accesso al file, richiede la predisposizione del sistema operativo di un meccanismo di accesso utilizzabile dal processo che lo ha richiesto (handle del file)
• chiusura: determina il rilascio del meccanismo di accesso
• lettura: permette la lettura dei dati contenuti nel file
• scrittura: duale della precedente ma implica la sovrascrittura del file o l’inserimento di dati da una posizione specificata da un apposito puntatore
• aggiunta(append): permette l’inserimento di nuovi dati alla fine del file
• posizionamento(seek): permette il posizionamento del puntatore ove inserire i nuovi dati
• modifica attributi: modifica il valore degli attributi di un file
• cancellazione: elimina il file dalla memoria secondaria
Struttura dei file
La struttura dei file comprende tutte quelle informazioni che permettono di interpretare correttamente i dati che compongono il file. Ogni file ha una sua struttura logica denominata generalmente formato che può essere più o meno strutturato.
Per quanto riguarda invece la struttura fisica si possono individuare tre categorie:
• byte stream: il file è composto da una sequenza lineare di informazioni omogenee, la cui unità gestibile è il byte
• record stream: il file è composto da una sequenza di informazioni omogenee tra loro, ma non obbligatoriamente al loro interno, la cui unità logica gestibile è il record (generico archivio composto da strutture dati complesse)
• ad albero: il file è sdoppiato in due unità, la prima riconducibile ad un file a sequenza di record contenente i dati veri e propri, la seconda composta da una lista di elementi associati ai record, formati da una chiave
Accesso ai file
Possiamo individuare tre modalità di accesso distinte:
• accesso individuale: metodo più semplice basato sulla lettura di tutte le informazioni che compongono il file, fino ad arrivare a quella desiderata. L’operazione di scrittura si distingue tra write ed append. Il suo vantaggio è la semplicità e la velocità se deve accedere sequenzialmente a tutti i record, il suo limite principale l’estrema lentezza
• accesso diretto: questo metodo è applicabile a file del tipo a sequenza di record e ad albero di chiavi e richiede l’utilizzo di una lista di puntatori ad ognuno dei singoli record. La lista a sua volta può essere. Una struttura lineare e quindi individuare il valore del puntatore in base alla chiave, e di conseguenza al record desiderato in una sola operazione. Questa soluzione garantisce un accesso più veloce ai dati nel caso di file composti da molti record e l’accesso indicizzato permette di utilizzare più liste di indici per lo stesso insieme di record.
Struttura delle directory
Il concetto di directory è stato introdotto per poter organizzare in forma logica tutti i file presenti nel file system. La struttura globale di una directory può essere di tre tipi:
• a livello singolo: tutti i file sono allocati in una grande lista sequenziale, devono avere molti nomi identificativi diversi, e non vi è possibilità di creare ulteriori contenitori logici all’intero di questa directory
• ad albero: per gestire due o più utenti, si potrebbe ricorrere ad una versione gerarchica del metodo a livello singolo: al primo livello(master file directory) vengono creati tanti contenitori(user file directory) quanti sono gli utenti accreditati su quel file system, e ad ogni utente viene associata una directory ad utilizzo esclusivo del tipo a livello singolo. Inoltre per non incombere nel problema dell’eccessiva numerosità di file per utente si introduce una struttura a più livelli in cui il primo (root level o radice) può ospitare sia singoli file che sottodirectory le quali, a loro volta, possono ricorsivamente ospitare altri file singoli o altre sottodirectory. In questa struttura si utilizza il concetto di percorso o path name tipica della struttura ad albero. Viene detta infine directory corrente quella directory dove sono posizionati i file cui l’utente può accedervi direttamente
• a grafo: questa struttura è una generalizzazione di quella precedente infatti la condivisione avviene solo tramite gli indici di accesso e non ha niente a che vedere con i contenuti: in parole povere non abbiamo due file uguali, ma un unico file raggiungibile da due percorsi distinti (collegamenti). Questa struttura viene detta a grafo senza cicli perché deve soddisfare ad una condizione: non sono ammesse condivisioni che portino alla creazione di in ciclo chiuso.
Operazioni sulle directory
Le principali azioni applicabili ad una directory sono:
• crea: alloca nel file system una nuova directory all’estremità del percorso specificato, o all’interno della directory corrente
• elimina: rimuove dal file system la directory specificata
• cambia: sposta la directory corrente specificandone il nuovo valore
• rinomina: permette di modificare l’identificatore della directory selezionata
• collega: crea un collegamento relativo ad un file/directory
• montaggio: permette l’allocazione logica di un’intera struttura gerarchica a directory all’interno della directory corrente detta punto di montaggio. In sintesi un intero file system potrebbe essere montato all’interno della directory users del file system globale del sistema
L’allocazione dei file in memoria
Le varie tecniche atte a risolvere questo problema sono le seguenti:
• allocazione contigua: si suddivide il file in tanti pezzi di dimensione di un blocco e poi si cerca nel disco rigido una sequenza contigua di blocchi pari a contenere ordinatamente l’intero file. Per gestire questo tipo di allocazione è sufficiente una lista composta da tre parametri: l’indirizzo fisico del primo blocco libero, il numero di blocchi liberi che compongo la sequenza e il puntatore all’elemento successivo.
o Vantaggi: strutture dati semplici e velocemente aggiornabili, ottimizzazione dei tempi di accesso fisico alle informazioni (il seek time e il latency time non sono più rilevanti), buona velocità per file ad accesso sequenziale e ad accesso diretto
o Svantaggi: presenza di frammentazione esterna e la complessità di implementazione degli algoritmi per ricorrere ad un’efficiente politica di allocazione dei blocchi, impossibilità di gestire facilmente la crescita di un file
• allocazione a lista concatenata: si occupano via via i blocchi che rimangono liberi, anche senza un ordine particolare, e si associa ad ogni file una lista concatenata dei blocchi utilizzati. Per poter accedere ai file è sufficiente un’altra struttura dati molto semplice, ad esempio una tabella in cui ogni riga rappresenta un file ed è composta dal nome del file e dai suoi attributi e che utilizza come unità di allocazione una serie di blocchi contigui (cluster).
o Vantaggi: riduzione dell' indirizzo dei puntatori utilizzati per realizzare la lista concatenata; maggiore velocità di accesso fisico; riduzione delle tabelle di gestione dei file e delle aree libere; riduzione della frammentazione esterna
o Svantaggi: aumento della frammentazione interna; scarsa affidabilità
• File Allocation Table (FAT) del DOS: utilizza una struttura dati di appoggio dove vengono memorizzati i puntatori per realizzare la struttura concatenata che descrive l’allocazione dei file. La tabella è composta da tanti elementi quanti sono i cluster del disco ed ogni elemento può contenere il valore del puntatore ad un cluster o i valori prefissati -1 per indicare l’ultimo cluster di un file e 0 per indicare un cluster vuoto. L’unica differenza rispetto all’allocazione a lista concatenata pura è la mancanza del campo puntatore all’interno dell’area dati dei singoli cluster. Infatti la questa area detta descrittore del file è composta da: nome ed estensione del file, una serie di bit che ne specificano gli attributi, data e ora di creazione e il puntatore al primo cluster e la dimensione del file.
o Vantaggi: elimina lo spreco di memoria del disco imputabile ai puntatori e ne riduce gli accessi
o Svantaggi: non risolve del tutto il problema dell’affidabilità del sistema
Vi sono varie versioni di FAT caratterizzate dalla dimensione dei puntatori, rispettivamente FAT 12, FAT 16 e FAT 32 questa ultima utilizzata su sistemi operativi come Windows 98.
• allocazione indicizzata: la tecnica consiste nel riportare direttamente i valori di tutti i puntatori ai vari cluster che compongono il file in un ulteriore cluster del disco, che fa da supporto ai primi, associato univocamente al file in esame.
o Svantaggi: assembla le proprietà delle due precedenti tecniche; permette di caricare in memoria solo il blocco degli indici del file desiderato e quindi non tutta la FAT
o Svantaggi: il numero degli indici scrivibili in un cluster sono limitati dalla dimensione del cluster ma si possono comunque concatenare più cluster indici o utilizzare cluster di puntatori che a loro volta puntano ad altri cluster puntatori
• i – node (index-node) di Unix: ogni file viene descritto da un cluster (blocco per Unix) contenente tra l’altro i puntatori ai blocchi dati del file. La struttura di un i-node è composta da tre parti:
• attributi del file: tipo di file, operazioni consentite, l’identificativo dell’utente, identificativo del gruppo a cui appartiene l’utente, la dimensione del file, gli orari di creazione e dell’ultima modifica, un campo contenitore degli utenti che condividono questo file
• gli indici ai vari blocchi: la zona contiene 15 puntatori (4 Byte) organizzati nel seguente modo:
• accesso diretto: 12 indici che puntano rispettivamente ai primi 10 blocchi che compongono il file
• accesso indiretto singolo: indice che punta ad un i-node particolare anch’esso associato allo stesso file contenente solo i puntatori ai successivi blocchi dati del file
• accesso indiretto doppio: indice che punta ad un i-node indiretto, contenente solo puntatori ad altrettanti i-node indiretti che potranno contenere gli indici dei successivi blocchi dati del file
• accesso indiretto triplo: indice che punta ad un i-node indiretto contenente solo puntatori ad altrettanti i-node indiretti, che a loro volta punteranno ad altrettanti i-node indiretti che finalmente potranno contenere gli indici dei successivi blocchi. Questa tecnica è la più versatile
• informazioni per l’individuazione del file: identificatore del driver e del dispositivo contenente il file e il percorso (path) del file.
Implementazione delle directory
Una directory è un file di tipo speciale, che ha il compito di raggruppare tra loro i file in una struttura logica scelta liberamente dal programmatore. La sua implementazione più semplice è una tabella dove ad ogni riga viene associato un file oppure una soluzione alternativa e più efficiente è quella di associare ad ogni riga una lista concatenata di elementi. Due problemi principali sono la gestione di collegamenti e la lunghezza dei nomi. Per il primo problema la soluzione più veloce è quella di duplicare i dati del file condiviso in tutte le directory che contengono il suo link, per il secondo si utilizzano dei nomi a lunghezza variabile con due diverse soluzioni: la prima consiste nell’aggiungere in ogni elemento della tabella descrittore della directory un campo preliminare detto lunghezza che permette di saltare all’elemento successivo nel caso di lettura sequenziale; la seconda soluzioni prevede invece l’accomodamento alla fine della tabella di un’area buffer dove descrivere sequenzialmente i vari nomi degli oggetti che compongono la directory separati da un elemento terminatore standard, e posizionare nel campo nome di ogni oggetto il puntatore all’inizio del nome all’interno del buffer.
Caratteristiche dei file system
Tipologie di backup:
• backup completo, se vengono ricopiati tutti i dati nel nuovo supporto
• backup incrementale, se vengono salvati solo quei file che hanno subito una modifica o sono stati creati dopo la precedente operazione di backup completo
• backup differenziale, se vengono salvati solo quei file che hanno subito una modifica o sono stati creati dopo la precedente operazione di backup completo. In questo caso si parte sempre e solo dall’ultimo backup completo effettuato
Fsck (Linux) e scandisk (Windows)
Il funzionamento di questi due comandi consiste nell’analizzare la lista dei blocchi liberi e riempire una particolare tabella detta tabella dei blocchi liberi. Successivamente effettua una scansione di tutti gli i-node presenti nel file system, annotando su una seconda tabella, detta dei blocchi in uso, se e quante volte viene utilizzato ogni singolo blocco. A questo punto inizia la verifica vera e propria, confrontando, elemento per elemento le due tabelle e verificando tutti i vari casi di incongruità (6). Infine il programma effettua anche la scansione di tutte le directory.
Tipi di file system
• NTFS (NT File System): file system della Microsoft da Windows 2000, si rifà alle strutture antecedenti ma tratta il file come se fosse composto da una serie di campi detti attributi che ne definiscono le caratteristiche e il contenuto. La struttura base è il volume, che può occupare una parte di disco fisico, tutto, o addirittura essere spalmata su più supporti fisici distinti. Il volume è strutturato come una sequenza di cluster, della dimensione da 512 a 64KB. Il formato generale di un volume formattato è composto da quattro parti:
o Partition boot sector: contiene le procedure richiamate all’avvio della partizione in esame, viene memorizzato a partire dal primo settore del disco (0) e può occupare fino ad un massimo di 16. Inizia sempre con un’istruzione di salto che permette di raggiungere il bootstrap code posizionato più avanti
o Master File Table: o tabella dei file, composta da elementi di dimensione fissa (1KB) detti record MFT che descrivono le caratteristiche e puntano ai cluster dati di ciascun file dell’NTFS
o file di sistema: descrive il file su cui vengono registrate temporaneamente tutte le operazione da effettuare sui file
o area file: contiene le informazioni relative al volume
A queste parti succedono i record dei file definiti dall’utente.
• ext2: Linux separa il file system reale dal sistema operativo e li raccorda con un nuovo livello di interfaccia, detto file system virtuale o VFS (Virtual File System). Quest’ ultimo adotta un’impostazione tipica della programmazione ad oggetti, ed identifica al suo interno tre tipi di oggetti:
o file system: è un insieme di file organizzati gerarchicamente ed il suo scopo è quello di individuare gli i-node che appartengono ad un certo file
o i-node: rappresenta il file nella sua completezza, contiene le informazioni relative al nome, agli attributi, al possessore, a diritti, ed ovviamente anche i puntatori ai blocchi che contengono i dati veri e propri
o file: rappresenta il punto di accesso ai blocchi che contengono i dati effettivi del file, contiene il puntatore alla posizione d’accesso corrente ai dati del file in oggetto permettendo un accesso sequenziale alle informazioni
Le directory vengono trattate come i file ma contengono solo puntatori ad altri i-node e non fanno riferimento esplicito a blocchi di dati.
• BFS: il Be File System usato su BeOS
• EFS: un vecchio file system a blocchi usato su IRIX
• Ext3: Extended filesystem 3, diffuso su sistemi GNU/Linux (ext2+journaling)
• HFS: Hierarchal Filesystem, usato su vecchie versioni di Mac OS
• HPFS: High Performance Filesystem, usato su OS/2
• ISO 9660: usato su dischi CD-ROM e DVD-ROM
• Minix: Usato su sistemi Minix
• UDF: File system a pacchetti usato su supporti WORM/RW, CD-RW e DVD
• ZFS: Creato dalla Sun

1

Esempio