File
1
Memorizzazione

In memoria principale
 Strutture
dati: interi, reali, array, liste, ...
 Durante l’esecuzione di un programma

In memoria secondaria
 file
2
Record logici e fisici

Un file e’ suddiviso in record logici
 Es.: file con i dati del persnale
 Un record per ogni dipendente
 Vari campi in ogni record: nome,

Memorizzato in memoria secondaria in pezzi
(record fisici)
 Es.:

indirizzo, ...
settori di un disco
Lettura e scrittura di record fisici, anche se il
programma chiede di leggere o scrivere un solo
record logico
3
Lettura/scrittura di un record logico
Lettura: viene letto tutto un record fisico
contenente il record logico richiesto, e
messo in un buffer di memoria principale
 Scrittura: il record logico che si vuole
modificare viene messo in un buffer e poi
scritto in un intero record fisico

4
5
File Allocation Table (FAT)





Tabella di allocazione dei file: per ogni file, quali
settori del disco sono assegnati a lui
Tante righe quanti sono i settori (o gruppi di
settori)
Nella directory del file: numero del primo settore
Nella riga del FAT per il primo settore: numero
del secondo settore, e cosi’ via
Ogni voce della FAT: 16 o 32 bit  216 o 232
settori diversi (ogni settore circa 2 KB)
6
Operazioni su file
Apertura
 Lettura
 Scrittura
 Chiusura

7
File sequenziali
Accesso sequenziale
 Esempi: file di audio, video, programmi,
testo
 Se su CD o nastro (supporto sequenziale),
l’accesso sequenziale e’ naturale
 Se su disco e diviso in settori diversi, il SO
deve recuperare i settori e ricostruire il file

8
9
File sequenziali – fine file




Rilevare la fine del file
Record di fine (diverso da tutti gli altri record)
Oppure, variabile EOF (end of file) che il sistema
operativo mette a vero quando il file e’ finito
Es.: while (not EOF) do (leggi un record dal file)
10
File sequenziali -- chiave




Ogni record logico ha un campo che lo identifica
(chiave)
Es.: codice fiscale per un dipendente
File ordinati secondo il campo chiave 
elaborazione piu’ efficiente
Es.: merge (fusione) di due file, aggiornamento
di un file usando le informazioni di un altro file, ...
11
Fusione (merge) di due file
Procedure merge(file1,file2,file3)
if (eof1 and eof2) then (file3= vuoto)
if (not eof1) then (record1 = primo record di file1)
if (not eof2) then (record2 = primo record di file2)
while (not eof1 and not eof2) do
 Metti
il record con chiave piu’ piccola tra record1 e
record 2 in file3;
 Aggiorna record1 o record2 al rcord successivo;
Copia i restanti record del file non finito in file3
12
13
14
File di testo




Stringa di caratteri: ogni carattere e’ un intero
record logico
Standard ASCII, un byte per carattere
Molti file sequenziali complessi realizzati da file
di testo
Es.: file dei dipendenti: ogni record logico e’ una
stringa di 25 caratteri per il nome, piu’ 6 caratteri
per numero di matricola  31 caratteri per un
record
15
16
Linguaggi di programmzione
Istruzioni per gestire file sequenziali
 Aprire un file per leggere un record o un
suo campo o un carattere o una riga
 Tastiera, schermo, stampante considerati
come file sequenziali da cui leggere o a
cui inviare caratteri

17
Indici







Indice: sequenza di chiavi e indirizzi di memoria
dove e’ archiviato un bloco di informazioni
Per accedere al blocco di informazioni: prima si
ceca la chiave, e poi si guarda l’indirizzo
corrispondente
File indicizzato: file + file di indice
Es.: matricola per dipendenti, numero per CD
audio
Entrambi memorizzati in M secondaria
Quando di vuole usare un file, l’indice viene
trasferito in M principale
Piu’ veloce accedere all’informazione
18
19
File invertiti
Piu’ indici per accedere velocemente
secondo diverse chiavi
 Es.: numero di matricola, codice fiscale

20
21
Indici parziali



File sequenziale, diviso
in vari segmenti
Ogni segmento
contiene piu’ record e
corrisponde ad una
sola chiave (l’ultima)
Per cercare un record:
trovo la prima chiave
nell’indice > del record
cercato, poi cerco il
record nel segmento
22
Scarica

File