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