Sei sulla pagina 1di 58

Il File System

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.

File system= sistema di gestione dei file

E’ quella componente del SO che fornisce i meccanismi di accesso e memorizzazione


delle informazioni (programmi e dati) allocate in memoria di massa
Il file system si compone da:

file: unità logica di memorizzazione
• directory: insieme di file (i file sono organizzati in directory)
• partizione: insieme di file associato ad un particolare dispositivo fisico (o
porzione di esso) (Memorizzazione in uno o più supporti di tipo magnetico o
magnetico-ottico)

Le caratteristiche di file, directory e partizioni sono del tutto indipendenti


dalla natura e dal tipo di dispositivo utilizzato

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.

Il file, elemento fondamentale del file system

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)
•  …

•  Ogni file è individuato da (almeno) un nome


simbolicomediante il quale può essere riferito (ad
esempio, nellʼ invocazione di comandi o system call)

•  Ogni file è caratterizzato da un insieme di


attributi
5
Attributi del file
Descrittore del file:
è la struttura dati che contiene gli attributi di
un file

Ogni descrittore di file deve essere


memorizzato in modo persistente :
  il SO mantiene l’insieme dei descrittori di tutti i file
presenti nel file system in apposite strutture in memoria
secondaria (ad es. UNIX: i-list)
Le informazioni sui file sono conservate
nella struttura della directory che risiede nella memoria secondaria
7
Il descrittore del file contiene:
● Nome, stringa di caratteri con lunghezza variabile a seconda del SO e viene detto anche

nome simbolico
● Identificatore: valore numerico che lo identifica univocamente nel file system, non è

leggibile dall’uomo, è usato dal SO


● Tipo: informazione necessaria ai sistemi che gestiscono tipi di file diversi, estensione

● Locazione: puntatore al dispositivo e alla locazione fisica del file nel dispositivo

● Dimensione corrente: espressa in byte, parole o blocchi

● Data e ora: informazione sulla sua creazione e sull’ultimo accesso che ha portato

qualche modifica ai dati

Nel SO multiutente anche l’utente proprietario (Che ha creato il file e ne ha i massimi


diritti) ed i permessi, ovvero alcuni flag che mantengono le informazioni per il controllo
di chi può accedere al file modificandolo oppure solo leggerlo

I descrittori sono memorizzati in un contenitore, la directory memorizzata nella memoria


secondaria,l’immagine del file system è memorizzata in memoria di massa attraverso il
concetto di volume che è composto da una sequenza di blocchi

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

NON è il caso di UNIX

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):

Blocco: unità di trasferimento fisiconelle operazioni di


I/O da/verso il dispositivo. Sempre di dimensione
fissa

L’utente vedeil file come un insieme di record


logici:
Record logico: unità di trasferimento logiconelle
operazioni di accesso al file (es. lettura, scrittura di
blocchi). Di dimensione variabile

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

Il metodo di accesso è indipendente:


•  dal tipo di dispositivo utilizzato
•  dalla tecnica di allocazione dei blocchi in memoria
secondaria

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

  le operazioni di accesso sono del tipo:


   readnext: lettura del prossimo record logico della sequenza
   writenext: scrittura del prossimo record logico
  È necessario registrare la posizione corrente: puntatore
al file

R1 R2 Ri-1 Ri

puntatore
14
Accesso sequenziale

R1 R2 Ri-1 Ri

  ogni operazione di accesso (lettura/scrittura) posiziona


il puntatore al filesull'elemento successivo a quello
letto/scritto

UNIX prevede questo tipo di accesso

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

  operazioni di accesso sono del tipo


   read :i lettura del record logico i
   write :i scrittura del record logico i

  Utile quando si vuole accedere a grossi file per


estrarre/aggiornare poche informazioni (ad esempio
nell’accesso a database)

16
Accesso a indice
Ad ogni file viene associata una struttura dati
contenente l’ indicedelle informazioni
contenute

  per accedere a un record logico, si esegue una


ricerca nell’indice (utilizzando una chiave)
chiave

Rossi Mario

Rossi

File indice File


17
Directory (o direttorio)
Strumento per organizzare i file all’interno
del file system:
  una directory può contenere più file
  è realizzata mediante una struttura datiche
prevede un elemento per ogni file (o directory) in
essa contenuto; essa associa al nome di ogni file le
informazioni che consentono di localizzarlo in
memoria di massa.

Operazioni sui direttori:


•  Creazione/cancellazione di directory
•  Aggiunta/cancellazione di file
•  Listing: elenco di tutti i file contenuti nella directory
•  Attraversamento della directory
•  Ricerca di file in directory

18
Tipi di directory
La struttura logica delle directorypuò
variare a seconda del SO

Schemi più comuni:


  a un livello
  a due livelli
  ad albero
  a grafo aciclico

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)

paolo ugo mario

f1 dati fx dati mbox abc ff0 mbox

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

b ts Mario Paolo Anna ... Ugo

DIR dati fx dati mbox abc ff0 mbox

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:

