File-System! Dal punto di vista dell’utente! ! File ! Directory! Introduzione al File-System! ! Metodi e strutture per garantire! ! accesso! organizzazione! condivisione! protezione! ! su/ai dati memorizzati ! Operating System Concepts – 7th Edition! 10.2! Concetto di File! Struttura dei File! Record ! Unità fondamentale di memorizzazione! Ogni dato deve appartenere ad un file! una parola o byte! una linea ! Lunghezza Collezione di dati correlati! Lunghezza Tipi: ! fissa! variabile! Struttura complessa! Documenti formattati! Dati! numerico! Silberschatz, Galvin and Gagne ©2005! Chi decide?! alfanumerico! SO! binario! Programma creante! Strutture rigide (es. tipizzazione) poco versatili! Programmi! Struttura semplice (es. stream di byte o caratteri) minor controllo ! Operating System Concepts – 7th Edition! 10.3! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! !! 10.4! Silberschatz, Galvin and Gagne ©2005! Tipi di File – Nome, Estensione! Attributi di un File! Nome –informazioni in formato leggibile! Identificatore – numero che identifica univocamente il file nel sistema! Tipo – necessario se il sistema usa tipi di file differenti! Locazione – puntatore alla posizione del file nel dispositivo su cui risiede! Taglia – dimensione attuale del file! Protezione – per controllare chi puo’ leggere scrivere o eseguire il file! Tempi di accesso e identificativi utente – dati necessari per la protezione ed il monitoraggio! ! Informazioni collegate alla struttura delle directory! Operating System Concepts – 7th Edition! 10.5! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! Operazioni sui File! 10.6! Silberschatz, Galvin and Gagne ©2005! Strutture dati per un file aperto! File: tipo di dato astratto! ! Creazione! !! ! Scrittura! Tavole dei file aperti (livello di Processo e di Sistema)! Puntatore al File (offset): posizione dell’ultima scrittura/lettura ! Contatore delle aperture: volte che il file è stato aperto nella sessione di lavoro. ! Posizione del file su disco: informazioni per I/O! Permessi di accesso (per ogni processo che apre il file)! Lettura! Spostarsi all’interno di un file! Cancellazione! Troncamento! Open(Fi) – cerca nella struttura delle directory per l’elemento Fi, e ne sposta il contenuto in memoria! Se Close (Fi) – muove I dati relativi all’elemento Fi dalla memoria al disco, compatibilmente alla struttura delle directory! Operating System Concepts – 7th Edition! 10.7! Silberschatz, Galvin and Gagne ©2005! 0 può essere eliminato dalla tavola dei file aperti! Operating System Concepts – 7th Edition! 10.8! Silberschatz, Galvin and Gagne ©2005! File Locking! Metodi di Accesso! Operazione fornita da alcuni SO e file system! Accesso Sequenziale! Gestisce l’accesso ai file! Puo’ essere obbligatorio o consigliato:! obbligatorio – l’accesso viene negato se il file e’ stato bloccato (locked)! consigliato – I processi possono verificare lo stato del lock prima di procedere all’accesso! Operating System Concepts – 7th Edition! 10.9! Silberschatz, Galvin and Gagne ©2005! Accesso Sequenziale! ! ! ! ! !read next! !write next ! !reset! !! ! Accesso Diretto (random)! ! !read n! ! !write n! ! !position to n! ! ! !read next! ! ! !write next ! ! !rewrite n! !n = numero di blocchi, relativo alla posizione attuale! Operating System Concepts – 7th Edition! 10.10! Silberschatz, Galvin and Gagne ©2005! Simulazione di Accesso Sequenziale su un file ad Accesso Diretto! Simulazione di accesso diretto con accesso sequenziale! ! !possibile ma inefficiente! ! Operating System Concepts – 7th Edition! 10.11! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! 10.12! Silberschatz, Galvin and Gagne ©2005! Accesso mediante Indicizzazione! I File sono organizzati in Directory! Una collezione di nodi contenenti informazioni su tutti i file! Directory! File! F 1! F 2! F 3! F 4! F n! Operating System Concepts – 7th Edition! 10.13! Silberschatz, Galvin and Gagne ©2005! Tipica Organizzazione del File-system! Operating System Concepts – 7th Edition! 10.14! Silberschatz, Galvin and Gagne ©2005! Operazioni sulle Directory! Ricercare un file per nome! Creare di un nuovo nome e/o file! Cancellare di un nome e/o file! Ottenere la lista dei file nella directory! Cambiare nome/riferimento ad un file! Attraversare il file system! Operating System Concepts – 7th Edition! 10.15! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! 10.16! Silberschatz, Galvin and Gagne ©2005! L’Organizzazione delle directory determina! Directory a livello singolo! Un’unica directory per tutti gli utenti! ! Efficienza – localizzazione veloce dei file! Regole sui nomi – convenienza per gli utenti! Due utenti possono usare lo stesso nome di file! Lo stesso file puo’ avere diversi nomi! Condivisione e Protezione dei file! Problemi:! !nomi devono essere univoci !organizzazione in gruppi omogenei! Operating System Concepts – 7th Edition! 10.17! Silberschatz, Galvin and Gagne ©2005! Directory a 2 livelli! Operating System Concepts – 7th Edition! 10.18! Silberschatz, Galvin and Gagne ©2005! Directory con struttura ad albero! Una directory per ogni utente! Ogni utente ha una directory mono-livello privata! E’ possibile avere lo stesso nome usato da piu’ utenti! Ricerca piu’ efficiente! Gestione della condivisione poco agevole! Operating System Concepts – 7th Edition! 10.19! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! 10.20! Silberschatz, Galvin and Gagne ©2005! Directory con struttura ad albero (Cont)! Ricerca Efficiente Directory a grafo aciclico! Possibilità di sottodirectory e file condivisi! ! Univocità dei pathname e libertà di denominazione ! Directory Corrente (directory di lavoro)! cd /spell/mail/prog! cd mail! Path name assoluto e relativo! Operating System Concepts – 7th Edition! 10.21! Silberschatz, Galvin and Gagne ©2005! Directory a grafo aciclico (Cont.)! Operating System Concepts – 7th Edition! 10.22! Silberschatz, Galvin and Gagne ©2005! Directory a grafo generico! Due nomi diversi allo stesso elemento ! Se si cancella dict/w/list ⇒ puntatori morti! !Solutions:! Puntatori all’indietro, così da cancellare tutti i puntatori ad un elemento eliminato Tali puntatori avrebbero dimensione variabile! Soluzione: mantenere semplicemente un contatore! Nuovo tipo di elemento della directory! Link – un nuovo nome (puntatore) per un file già esistente! Risoluzione del link – seguire il puntatore per localizzare il file! Operating System Concepts – 7th Edition! 10.23! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! 10.24! Silberschatz, Galvin and Gagne ©2005! Directory a grafo generico (Cont.)! Come garantire l’assenza di cicli?! Montaggio del File System! Un sistema può avere più file system nella struttura delle directory! Permettere solo link a file e non a directory! Garbage collection! Un file system deve essere montato (collegato) prima Ad ogni aggiunta di un nuovo link usa un algoritmo di identificazione dei cicli! La locazione dove un file system viene collegato alla Operating System Concepts – 7th Edition! 10.25! Silberschatz, Galvin and Gagne ©2005! che sia possibile accedervi! struttura delle directory prende il nome di mount point! Operating System Concepts – 7th Edition! (a) Esistente. (b) Partizione non montata! Operating System Concepts – 7th Edition! 10.27! Silberschatz, Galvin and Gagne ©2005! 10.26! Silberschatz, Galvin and Gagne ©2005! Mount Point! Operating System Concepts – 7th Edition! 10.28! Silberschatz, Galvin and Gagne ©2005! Protezione! Liste di Accesso e Gruppi! Il creatore/possessore del File dovrebbe poter decidere:! Le azioni possibili sul file! E da chi esse sono effettuabili! Modalita’ di accesso: lettura (Read), scrittura (Write), esecuzione (eXecute)! 3 classi di utenti! ! ! ! !a) owner/user access ! !b) group access ! !c) public/others access ! ! ! Tipi di accesso ad un file! lettura! Scrittura! esecuzione! aggiunta in calce! Cancellazione! lista del contenuto (tipico per file di tipo directory)! ! !⇒ ! !⇒ ! !⇒ !RWX! !1 1 1 !RWX! !1 1 0! !RWX! !0 0 1! Possibilità di creare gruppi (con nome univoco), es. G, e aggiungervi utenti.! Per un dato file (es. game) o subdirectory, si puo’ definire l’accesso per un dato gruppo di utenti.! owner! group! chmod! 761! Collegare un gruppo ad un file chgrp Operating System Concepts – 7th Edition! ! !7 ! !6 ! !1 10.29! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! UNIX Directory - Ls! G public! game! game Silberschatz, Galvin and Gagne ©2005! 10.30! Regole di accesso per i processi! Identificativi per un processo P (es. UNIX)! Real User/Group ID uid(P) ! Effective User/Group euid(P)! Identificativi per un file F! Utente proprietario Gruppo principale own(F)! grp(F) !! ! Operating System Concepts – 7th Edition! 10.31! Silberschatz, Galvin and Gagne ©2005! Un processo P accede al file F in lettura se ! ! !a) euid(P) = own(F) ! !b) F ha i permessi di lettura per il proprietario! ! ! L’esistenza di Effective UID permette ad utenti di eseguire comandi con permessi di accesso da superutente! ! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7 Edition! 10.32! ! th Directory con struttura ad albero (Cont)! Fine Prossima lezione: implementazione del file system! Path name assoluto e relativo! Creazione di un nuovo file avviene nella directory corrente! Cancellazione! ! !rm <file-name>! Creazione di una nuova directory avviene in quella corrente! ! !mkdir <dir-name>! !Example: directory corrente /mail! ! !mkdir count! mail! prog! copy! prt! exp! count! Cancellando “mail” ⇒ cancella l’intero sottoalbero con radice in “mail”! Operating System Concepts – 7th Edition! 10.33! Silberschatz, Galvin and Gagne ©2005! Operating System Concepts – 7th Edition! 10.34! Silberschatz, Galvin and Gagne ©2005!