22
1 File

1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

Embed Size (px)

Citation preview

Page 1: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

1

File

Page 2: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

2

Memorizzazione

In memoria principaleStrutture dati: interi, reali, array, liste, ...Durante l’esecuzione di un programma

In memoria secondaria file

Page 3: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

3

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, indirizzo, ...

Memorizzato in memoria secondaria in pezzi (record fisici) Es.: settori di un disco

Lettura e scrittura di record fisici, anche se il programma chiede di leggere o scrivere un solo record logico

Page 4: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

4

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

Page 5: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

5

Page 6: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

6

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)

Page 7: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

7

Operazioni su file

Apertura Lettura Scrittura Chiusura

Page 8: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

8

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

Page 9: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

9

Page 10: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

10

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)

Page 11: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

11

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, ...

Page 12: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

12

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

Page 13: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

13

Page 14: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

14

Page 15: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

15

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

Page 16: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

16

Page 17: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

17

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

Page 18: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

18

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

Page 19: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

19

Page 20: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

20

File invertiti

Piu’ indici per accedere velocemente secondo diverse chiavi

Es.: numero di matricola, codice fiscale

Page 21: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

21

Page 22: 1 File. 2 Memorizzazione In memoria principale Strutture dati: interi, reali, array, liste,... Durante lesecuzione di un programma In memoria secondaria

22

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