file
Transcript
file
Informatica 11 appunti dalla lezione del 23/11/2010 Il concetto di file • Il file è un insieme unitario di informazioni • Lʼunità è data dalla omogeneità delle informazioni contenute nel file (es.: riguardanti una canzone, riguardanti un documento di testo, etc.) • Tale visione unitaria dellʼinformazione è indipendente dal tipo di dispositiva di memoria su cui è presente il file • Un file può contenere: – un programma, oppure – dati Attributi associati a un file • Nome: insieme di simboli con cui si fa riferimento al file • Tipo: tipo delle informazioni contenute nel file, solitamente indicato con una “estensione” del nome del file (1 o più lettere dopo un punto alla fine del nome del file; ad es.: pdf per i file di testo da leggere con il programma Acrobat Reader, cpp per i programmi scritti in C++, etc.) Attributi associati a un file • Locazione: indicatore della posizione del file allʼinterno del dispositivo di memoria in cui è presente • Dimensione: dimensione del file in byte • Protezione: indicazione dei permessi sul file (chi può solo leggerlo, chi può anche modificarlo, etc.) • Ora e data: indicazione temporale sulla creazione del file, sullʼultimo accesso, sullʼultima modifica • Proprietario: nome del proprietario del file, solitamente chi lo ha creato Operazioni sui file • Ogni operazione sui file viene eseguita dal sistema operativo (in particolare, dalla sua parte dedicata ai file, chiamata file system) • Gli utenti non eseguono operazioni sui file, bensì chiedono al sistema operativo di eseguirle. Operazioni sui file • Creazione: operazione complessa che include – allocazione (ricerca di spazio in memoria) – creazione di un descrittore del file (usato poi per fare riferimento al file) – aggiunta del descrittore nel file system • Scrittura: aggiunta di dati a un file già esistente; i parametri dellʼoperazione sono – nome del file – dati da aggiungere Operazioni sui file • Lettura: prelevamento di dati da un file già esistente; i parametri dellʼoperazione sono – nome del file – indirizzo di destinazione dei dati letti • Le operazioni di scrittura e lettura modificano il puntatore alla posizione corrente, che indica fin dove nel file si è arrivati a scrivere/leggere Operazioni sui file • Riposizionamento: assegnazione di una nuova posizione al puntatore di lettura/ scrittura • Cancellazione: eliminazione di un file esistente mediante indicazione del nome del file – lo spazio occupato dal file viene considerato dal file system come libero – il descrittore del file viene eliminato dal file system Strutture dei file • Un file ha una struttura logica: – i dati del file sono organizzati in unità logiche di lunghezza fissa ma arbitraria, stabilita dal sistema operativo • Un file ha una struttura fisica: – i dati del file sono organizzati in unità fisiche di lunghezza fissa dipendente dal dispositivo di memoria su cui è presente il file • La struttura logica e quella fisica di un file non necessariamente coincidono Frammentazione interna • La lunghezza fissa dei blocchi fisici causa in molti casi uno spreco di spazio • Si consideri un file lungo 1350 byte salvato su un disco con blocchi da 512 byte lʼuno • Questo fenomeno è chiamato frammentazione interna Tipi di accesso ai file • Accesso sequenziale: – i dati sono letti/scritti in sequenza – le operazioni disponibili sono: • lettura/scrittura • posizionamento del puntatore a inizio/fine file • posizionamento al blocco successivo/precedente • Accesso diretto (casuale): – i dati vengono letti/scritti in qualunque posizione – la posizione è specificata in termini di numero di blocchi dallʼinizio del file e di posizione allʼinterno del blocco Raggruppamento dei file • Un singolo file contiene dati o un programma • Uno o più file possono essere raggruppati in cartelle (o directory) che contengono informazioni e riferimenti ai file in essere contenute (di fatto, anche le cartelle sono dei file, dal punto di vista fisico) • Una o più cartelle (solitamente, un gran numero) costituiscono una partizione del dispositivo di memoria (tipicamente, un disco rigido) • Un disco può essere suddiviso in due o più partizioni, indipendenti le une dalle altre Tipi di allocazione • È necessario tenere traccia della corrispondenza tra blocchi fisici dei dischi e il contenuto dei file • Vi sono 3 diversi modi possibili per ottenere tale risultato: – allocazione contigua – allocazione concatenata – allocazione indicizzata • Le informazioni sullʼallocazione dei file sono contenute in una tabella chiamata File Allocation Table presente in memoria centrale Allocazione contigua • I blocchi di un file sono adiacenti • Un descrittore di un file contenente n blocchi è costituito da una coppia (b,n), dove b indica il numero del primo blocco del file nel disco Vantaggi dellʼallocazione contigua • Il beneficio principale è la semplicità di reperimento di un file, che si traduce in tempi di accesso brevi e quindi prestazioni migliori • Per lʼaccesso allʼi-esimo blocco del file basta sommare b e i per ottenere il numero del blocco obiettivo • Per lʼaccesso sequenziale a più blocchi la testina deve rimanere sullo stesso settore del disco e scorrere i blocchi presenti su di esso Problemi dellʼallocazione contigua • Lʼallocazione di spazio per un nuovo file non è altrettanto semplice, perché per un file da m blocchi, occorre trovare m blocchi consecutivi liberi nel disco • Per tale ricerca si possono applicare due diverse strategie: – first fit: la prima zona con m blocchi consecutivi liberi viene usata – best fit: la zona più piccola con m blocchi consecutivi liberi viene usata Frammentazione esterna • Lʼallocazione contigua crea nel tempo spazi vuoti sul disco di dimensioni ridotte (causati dalla creazione e dalla cancellazione di file di diverse dimensioni) • È poco probabile che spazi piccoli vengano utilizzati per nuovi file (di dimensioni probabilmente maggiori) • Questo fenomeno, che provoca il sottoutilizzo del disco si chiama frammentazione esterna Una soluzione • Compattazione del disco: – tutti i file presenti sul disco vengono copiati su un disco ausiliario (es.: un hard disk esterno) – il disco viene cancellato completamente – i file vengono ricopiati nel disco in ordine, senza lasciare spazi vuoti intermedi • In questo modo tutto lo spazio vuoto è reso disponibile in maniera compatta nellʼultima parte del disco • La procedura è molto dispendiosa in termini di tempo e va ripetuta con una certa frequenza Una soluzione migliore • File con extent: – i file vengono memorizzati non in una bensì in due zone di memoria costituite da blocchi contigui: una zona principale e una ausiliaria (chiamata extent) • Algoritmi per la ricerca di zone disponibili su disco sono ancora necessari Descrittori di file con extent • Un descrittore di file di questo tipo indica quattro valori: – b: blocco iniziale della zona principale – e: blocco iniziale dellʼextent – n1: numero di blocci della zona principale – n2: numero di blocci dellʼextent Estensione dellʼuso dellʼextent • Lʼidea dellʼextent può essere estesa a un numero più grande di zone di blocchi occupate da un file • Un file può essere allora costituito da una sequenza di blocchi tale che: – il descrittore del file indica il primo e lʼultimo blocco del file – ogni blocco del file contiene un riferimento al blocco successivo • Si ottiene così lʼallocazione concatenata Vantaggi dellʼallocazione concatenata • Il vantaggio principale è lʼeliminazione completa del problema della frammentazione esterna: non ci sono più spazi liberi inutilizzati nel disco • È vero che una piccola parte del blocco viene occupata dal riferimento e non usata per contenere dati, ma lo spreco è dellʼordine di meno dellʼ1% del disco (0,78% per riferimenti da 4 byte in blocchi da 512 byte) Svantaggi dellʼallocazione concatenata • Lʼaccesso diretto non è possibile: per accedere a un blocco del file bisogna attraversare tutti i blocchi che lo precedono partendo da quello iniziale e seguendo i riferimenti • Lʼaccesso non è efficiente perché la testina del disco deve spostarsi in continuazione da un blocco allʼaltro • Si potrebbe diminuire tale fenomeno raggruppando i blocchi in gruppi più grandi (chiamati cluster), ma a prezzo di un aumento della frammentazione interna • La perdita di un singolo riferimento (a causa di un malfunzionamento del disco) comporta la perdita dellʼaccesso ai blocchi successivi Allocazione concatenata più sicura: uso della FAT • Per evitare che un problema al disco causi la perdita di un riferimento a un blocco, si può trasferire lʼinformazione dei riferimenti in memoria centrale, nella FAT • La FAT contiene un elemento per ogni blocco del disco, con lo stesso numero di riferimento • Ogni elemento della FAT contiene 0 se il blocco corrispondente è disponibile, oppure il numero di blocco concatenato nel file • Se lʼelemento della FAT corrisponde allʼultimo blocco di un file, contiene il valore speciale EOF (End Of File) • Il descrittore di un file deve solo indicare il numero dellʼelemento della FAT corrispondente al primo blocco; il resto della struttura del file è indicato dalla FAT stessa (vd. figura nella slide seguente) Allocazione concatenata con FAT Allocazione indicizzata • Risolve i problemi di scarsa efficienza dellʼallocazione concatenata raggruppando i riferimenti in un unico blocco, chiamato blocco indice • Un blocco indice: – è un vettore di riferimenti ai blocchi di un file – lʼi-esimo elemento del vettore si riferisce allʼi-esimo blocco del file • Il descrittore di un file contiene semplicemente un riferimento al blocco indice del file Vantaggi dellʼallocazione indicizzata • Eliminazione della frammentazione esterna (come per lʼallocazione concatenata) • Accesso diretto ai blocchi efficiente (a differenza dellʼallocazione concatenata) Svantaggi dellʼallocazione indicizzata • Gli elementi del blocco indice che non fanno riferimento ad alcun blocco contengono il valore EOF • Se il file ha pochi blocchi si ha un sottoutilizzo del blocco indice, che ha una dimensione fissa Dimensione del blocco indice • Se è troppo grande, spazio viene sprecato • Se è troppo piccolo, non ci sono abbastanza riferimenti per i blocchi dei file di grandi dimensioni • Solitamente il blocco indice ha la dimensione di un blocco fisico Gestione dei blocchi indice • Esistono tre diverse modalità – schema concatenato – schema multilivello – schema combinato • Tutte presenti nei file system dei sistemi operativi oggi più diffusi Schema concatenato • Il blocco indice contiene riferimenti ai blocchi dei file, tranne che nel suo ultimo elemento • Lʼultimo elemento di un blocco indice fa riferimento a un secondo blocco indice, se reso necessario dalle dimensioni del file • Un elemento contiee EOF se non serve perché tutti i blocchi del file sono stati già referenziati Schema multilivello • Un blocco indice di primo livello contiene riferimenti a blocchi indice di secondo livello • Un blocco di secondo livello contiene riferimenti a blocchi del file Schema combinato • La parte iniziale del blocco indice contiene riferimenti a blocchi dati del file • Gli ultimi elementi del blocco indice contengono riferimenti ad altri blocchi indice • Se il file ha dimensioni ridotte, il secondo livello non viene utilizzato