7 FileSystem
7 FileSystem
1
Con il nome file system si intende quella parte del sistema operativo che
1)gestisce la memorizzazione dei dati e dei programmi su dispositivi di memoria
permanenti
2)mette a disposizione i programmi e i meccanismi necessari per la loro gestione.
Nel realizzare il file system occorre tener conto delle esigenze dell’utente:
●
Memorizzare le informazioni in modo permanente
●
Memorizzare enormi quantità di informazioni
●
Accedere contemporaneamente agli stessi dati da parte di più processi
●
Accedere velocemente ai dati
Il file system è la parte del SO che maggiormente comunica con l’utente.
Si colloca come interfaccia tra l’utente e i dispositivi.
Dal punto di vista dell’utente un file è un insieme di dati correlati tra loro e
associato ad un nome in modo univoco, che lo identifica e memorizzato in un
dispositivo di memoria secondaria.
Dal punto di vista del SO un file è un insieme di byte
Organizzazione del File System
Struttura stratificata infatti può essere rappresentata da un insieme di
componenti organizzate in vari livelli:
Applicazioni
Struttura logica
Accesso
Organizzazione fisica
Dispositivo virtuale
"
Hardware: memoria secondaria
Organizzazione del file system
• Struttura logica: presenta alle applicazioni una visione
astratta delle informazioni memorizzate, basata su file,
directory, partizioni, ecc.. Realizza le operazioni di gestione
di file e directory: copia, cancellazione, spostamento, ecc.
• Accesso: definisce e realizza i meccanismi per accedere al
contenuto dei file; in particolare:
Definisce l’unità di trasferimento da/verso file: record logico
Realizza i metodi di accesso (sequenziale, casuale, ad indice)
Realizza i meccanismi di protezione
• Organizzazione fisica: rappresentazione di file e directory
sul dispositivo:
Allocazione dei file sul dispositivo (unità di memorizzazione = blocco): mapping di
record logici su blocchi. Vari metodi di allocazione.
Rappresentazione della struttura logica sul dispositivo.
• Dispositivo Virtuale: presenta una vista astratta del dispositivo,
che appare come una sequenza di blocchi di dimensione costante.
4
File
È un insieme di informazioni; ad es.:
• programmi
• dati (in rappresentazione binaria)
• dati (in rappresentazione testuale)
• …
nome simbolico
● Identificatore: valore numerico che lo identifica univocamente nel file system, non è
● Locazione: puntatore al dispositivo e alla locazione fisica del file nel dispositivo
● Data e ora: informazione sulla sua creazione e sull’ultimo accesso che ha portato
Attenzione gli attributi non sono indipendenti dal sistema operativo. Non ci sono attributi
assoluti e indipendenti.
Windows: se scrivo un file su windows e lo copio su un file dos, qui non ci sono
informazioni sul proprietario. Se il file lo estrapoliamo da un determinato ambiente, quelle
proprietà vengono perse
Tipi di file: nomi ed estensioni
In alcuni SO,
l’estensione inclusa nel
nome di un file
rappresenta il suo tipo
8
Operazioni sui file
Compito del SO è consentire l’accesso on-line ai
file(ogni volta che un processo modifica un file, tale
cambiamento è immediatamente visibileper tutti gli altri
processi)
Tipiche Operazioni
• Creazione: allocazione di un file in memoria secondaria e inizializzazione
dei suoi attributi
• Letturadi record logici dal file
• Scrittura: inserimento di nuovi record logici all’interno di file
• Cancellazione: eliminazione del file dal file system
Ogni operazione richiederebbe la localizzazione di
informazioni su disco, come:
indirizzi dei record logici a cui accedere
altri attributi del file
record logici -> costo elevato
9
Operazioni sui file
Per migliorare l’efficienza:
SO mantiene in memoria una struttura che registra i file
attualmente in uso (file aperti) -tabella dei file aperti
per ogni file aperto {puntatore al file, posizione su disco, ...}
viene fatto il memory mapping dei file aperti
:
i file aperti (o porzioni di essi) vengono temporaneamente copiati in memoria
centrale accessi più veloci
Operazioni necessarie
• Apertura: introduzione di un nuovo elemento nella tabella dei file aperti
e
eventuale memory mapping del file
• Chiusura: salvataggiodel file in memoria secondaria ed eliminazione
dell’elemento corrispondente dalla tabella dei file aperti
10
Struttura interna dei file
Ogni dispositivo di memorizzazione secondaria
viene partizionato in blocchi (o record fisici):
11
Blocchi & record logici
Uno dei compiti di SO (parte di gestione del file
system) è stabilire una corrispondenza tra
record logici e blocchi
Di solito:
Dimensione(blocco) >> Dimensione(record logico)
impaccamentodi record logici all’interno di blocchi
record
blocco logici
12
Metodi di accesso
L’accesso a file può avvenire secondo varie
modalità:
accesso sequenziale
accesso diretto
accesso a indice
13
Accesso sequenziale
Il file è una sequenza [R1, R2, ..., RN] di record
logici:
per accedere ad un particolare record logico Ri , è necessario
accedere prima agli (i-1) record che lo precedono nella sequenza:
R1 R2 Ri-1 Ri
R1 R2 Ri-1 Ri
puntatore
14
Accesso sequenziale
R1 R2 Ri-1 Ri
15
Accesso diretto
Il file è un insieme {R1, R2, ..., RN} di record logici
numerati:
si può accedere direttamente a un particolare
record logico specificandone il numero
16
Accesso a indice
Ad ogni file viene associata una struttura dati
contenente l’ indicedelle informazioni
contenute
Rossi Mario
Rossi
18
Tipi di directory
La struttura logica delle directorypuò
variare a seconda del SO
19
Tipi di directory
Struttura a un livello: una sola directory per
ogni file system
dati0 mbox fileZ ...... pippo
Problemi
• unicità dei nomi
• multiutenza: come separare i file dei diversi utenti?
20
Tipi di directory
Struttura a due livelli
• primo livello ( directory principale
): contiene una directory
per ogni utente del sistema
• secondo livello: directory utenti(a un livello)
21
Tipi di directory
Struttura ad albero: organizzazione
. Ogni direttorio può
gerarchica a N livelli
contenere file e altri direttori
direttorio
sys user kern radice
fx ris mbox
22
Directory e partizioni
Una singola unità
disco può
contenere più
partizioni
Una singola
partizione può
utilizzare più di
una unità disco
24
Montaggio del file system:
25
Dopo il mounting ad un
determinato mount point
26
File system e protezione
27
Append: scrive alla fine del file
List: struttura dinamica, astratta. Evidenzia una collezione omogenea
di dati. E’ importante la possibilità di accesso agli elementi di questa
struttura
Liste di accesso e gruppi (es. UNIX)
Modalità di accesso: read, write, execute
• 3 classi di utenti RWX
1) owner access 7 111
RWX
2) group access 6 110
RWX
3) public access 1 001
28
E’ un comando che modifica il gruppo assegnato di uno o più file e
directory
chgrp [opzioni] [--] gruppo file1 [file2 …]
Opzioni:
-R
Applica le modifiche ricorsivamente alle directory specificate ed ai file e
subdirectory in esse contenute.
R= permesso di lettura
W= permesso di scrittura
X= permesso di esecuzione
+ = vengono assegnati nuovi permessi ad una classe utenti
- = revoca
Gestione access control list in MS Windows
XP
29
Organizzazione fisica del file
system
SO si occupa anche della realizzazione del file
system sui dispositivi di memorizzazione
secondaria:
realizzazione dei descrittorie loro organizzazione
allocazione dei blocchi fisici
gestione dello spazio libero
31
Metodi di allocazione
allocazione contigua
allocazione a lista
allocazione a indice
32
Allocazione contigua
Ogni file è mappato su un insieme di
blocchi fisicamente contigui
Vantaggi
• costodella ricerca di un blocco
• possibilità di accesso sequenziale e diretto
Svantaggi
• individuazione dello spazio liberoper f2 f2 f2 f0
l’allocazione di un nuovo file
f0 f0
• frammentazione esterna : man mano che si
riempie il disco, rimangono zone contigue f3 f3 f3 f3
sempre più piccole, a volte inutilizzabili f3
Necessità di azioni di compattazione f1 f1 f1
• aumento dinamico delle dimensionidi file
33
Allocazione contigua:
Ciascun file deve occupare un insieme di blocchi contigui nel disco
Blocchi tali da riuscire a contenere tutto il file da salvare
Occorre conoscere l’indirizzo del primo blocco e la lunghezza (espressa in
blocchi)( quanti blocchi occorrono per contenere l’intero file?)
Una volta trovato lo spazio è tutto molto semplice e veloce.
A sinistra l’hardisk
A destra la directory con nome
dei file, informazione sul
blocco iniziale e la dimensione.
Allocazione a lista (concatenata)
inizio
I blocchi sui quali viene mappato
f2 124
ogni file sono organizzati in
una lista concatenata
Vantaggi
• non c’è frammentazione esterna
• minor costo di allocazione
Svantaggi: f2 f2
• possibilità di errore se link danneggiato
• maggior occupazione(spazio occupato dai
puntatori)
f2
• difficoltà di realizzazione dell’accesso f2
diretto
• costo della ricercadi un blocco
blocco 124
34
Assegnazione concatenata:
Ho la possibilità di sparpagliare il contenuto di un file su tutta la memoria.
Utilizzo una linked list in cui da un blocco punto ad un altro blocco e cosi
via.
Il blocco in questo caso oltre ad un area dati ha anche un campo puntatore
Necessita solo del blocco/indirizzo di partenza
E’ un metodo più complesso
Non vi è spreco di spazio
Purtroppo non vi è accesso casuale, devo seguire la Linked list e quindi
tutto il percorso.
Spesso è presente anche l’informazione del blocco finale al fine di evitare
errori.
Tabella di allocazione dei file
(FAT- file allocation table)
Alcuni SO (ad es. DOS e OS/2) realizzano
l’allocazione a listain modo più efficiente e robusto:
per ogni partizione, viene mantenuta una tabella
(FAT)in cui ogni elemento rappresenta un blocco
fisico
concatenamento dei blocchi sui quali è allocato un file
è rappresentato nella FAT
0
1 eof
35
Allocazione a indice
36
Allocazione a indice
indice
A ogni file è associato un blocco f2 124
(indice)in cui sono contenuti
tutti gli indirizzi dei blocchi
su cui è allocato il file
Vantaggi
• stessi dell’allocazione a lista, più
possibilità di accesso diretto f2 f2
maggiore velocità di accesso (rispetto a
liste)
Svantaggi
• possibile scarso utilizzo dei blocchi indice f2
38
Realizzazione del file system:
Quando andiamo a realizzare una Struttura del file system:
Oggetti che controllano i file come il
File control block: un blocco che contiene le informazioni che permettono di
gestire un file come le proprietà, i permessi e la posizione del contenuto
FCB è memorizzato su disco
Stratificazione: da una visione di alto livello e man mano che scendiamo nella
struttura troviamo delle primitive che permettono di gestire il file system con
una metodica sempre più di livello basso.
Alto livello: applicazioni
Basso livello: funzionalità per recuperare blocchi di file dalla memoria
secondaria
Permette agli sviluppatori di intervenire livello per livello e una maggiore
versilità, si opera sul livello sovrastante agendo anche su quello sottostante.
Prende una chiave (Mannucci)→ vogliamo sapere dove risiedono i suoi dati
(Contatti)→ L’hash non conserva un indice, partendo dalla chiave tira fuori un
valore che determina l’indirizzo dove si trova il record di Mannucci
Codifica tramite un’ “alchimia” di operazioni, ma il valore è troppo grande!
Successiva compressione tramite funzione h2 per ripristinare nel range dei valori.
Da Insieme di oggetti( chiavi) – tira fuori un valore intero che si collega ad cella
specifica di memoria
2 chiavi = stessa cella → Collisione
Gestione: metodo del chaining, metto in una linked list tutte le chiavi con lo
stesso valore hash, quando devo recuperare quei valori compio un analisi più
approfondita. Utilizzo di troppe strutture.
Gestione Open addressing: uso un unico vettore, nel momento in cui faccio
un hash e l’hash capita ad esempio tra 0 e 12 (Esempio) se la locazione è
libera lo inserisco. Se è occupata(Collisione) vado avanti e metto il dato
nella prima locazione libera
Trovare una funzione hash
perfetta non è assolutamente
semplice.
Hashing perfetto.
Metodo chaining crea un
vettore di puntatori a lista.
Se un dato genera un hash
uguale ad un altro già inserito,
andremo ad aggiungere un
nuovo nodo
Attenzione Collisione per il valore 5 (nabbo), collisione con emanare, entrambi
stesso valore hash. Nell’open addressing è andato nella locazione libera 5. Nel
chaining si sta creando la linked list
Gestione dello spazio libero
Considero un vettore di Bit ed ogni spazio corrisponde ad un blocco