Dati persistenti (i file).
Spazio dei nomi gerarchico (o piatto) visibile a tutti i processi.
API per accedere e modificare i dati (open, close, read,…).
Condivisione tra i processi attraverso meccanismi di controllo degli accessi (es. rwxrwxrwx di Unix).
Accesso concorrente:
Possibilità di montaggio di altri file system.
E’ una implementazione di una memoria permanente che consente la condivisone dei dati tra gli utenti.
Un file system distribuito è una realizzazione distribuita del classico modello di file system.
Estensione dello stesso tipo di condivisione al caso in cui i file sono distribuiti tra i siti di un sistema distribuito.
L’utente ha a disposizione un insieme di operazioni sui file remoti che e’ un sottoinseme delle operazioni sui file locali.
L’utente deve essere a conoscenza della locazione dei file.
Operazioni esplicite di upload e download (put e get).
Coerenza di copie locali e remote a carico dell’utente.
Condivisione tramite “ftp anonymous”.
Nella progettazione di un file system distribuito bisogna affrontare molte problematiche:
Modello upload/download
Vantaggi:
Svantaggi:
Modello ad accesso remoto
Vantaggi:
Svantaggi: inefficienza (sincronizzazione degli accessi e traffico di rete).
Stessa visione
Visione differente
Deve esistere una directory radice?
Trasparenza
Di accesso (la modalità di accesso deve essere indipendente dalla posizione fisica).
Di posizione (la posizione fisica del file non deve essere nota all’utente).
Di replicazione (l’utente non deve sapere quante copie del file esistono).
Di migrazione (l’utente non deve sapere se il file viene spostato da un server ad un altro).
Non tutti sono facili da realizzare (es. trasparenza di migrazione).
I nomi dei file sono scelti come combinazione del nome dell’host e nome locale del file.
Implementazioni
Mount di directory remote (es. NFS)
Integrazione delle varie directory locali (es. AFS)
Quando un utente richiede un file, il server su cui si trova e’ identificato dallo schema di nominazione.
I dati sono trasferiti, ad esempio, mediante RPC.
Per migliorare le prestazioni e’ necessario ridurre il traffico di rete generato da questi trasferimenti → Caching dei file
La gestione di una cache per un file system distribuito e' molto simile ad una Memoria virtuale di rete.
Il problema principale nell’uso della cache è che, per sua natura, i file sono condivisi tra molti utenti
Possibilità di incoerenza delle cache (analogo al problema delle corse critiche).
Metodo iniziato dal client: il client periodicamente controlla se la sua copia è coerente con quella del server.
Metodo iniziato dal server: il server tiene traccia dei file aperti con le rispettive modalità e interviene se riscontra che uno stesso file è aperto 2 volte in modalita’ conflittuali (uso del protocollo lettore/scrittore).
Metodo iniziato dal client
Metodo iniziato dal server
Come reagisce il server?
In entrambi i casi le scelte determinano la semantica e l’efficienza.
La semantica della condivisione
Quando due o piu’ utenti accedono allo stesso file è necessario definire la semantica (cioè definire quale comportamento è errato e quale è corretto).
Esempio: consistenza sequenziale (semantica UNIX):
Molto difficile e dispendioso realizzare una consistenza sequenziale in un ambiente distribuito.
Rilassare la semantica.
Accontentarsi di una semantica di sessione:
Se la semantica di sessione appare “superficiale” e può dare luogo ad inconsistenze, si può:
Se un server diventa inaccessibile che succede?
Una soluzione è la replicazione dei file (più copie disponibili in vari file server).
I guasti sono indipendenti → miglioramento della fault tolerance.
Vincoli
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
15. I Sistemi Operativi distribuiti - parte seconda
16. I Sistemi Operativi distribuiti - parte terza
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
Silberschatz , Galvin, Gagne – Sistemi Operativi 8a ed. Capitolo 16
Tanenbaum – Moderni sistemi operativi 3a ed. Capitolo 8
Deitel, Deitel, Choffnes - Sistemi operativi 3a ed. Capitoli 13 e 14
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
I podcast del corso sono disponibili anche su iTunesU e tramite Feed RSS.