Sistemi operativi e distribuiti File System Il concetto di file Unospaziologicocontinuo per la memorizzazione dei dati Tipi di dati memorizzabili in un file Codice eseguibile Dati generici numeri caratteri dati binari
Struttura di un file Nessuna struttura sequenze di byte o numeri Strutturato semplice Linee Record a lunghezza fissa Record a lunghezza variabile Strutturato complesso Documento formattato XML Doc File caricabile rilocabile Chi stabilisce la struttura: Il sistema operativo I programmi utente Attributi di un file Servono ad indentificarlo all interno del file system Nome Tipo Posizione (All interno della periferica che lo contiene) Dimensione Data/ora di creazione Proprietario Diritti di accesso
Operazioni sui file Creazione Scrittura Lettura Posizionamento (seek) Cancellazione Riduzione della dimensione (truncate) Modalità di accesso Accesso sequenziale read next write next reset Accesso diretto read n write n oppure position to n read next write next n = posizione
File ad accesso sequenziale Simulazione di accesso sequenziale tramite accesso diretto
File system Usato in due accezioni: Logica Come organizzo i file all interno del mio disco Fisica Come scrivo i dati sul disco Strutturazione a directory Inseriamo nel disco un insieme di strutture incaricate di mantenere informazioni riguardo i file presenti. Queste strutture risiederanno sul disco insieme ai dati, tuttavia dobbiamo decidere Cosa memorizzare Come organizzarle Dove metterle sul disco
Organizzazione del file system Efficienza trovare un file velocemente Nomi Utenti diversi potrebbero chiamare con nomi uguali file distinti Lo stesso file potrebbe essere raggiungibile con nomi diversi Raggruppamenti logici Per proprietà Per tipologia Per contenuto Operazioni su una directory Cercare un file Creare un file Cancellare un file Vedere i file in essa contenuti Rinominare un file
Organizzazione di un file system di prima generazione Informazioni sui file in un Device Directory Nome Tipo Posizione Lunghezza corrente Lunghezza massima Data dell ultimo accesso Data dell ultimo aggiornamento Proprietario Diritti di accesso
Directory a singolo livello Una sola directory per tutti i file e tutti gli utenti Problemi per i nomi Problemi per il raggruppamento Directory a due livelli Una directory per ogni utente Utenti diversi possono avere file distinti con nomi uguali Ancora problemi di raggruppamento Path name
Directory ad albero Directory a grafo senza cicli
Directory a grafo generalizzate Directory a grafo generalizzate Come facciamo a garantire che non ci siano cicli critici? Permettiamo alias solo a file e non directory Garbage collection. Quando aggiungo un link uso degli algoritmi di individuazione dei cicli
Condivisione di dati Condividere i file tra utenti è spesso utile La condivisione può essere ottenuta tramite un sistema di diritti di accesso Se il sistema è distribuito, allora potremmo voler estendere la condivisione sulla rete Network File System (NFS) è un modo abbastanza comune di condivisione di file via rete per macchine unix Diritti di accesso Il proprietario di un file dovrebbe essere in grado di stabilire quali operazioni possono essere fatte da chi Tipi di accessi Read Write Execute Append Delete List
Access Lists e gruppi (unix) Ogni file appartiene ad un utente ed ad un gruppo Distinguo tre tipi di utenti: Il proprietario quelli facenti parte dello stesso gruppo del file tutti gli altri Per ognuno decido delle modalità di accesso Read Write Execute Access Lists e gruppi (unix) RWX owner access 7 1 1 1 RWX group access 6 1 1 0 RWX public access 1 0 0 1 owner group public chmod 761 file
File system fisico: Struttura di un disco MBR master boot record: il settore 0 del disco; contiene il programma che viene caricato dal BIOS all avvio. Partition Table (su disco): contiene il punto di inizio e di fine di ogni partizione del disco Partizione di un disco Boot (control) block: contiene le informazioni necessarie per l avviameno del SO da quella partizione (se presente) Partition Control Block (o Super Block): contiene le informazioni sulla partizioni quali # e dim blocchi, # blocchi liberi, # i-node i-node (descrittore di file): uno per file
Struttura di un i-node Indirizzamento blocchi dati UFS usa uno schema combinato per individuare i blocchi dati che compongono un file 10 blocchi sono indicizzati direttamente 1 indirizzamento indiretto singolo punta ad un blocco che invece di contenere dati contiene indirizzi di altri blocchi 1 indirizzamento indiretto doppio 1 indirizzamento indiretto triplo
Quanto può essere grande un file? Quanti blocchi posso indirizzare? Consideriamo un blocco di 1 KB e un indirizzo di 4 byte ACCESSO DIRETTO: 10 blocchi = 10 KB ACCESSO INDIRETTO SINGOLO: 1 blocco puo contenere 256 indirizzi Quindi altri 256 KB di blocchi dati indirizzabili ACCESSO INDIRETTO DOPPIO: 256 blocchi che contengono 256 indirizzi ognuno 256 2 = 65.536 KB (64 MB) ACCESSO INDIRETTO TRIPLO: 256 3 = 16.777.216 KB (16 GB) Ma con 4byte si indirizzano al massimo 4 GB!!! Quanto puo essere grande un file? Quanti blocchi posso indirizzare? Consideriamo un blocco di 4 KB e un indirizzo di 8 byte ACCESSO DIRETTO: 10 blocchi = 40 KB ACCESSO INDIRETTO SINGOLO: 1 blocco puo contenere 512 indirizzi Quindi altri 2 MB di blocchi dati indirizzabili ACCESSO INDIRETTO DOPPIO: 512 blocchi che contengono 512 indirizzi ognuno 512 2 = 262144 blocchi = 1 GB ACCESSO INDIRETTO TRIPLO: 512 3 = 512 GB Anche se con 8 byte potrei indirizzare TeraBytes 513 GB + 2 MB + 40 KB
Gestione File System kernel gestisce copie in memoria di superblock e i-node, e (de)allocazione blocchi dati su disco strutture dati mantenute per ogni processo, tabella file-descriptor 0: stdin; 1:stdout; 2:stderr Open File Descriptor Table (OFD) globale nel sistema Contiene posizione corrente di accesso al file; i-node table /* per accesso rapido a dati */ contiene info aggiuntive quali: lock ; flag aggiornamento wrt copia su disco ; #i-node su disco directory: coppie <nome file ; #i-node> file speciale modificato solo da kernel
Directory Una directory con tre files La stessa directory dopo che il file voluminous e` stato rimossi