Montare (dall'inglese to mount) indica quel processo logico di preparazione di un


file system (di un dispositivo esterno di memorizzazione o di una partizione del
disco rigido) teso a renderlo accessibile al sistema operativo della macchina in
uso, agganciandolo a una directory del file system in uso, in modo da rendere
accessibili ai programmi e agli utenti del sistema, file e directory in esso
contenuti.
UNIX: mount
Windows: mapping a drive
File System Mounting
Molti SO richiedono il mounting esplicito
allʼ interno del file system prima di poter
usare una (nuova) unità discoo una partizione

file system file system


esistente da montare

25
Dopo il mounting ad un
determinato mount point

26
File system e protezione

Il proprietario/creatoredi un file dovrebbe


avere la possibilità di controllare:
  quali azioni sono consentite sul file
  da parte di chi

Possibili tipologie di accesso


- Read - Write
- Execute - Append
- Delete - List

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

•  Amministratore può creare gruppi (con nomi unici)


e inserire/eliminare utenti in/da quel gruppo
•  Dato un file o una directory, si devono definire
le regole di accesso desiderate owner group public

Cambiamento di gruppo: comando


chgrp G game
Cambiamento di diritti di accesso: chmod 761 game

28
E’ un comando che modifica il gruppo assegnato di uno o più file e
directory
chgrp [opzioni] [--] gruppo file1 [file2 …]

Il parametro gruppo indica il nuovo gruppo da assegnare. I parametri file


specificano i file e le directory da modificare.

Opzioni:

-R
Applica le modifiche ricorsivamente alle directory specificate ed ai file e
subdirectory in esse contenute.

Assegna il gruppo vendite al file /home/roberto/file:


chgrp vendite /home/roberto/file
L’impostazione dei permessi di accesso avviene sempre basandosi su
tre classi di utenti:

Gruppo proprietario: In genere un utente che crea un file nel file


system di Unix viene definito automaticamente come “utente” del
file. La proprietà può essere cambiata successivamente con il
comando “chown”.

Group: La classe utente “gruppo” comprende diversi account utente


sul server. Ogni account viene assegnato automaticamente a un
gruppo principale; anche un’appartenenza ad altri gruppi è possibile.
L’assegnazione dei file a un gruppo può essere configurata sia dal
proprietario che dall’utente root tramite il comando “chgrp”.
Chmod: cambiare i diritti di accesso

Se ad esempio il file “esempio.txt”, introdotto sopra, deve essere modificato


per fare in modo che non solo il proprietario (user), ma anche tutti gli altri
utenti (group, other) ricevano i permessi di lettura e scrittura, il comando
chmod da applicare sarebbe:

$ chmod ugo+rw esempio.txt

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

Come può essere realizzato il file system sui


dispositivi di memorizzazione secondaria?

31
Metodi di allocazione

Ogni bloccocontiene un insieme di record


logici contigui

Quali sono le tecniche più comuni per


l’allocazione dei blocchi sul disco?

  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

inizio 124 201


File1 124
201 1

35
Allocazione a indice


Allocazione a indice: tutti i puntatori ai blocchi


utilizzati per l’allocazione di un determinato file
sono concentrati in un unico blocco per quel
file (blocco 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

Blocco indice n. 124


37
Attenzione: il blocco 19 non
è un blocco dati del file, ma
il blocco indice. Contiene la
tabella degli indici, contiene
i puntatori ai blocchi che
contengono il file.
Dove c’è il disavanzo metto
un puntatore nullo
Metodi di allocazione

Riassumendo, gli aspetti caratterizzanti sono:


  grado di utilizzo della memoria
  tempo di accesso medioal blocco
  realizzazione dei metodi di accesso

Esistono SO che adottano più di un metodo


di allocazione; spesso:
•  file piccoli  allocazione contigua
•  file grandi  allocazione a indice

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.

Attenzione all’importanza del descrittore del file


Le strutture del file system che si mantengono in memoria sono una parte minima
rispetto a tutto il file. Spazio utente: necessità di apertura o lettura di un file
Il Nucleo gestisce queste operazioni, dalla memoria, il nucleo si interfaccia con la
memoria secondaria.Il livello del nucleo recupera dalla memoria secondaria la
struttura della cartella e il descrittore. Quando leggo viene recuperato dal descrittore
le informazioni che puntano ai blocchi del file stesso
File system virtuali (VFS): permettono la visione di un file system ad alto
livello. Non costringo l’utente a conoscere in quale device risiedono i file

L’utente accede sempre a tutti i dati con le stesse funzionalità


indifferentemente da dove questi si trovano. (Interfaccia VFS UNIFORME)

Interfaccia VFS permette il colloquio tra interfaccia e file system vero e


proprio.
Tipo 1: disco FAT
Tipo 2: disco NTFS
Realizzazione delle directory

Metodo più semplice, sviluppo lineare


Una lista con i nomi dei file e ad ogni nodo dei puntatori che puntano ai dati
dei file.
Lista lineare con metodo hash
Metodo hash: strategia che permette di accedere in maniera rapida ai dati.
Diminuisce il tempo di ricerca delle cartelle.
Partendo da una chiave(può essere anche il nome stesso del file, o più proprietà
importanti) ritorna un valore che corrisponde ad un indirizzamento ad un
blocco dato/un file.
Controindicazioni: Collisioni, due chiavi diverse potrebbero avere lo stesso
hash

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

Es. Disco con liberi i blocchi 2, 3 e 4


Mappa dei bit/mappa di spazio libero: 00111
Se devo allocare un file Dove sta il primo blocco libero?
E’ dato dalla seguente formula:
(Numero di bit per parola – es. 8 bit) x (Numero di parole di valore 0- primi
3 byte di valore 0 )+ scostamento del primo bit ( 00011110)
8*3+ 3= 27
Il vettore deve essere contenuto nella memoria
Lista concatenata dei blocchi liberi
Puntatore al primo blocco
libero e oltre a fornirmi
spazio libero mi fornisce
anche il puntatore al prossimo
blocco libero.
Fino all’ultimo blocco libero
con puntatore a NULL

Potrebbero piacerti anche