Laface 2001 - Bach 12.1 Sistemi Operativi Modulo 12: File System Livelli logici per laccesso ai file Organizzazione dei file su disco Organizzazione di.

Slides:



Advertisements
Presentazioni simili
Gestione della Memoria
Advertisements

Strutture dati per insiemi disgiunti
Tecnologia delle basi di dati: Strutture fisiche di accesso
1 Introduzione ai calcolatori Parte II Software di base.
Unità D2 Archivi e file.
File System Cos’è un File System File e Directory
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
1 Semantica Operazionale di un frammento di Java: lo stato.
Gestione del processore
1 Come si avvia un computer... Dove è contenuto il SO ? Come si attiva?
1 System Call per Comunicazione tra Processi Pipe.
Giuseppe Fabio Fortugno.
Realizzazione del file system
Interfaccia del file system
Realizzazione del file system
Interfaccia del file system
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
PROGRAMMI DI RICERCA E ORDINAMENTO
Informatica di base A.A. 2003/2004 Algoritmi e programmi
File.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
eliana minicozzi linguaggi1a.a lezione2
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Windows 2000 supporta i seguenti file system:
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Struttura dei sistemi operativi (panoramica)
File System NTFS 5.0 Disco: unità fisica di memorizzazione
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
1 File System ed Input/Output UNIX Implementazione del File System Caratteristiche del File System Unix/Linux System Call relative al File System Linput/output.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
I File.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Analisi di Immagini e Dati Biologici
Introduzione alle basi di dati
Modulo 13: System call relative al File System
DBMS ( Database Management System)
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
File ad accesso casuale o random
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Il Sistema Operativo: il File System
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
14 marzo 2002 Avvisi:.
1 Implementazione del File System nel Sistema Operativo Unix (Bach: the Design of the Unix Operating System (cap: 4, da 5.1 a 5.7, 5.12)
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Esercizi.
Compitino di Sistemi Operativi corsi A -C 19 Maggio 2003.
Transcript della presentazione:

Laface Bach 12.1 Sistemi Operativi Modulo 12: File System Livelli logici per laccesso ai file Organizzazione dei file su disco Organizzazione di un File System di UNIX

Laface Bach 12.2 Sistemi Operativi Livelli logici per laccesso ai file

Laface Bach 12.3 Sistemi Operativi Strutture di file Pila : i dati sono organizzati in record di dimensioni non definita mantenuti nellordine con il quale arrivano I file sequenziali : hanno una struttura formata da record di dimensione fissa e tutti con la stessa suddivisione in campi. – Un campo, detto chiave del record, permette di identificare un record in maniera univoca e quindi di stabilire un ordinamento tra i record.

Laface Bach 12.4 Sistemi Operativi Strutture di file I file sequenziali indicizzati memorizzano delle informazioni ulteriori per accelerare lintroduzione e la ricerca dei dati. 1. un file di indice con il quale gestire gli accessi casuali 2. un file di overflow per consentire gli inserimenti di nuovi elementi mantenendo lordinamento complessivo. Main File Overflow File Indice Livelli di Indicizzazione 1 2

Laface Bach 12.5 Sistemi Operativi Strutture di file I file ad accesso diretto o gestiti mediante hashing – I record non necessitano un ordinamento sequenziale. – Sono usati qualora sia necessario un accesso molto rapido ed i record hanno dimensione fissa.

Laface Bach 12.6 Sistemi Operativi Directory

Laface Bach 12.7 Sistemi Operativi Funzioni di accesso ai file nomi dei file Operazioni, Comandi utente Gestione delle directory Controllo degli accessi degli utenti Struttura dei file Funzioni di manipolazione dei file Metodi di accesso Record Gestione dei blocchi Blocchi fisici nei buffer in memoria principale Scheduling del disco Funzioni del File management Allocazione dei file Blocchi fisici in memoria secondaria Gestione dello spazio libero Funzioni del Sistema Operativo

Laface Bach 12.8 Sistemi Operativi Organizzazione dei file su disco Descrittore del file –Tipo del file –Tipo di file system – Volume – Indirizzo di partenza – Dimensioni – Owner – Azioni permesse – Informazioni duso (quando/chi ha scritto/letto/modificato per ultimo, …)

Laface Bach 12.9 Sistemi Operativi Allocazione contigua Vantaggio: velocità daccesso Svantaggi: frammentazione dello spazio disponibile

Laface Bach Sistemi Operativi Allocazione linkata

Laface Bach Sistemi Operativi Allocazione linkata - FAT test elemento della directory nomeblocco iniziale 618 fine del file 339 FAT Numero dei blocchi

Laface Bach Sistemi Operativi Allocazione indicizzata

Laface Bach Sistemi Operativi Organizzazione di un File System di UNIX Blocco di boot Super blocco Lista degli inode Blocchi di dati

Laface Bach Sistemi Operativi Organizzazione di un File System di UNIX il blocco di boot risiede generalmente nel primo settore che costituisce il File System e contiene il codice di bootstrap che viene eseguito dalla macchina allavviamento il superblocco serve per descrivere lo stato del File System ovvero la sua dimensione, quanti file può contenere, dove trovare spazio libero sul disco ed altre informazioni la lista degli inode contiene tutti I descrittori disponibili nel sistema e la sua dimensione dipende da quanto specificato in fase di configurazione del sistema i blocchi di dato contenenti i file utente e quelli di gestione del sistema

Laface Bach Sistemi Operativi Inode Proprietario: il possesso del file è condiviso tra un proprietario ed un gruppo. Il Super User ha diritto di accesso a tutti i file del sistema. Tipo di file: normale, directory, speciale a blocchi o a caratteri,.. Permessi di accesso al file: tre classi di utenti: proprietario, gruppo del proprietario e altri utenti. – I permessi di lettura, scrittura ed esecuzione possono essere fissati individualmente per ogni classe. – Poiché le directory non possono essere eseguite, i permessi di esecuzione per una directory consentono lattraversamento della directory. Tempi di accesso al file: riportano lultima volta che il file è stato modificato, riferito e lultima volta che è stato modificato linode. Numero di link al file Dimensione del file Tabella degli indirizzi di disco dei dati in un file

Laface Bach Sistemi Operativi Esempio di Inode Proprietario:laftes1 Gruppo:laface Tipo:file ordinario Permessi:rwxr-xr-x Accesso:23 Ottobre 2001 h: 8:15 Modificato: 22 Ottobre 2001 h: 10:30 Inode:23 Ottobre 2001 h: 13:30 Dimensione:3050 byte Indirizzi su disco (13 puntatori)

Laface Bach Sistemi Operativi Copia di un Inode in memoria ll numero dellinode Lo stato dellinode che indica se – linode è occupato – la copia in memoria dellinode è diversa da quella su disco a causa degli aggiornamenti che ancora non sono stati registrati – il file è un punto di mount il numero del device logico del File System che contiene il file un contatore di quanti riferimenti al file sono contemporaneamente attivi i puntatori ad altri inode in memoria, al fine di poterli organizzare in code e liste come già visto per i buffer

Laface Bach Sistemi Operativi Funzioni di gestione del File system algoritmi di allocazione dei buffer getblk brelse bread breada bwrite iget iput bmap namei alloc freeialloc ifree

Laface Bach Sistemi Operativi iget La funzione iget alloca in memoria una copia dellinode associato al file restituendo in output un inode con un contatore di riferimenti incrementato di 1 (hash table e cache per efficienza). Linode viene bloccato durante una chiamata di sistema per evitare che altri processi possano accedervi contemporaneamente e creare situazioni inconsistenti. Il blocco viene rilasciato solo alla fine della chiamata. Nel caso linode non sia presente nella coda hash, viene ricercato il primo inode disponibile presente nella free list ed occupato. Nel caso la free list sia vuota, il kernel restituisce un errore.

Laface Bach Sistemi Operativi iget proceduraiget input:numero di inode nel file system output:inode bloccato { while (non fatto){ if (inode nella cache di inode){ if (inode bloccato){ sleep (evento inode libero); continue; } if (inode nella free list di inode) togli inode dalla free list; incrementa contatore di riferimenti allinode; return inode; } /* inode non presente nella cache di inode */ if (nessun inode nella free list) return errore; togli il nuovo inode dalle free list; azzera numero di inode e di file system; togli inode dalla vecchia coda hash, inserisci nella nuova; leggi inode da disco (procedura bread); inizializza inode; return inode;} proceduraiget input:numero di inode nel file system output:inode bloccato { while (non fatto){ if (inode nella cache di inode){ if (inode bloccato){ sleep (evento inode libero); continue; } if (inode nella free list di inode) togli inode dalla free list; incrementa contatore di riferimenti allinode; return inode; } /* inode non presente nella cache di inode */ if (nessun inode nella free list) return errore; togli il nuovo inode dalle free list; azzera numero di inode e di file system; togli inode dalla vecchia coda hash, inserisci nella nuova; leggi inode da disco (procedura bread); inizializza inode; return inode;}

Laface Bach Sistemi Operativi Struttura di un file normale indiretto singolo indiretto doppio indiretto triplo I-nodeBlocchi di dati

Laface Bach Sistemi Operativi Index block 10 blocchi diretti da 1 Kbyte ciascuno = 10 Kbyte 1 blocco indiretto con 256 blocchi diretti = 256 Kbyte 1 blocco doppiamente indiretto con 256 blocchi indiretti = 64 Mbyte 1 blocco triplamente indiretto con 256 blocchi doppiamente indiretti = 16 Gbyte

Laface Bach Sistemi Operativi iput La procedura di rilascio di un inode iput viene invocata quando viene eseguita la close di un file. Viene bloccato linode per evitare inconsistenze. Contatore di riferimenti è decrementato. Se tale contatore vale zero, il kernel scrive linode su disco se la copia presente in memoria differisce da quella su disco. Inoltre, non essendoci più alcuna copia attiva del file, linode deve essere liberato e riposto nella free list. Il kernel rilascia anche tutti i blocchi di dati associati al file e libera linode nel caso il numero di link sia zero.

Laface Bach Sistemi Operativi iput procedura iput input:puntatore allinode in memoria output:nessuno { blocca linode se non è già bloccato; decrementa il contatore di riferimenti dellinode; if (contatore di riferimenti == 0){ if (contatore di link allinode == 0){ libera blocchi di disco del file (procedura free); pone tipo file a = 0; libera inode (procedura ifree); } if (file acceduto o file cambiato o inode cambiato) aggiorna inode di disco; metti inode nella free list; } rilascia blocco inode; } procedura iput input:puntatore allinode in memoria output:nessuno { blocca linode se non è già bloccato; decrementa il contatore di riferimenti dellinode; if (contatore di riferimenti == 0){ if (contatore di link allinode == 0){ libera blocchi di disco del file (procedura free); pone tipo file a = 0; libera inode (procedura ifree); } if (file acceduto o file cambiato o inode cambiato) aggiorna inode di disco; metti inode nella free list; } rilascia blocco inode; }

Laface Bach Sistemi Operativi bmap serve per convertire un offset in byte allinterno di un file nel corrispondente numero di blocco fisico su disco. dato un offset, ricava tramite l'uso delle catene di puntatori presenti nellinode, qual è il blocco nel quale sono effettivamente presenti i dati richiesti, e restituisce un puntatore a quel blocco.

Laface Bach Sistemi Operativi bmap procedura bmap input:(1) inode (2) offset in byte output: (1) numero blocco nel file system,(2) offset in byte nel blocco (3) byte di I/O nel blocco. (4) numero blocco per lettura in avanti { calcola numero blocco logico nel file dalloffset in byte; calcola byte iniziale nel blocco per lI/O; calcola numero di byte da copiare per lutente; controlla se è applicabile la lettura in avanti, marca linode; determina il livello di indirezione; while (non al necessario livello di indirezione){ calcola indice nellinode e il blocco indirizzato dal numero di blocco logico nel file; prende il numero di blocco del disco dallinode o dal blocco indiretto; (eventuale brelse) if (non altri livelli di indirezione) return numero blocco; legge blocco indiretto; sistema il numero di blocco logico nel file a seconda del livello di indirezione;} procedura bmap input:(1) inode (2) offset in byte output: (1) numero blocco nel file system,(2) offset in byte nel blocco (3) byte di I/O nel blocco. (4) numero blocco per lettura in avanti { calcola numero blocco logico nel file dalloffset in byte; calcola byte iniziale nel blocco per lI/O; calcola numero di byte da copiare per lutente; controlla se è applicabile la lettura in avanti, marca linode; determina il livello di indirezione; while (non al necessario livello di indirezione){ calcola indice nellinode e il blocco indirizzato dal numero di blocco logico nel file; prende il numero di blocco del disco dallinode o dal blocco indiretto; (eventuale brelse) if (non altri livelli di indirezione) return numero blocco; legge blocco indiretto; sistema il numero di blocco logico nel file a seconda del livello di indirezione;}

Laface Bach Sistemi Operativi Esempio di Inode I-node 367 blocco di dati indirezione doppia indirezione singola 3333 blocco di dati

Laface Bach Sistemi Operativi Directory r: la directory è leggibile e quindi il suo contenuto può essere visualizzato w: è possibile creare nuove entry o rimuovere quelle già presenti attraverso le chiamate di sistema creat, mknod, link ed unlink x: un processo può attraversare la directory, cioé leggere il contenuto degli Inode associati ai nomi di file contenuti nella directory.

Laface Bach Sistemi Operativi 1.mkdir junk 2.for i in do 4.echo salve > junk/$i 5.done 6.ls -ld junk 7.ls -l junk 8.chmod -r junk 9.ls -ld junk 10.ls junk 11.ls -l junk 12.cd junk 13.pwd 14.ls -l 15.echo * 16.cd.. 17.chmod +r junk 18.chmod -x junk 19.ls junk 20.ls -l junk 21.cd junk 22.chmod +x junk 1.mkdir junk 2.for i in do 4.echo salve > junk/$i 5.done 6.ls -ld junk 7.ls -l junk 8.chmod -r junk 9.ls -ld junk 10.ls junk 11.ls -l junk 12.cd junk 13.pwd 14.ls -l 15.echo * 16.cd.. 17.chmod +r junk 18.chmod -x junk 19.ls junk 20.ls -l junk 21.cd junk 22.chmod +x junk drwxr-xr-x 2 user1 512 Feb 20 16:24 junk -rw-r--r-- 1 user1 6 Feb 20 16:24 1 -rw-r--r-- 1 user16 Feb 20 16:24 2 -rw-r--r-- 1 user16 Feb 20 16:24 3 -rw-r--r-- 1 user16 Feb 20 16:24 4 -rw-r--r-- 1 user16 Feb 20 16:24 5 d-wx--x--x 2 user1 512 Feb 20 16:24 junk junk unreadable /home2/user1/prova/junk. unreadable * ls: junk/1: Permission denied ls: junk/2: Permission denied ls: junk/3: Permission denied ls: junk/4: Permission denied ls: junk/5: Permission denied total 0 command: junk: Permission denied drwxr-xr-x 2 user1 512 Feb 20 16:24 junk -rw-r--r-- 1 user1 6 Feb 20 16:24 1 -rw-r--r-- 1 user16 Feb 20 16:24 2 -rw-r--r-- 1 user16 Feb 20 16:24 3 -rw-r--r-- 1 user16 Feb 20 16:24 4 -rw-r--r-- 1 user16 Feb 20 16:24 5 d-wx--x--x 2 user1 512 Feb 20 16:24 junk junk unreadable /home2/user1/prova/junk. unreadable * ls: junk/1: Permission denied ls: junk/2: Permission denied ls: junk/3: Permission denied ls: junk/4: Permission denied ls: junk/5: Permission denied total 0 command: junk: Permission denied

Laface Bach Sistemi Operativi namei La procedura namei converte un pathname in un inode in modo da poter accedere ad un file. Analizza un componente del pathname alla volta, convertendolo nel relativo inode. Il puntatore allinode della directory corrente di un processo è contenuta nella u-area. La directory corrente di ogni processo al momento della creazione coincide con quella del processo padre, ma la può cambiare usando la system call chdir. Tutte le ricerche di pathname partono dalla directory corrente del processo a meno che il pathname non inizi con / che indica un pathname assoluto.

Laface Bach Sistemi Operativi namei procedura namei/* converte pathname in inode */ input: pathname output: inode bloccato { if (pathname parte dalla radice) inode lavoro = indice radice (procedura iget); else inode lavoro = inode directory attuale (procedura iget); while (pathname non finito){ leggi successivo componente pathname dall'input; verifica che l'inode lavoro sia una directory, permessi di accesso OK; if (inode lavoro è radice e il componente è "..") continue; leggi directory (inode lavoro) usando le procedure bmap, bread, brelse; if (componente coincide con un'entry di directory (inode lavoro)){ prende numero inode componente coincidente; rilascia inode lavoro (procedura iput); inode lavoro = inode componente coincidente (procedura iget); } else/* componente non nella directory */ return (nessun inode); } return (inode lavoro); } procedura namei/* converte pathname in inode */ input: pathname output: inode bloccato { if (pathname parte dalla radice) inode lavoro = indice radice (procedura iget); else inode lavoro = inode directory attuale (procedura iget); while (pathname non finito){ leggi successivo componente pathname dall'input; verifica che l'inode lavoro sia una directory, permessi di accesso OK; if (inode lavoro è radice e il componente è "..") continue; leggi directory (inode lavoro) usando le procedure bmap, bread, brelse; if (componente coincide con un'entry di directory (inode lavoro)){ prende numero inode componente coincidente; rilascia inode lavoro (procedura iput); inode lavoro = inode componente coincidente (procedura iget); } else/* componente non nella directory */ return (nessun inode); } return (inode lavoro); }

Laface Bach Sistemi Operativi Scansione del pathname../a/b a Inode.. Inode b Inode. Inode b Current dir Parent dir a directory Current directory U-area Inodes Files

Laface Bach Sistemi Operativi Superblocco dimensione del File System numero di blocchi liberi disponibili nel File System lista dei blocchi liberi disponibili nel File System indirizzo del successivo blocco libero nella lista dei blocchi liberi dimensione della lista di inode numero di inode liberi nel File System lista di inode liberi nel File System indirizzo del successivo inode libero nella lista degli inode liberi campi di lock per la lista di blocchi liberi e di inode liberi flag che indica se il super blocco è stato modificato

Laface Bach Sistemi Operativi ialloc - ifree La procedura ialloc assegna un inode del disco ad un file che deve essere creato. Il File System mantiene una lista lineare di inode nella quale gli inode liberi presentano il campo tipo uguale a zero. Quando un processo richiede un nuovo inode, il kernel non effettua una ricerca lineare sulla lista perché risulterebbe troppo costosa, ma mantiene nel super blocco un array degli inode liberi presenti nel File System. La procedura ifree rilascia linode di un file che stato cancellato (mediante la system call unlink ), e non è attualmente in uso.

Laface Bach Sistemi Operativi Allocazione di blocchi di disco Lista del superblocco

Laface Bach Sistemi Operativi alloc La procedura alloc permette di allocare il primo blocco libero presente nella lista contenuta nel super blocco. Se il blocco è lultimo disponibile nella cache del super blocco, il kernel usa il numero ottenuto come puntatore ad un blocco contenente il prossimo elemento della lista linkata, che viene caricato integralmente nella cache. Il blocco che conteneva indirizzi di blocchi liberi del disco, ormai vuoto, viene usato come blocco di dati da allocare al processo che lo richiede.

Laface Bach Sistemi Operativi Esempio di alloc e free a, b - Configurazione iniziale e dopo il rilascio del blocco Lista del superblocco Lista del superblocco Lista del super blocco c, d - Assegnazione del blocco 949 ed assegnazione del blocco 109 con riempimento della free list del super blocco