File System ext2. Struttura del filesystem ext2.

Похожие документы
Architettura degli elaboratori Docente:

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Interfaccia del file system

Struttura interna del sistema operativo Linux

SHELL: File e Filesystem

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

File: definizione. Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da:

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Lezione 2: Comandi avanzati della Shell di Unix

Architettura di un calcolatore

Modulo 3. Software. Corso di Sistemi di elaborazione delle informazioni -Autore: Ing. Maurizio Patanè

Esercizio FAT 1. Soluzione: 1. Capacità del disco: 2 24 blocchi (3 byte=24 bit) 2

Corso di Sistemi Operativi I/II. Introduzione a Linux. Il File System. Ruggero Donida Labati

Si può simulare una struttura di directory a multilivelli con una struttura di directory a singolo livello?"

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistema operativo. Interazione con il SO

Definizione di file. Directory e file File binari e file di testo

Sistema Operativo (Software di base)

File System I parte. File System

Fondamenti di GNU/Linux

Prova in itinere 7 Giugno 2016 Università di Salerno

Gli Extended file system di Linux (Ext2/Ext3/Ext4)

File System. Capitolo 13

Sistema operativo & file system 1

File binari e file di testo

IL SOFTWARE DI SISTEMA

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Sicurezza del File System

Sistemi operativi. Motivazione. Tipi di software. Sistemi operativi. Un sistema operativo (SO) e un insieme di programmi che gestiscono le funzioni

File System. Concetti e tecniche generali

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

Il Sistema Operativo

ISA Input / Output (I/O) Data register Controller

Struttura Logica del S.O:

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Linux la gestione dei dischi

Linguaggio C: i file

Introduzione all'uso del sistema operativo Ubuntu

Filesystem. Il file system è organizzato in blocchi logici contigui

Capitolo Silberschatz

File System. File system gerarchico. Proteggere la propria home directory ... / = Root nodi interni: directory foglie: directory vuote o file

Esercitazione su Gerarchie di Memoria

Elementi di Informatica

Livelli del sottosistema di I/O

Транскрипт:

Struttura di base File System ext2 Lo spazio fisico di un disco viene usualmente diviso in partizioni; ogni partizione può contenere un filesystem. Nel filesystem ext2 il blocco (block) definisce la minima unità di memorizzazione dei dati è generalmente delle dimensioni di 1.024 byte, ma la sua dimensione può essere scelta tra 1.024, 2.048 o 4.096 byte in fase di creazione del filesystem. Struttura del filesystem ext2. I blocchi vengono raggruppati in block group in modo da suddividere l intero filesystem in entità autonome allo scopo di limitare eventuali errori che possono verificarsi nella struttura del filesystem (un errore è limitato all interno di un block group e non compromette l intero filesystem) e per ridurre i tempi di accesso alle informazioni, memorizzando i file nelle vicinanze delle directory che li contengono. Ogni block group contiene una copia delle informazioni essenziali del filesystem (superblock e descrittore del filesystem sono quindi ridondati) per una maggiore affidabilità e possibilità di recupero in caso di corruzione del superblock principale. Superblock contiene informazioni relative all intero filesystem, ad esempio: numero totale dei blocchi, numero totale inode, contatore blocchi liberi, dimensione del blocco, numeri di blocchi per gruppo, numero di inode per gruppo, fata ora ultima operazione di mount, nome partizione. Questi valori stabiliti al momento della creazione del filesystem e non possono essere più modificati, se non distruggendo il filesystem e creandone un altro. FS descriptor contiene informazioni relative al block group a cui si riferisce, ad esempio: il numero dei blocchi liberi, quello degli inode liberi e delle directory presenti nel block group. Data block bitmap è una sequenza di bit, ognuno dei quali indica se il corrispondente data block del block group è libero o allocato. Inode bitmap analogo al data block bitmap ma si riferisce agli inode Inode table è la porzione del filesystem che contiene gli inode del block group, ovvero strutture adibite alla memorizzazione delle proprietà degli oggetti del filesystem. Data blocks è la porzione del filesystem che contiene i blocchi (data blocks) del block group, adibiti alla memorizzazione delle informazioni contenute all interno dei file. 1

I file In generale, un file contiene delle informazioni (data) ed è caratterizzato da alcune proprietà, come il tipo, la dimensione, i permessi di accesso. Queste proprietà sono chiamate metadati. Il filesystem ext2 memorizza i metadati di un file in un apposita struttura, detta index node, o più comunemente inode, mentre le informazioni contenute nel file sono memorizzate nei blocchi, denominati anche data block. Ogni inode è una struttura che contiene i valori sottoelencati ed il numero degli inode è fissato alla creazione del filesystem. Quando tutti gli inode saranno utilizzati (allocati) da altrettanti file, non sarà più possibile creare altri file anche se ci sono data block liberi. In un inode ext2 vengono memorizzati i metadati di un file, tra cui Tipo indica il tipo di file (regular file, directory, symbolic link,...). UID proprietario identifica l utente propriertario del file (è il suo UID); GID proprietario identifica il gruppo propriertario del file (è il suo GID); Permessi (mode) sono i permessi di accesso al file; Dimensione indica la lunghezza del file in byte. Numero dei data block indica il numero dei data block utilizzati per memorizzare il file. data/ora dell ultima modifica (mtime) è il riferimento al momento nel quale il contenuto del file ha subito l ultima modifica (quella più recente); data/ora dell ultimo cambiamento dei metadati (ctime) è il riferimento al momento nel quale l inode relativo al file in questione ha subito l ultima modifica (anche se il suo contenuto non è stato modificato); data/ora dell ultimo accesso (atime) è il riferimento al momento nel quale il file è stato acceduto l ultima volta; data/ora di cancellazione (dtime) è il riferimento al momento nel quale il file è stato cancellato (tale campo, se diverso da 0, indica che l inode è stato cancellato ed il filesystem può riutilizzare lo spazio del disco da esso occupato per memorizzarci un altro inode); Numero degli hard link indica il numero degli hard link associati al file); Riferimenti ai data block sono i riferimenti ai blocchi nei quali sono memorizzate le informazioni contenute nel file. In particolare per ogni inode possono essere memorizzati fino a 12 riferimenti a blocchi contenenti dati (direct block), un riferimento ad un blocco che a sua volta contiene un elenco di direct block (indirect block), un riferimento ad un blocco che a sua volta contiene un elenco di indirect block (double indirect block) ed un riferimento ad un blocco che a sua volta contiene un elenco di double indirect block (triple indirect block). È da notare il fatto che tra i metadati di un inode non c è il nome del file, in quanto esso viene memorizzato soltanto all interno della directory che lo contiene (cioè nei data block relativi all inode della directory che lo contiene). Questo permette la gestione degli hard link. 2

I tipi di file In GNU/Linux possono essere utilizzati vari tipi di file, ognuno identificato da uno specifico codice che filesystem ext2 memorizza nei metadati relativi al file considerato. I file standard o regular file A tale categoria appartiene la maggior parte dei file presenti sui filesystem. Tale tipo rappresenta il file nella sua accezione di base, ovvero un contenitore di informazioni senza caratteristiche particolari. I file di questo tipo sono anche detti regular file. Le directory Una directory è un file particolare che contiene un elenco di elementi detti dentry (directory entry), ognuno dei quali è costituito da: il numero di inode al quale si riferisce; la lunghezza della dentry; la lunghezza del nome del file; il tipo del file; il nome del file; I numeri degli inode presenti in tale elenco, costituiscono i riferimenti univoci agli inode relativi ai file (o directory) accessibili da tale directory, cioè i file (o directory) contenuti all interno della directory. Si tenga presente che la dimensione del campo name è variabile. All interno della directory sono sempre presenti le directory. e.. che indicano rispettivamente la directory stessa e la directory padre. Quando viene specificato il percorso di un file (path), il kernel ricerca nelle dentry delle varie directory che costituiscono il path del file, il nome indicato, per trovare di volta in volta il relativo 3

numero di inode e per poter così accedere alle informazioni in esso contenute. Una volta raggiunto l inode relativo al file indicato, il sistema ha i riferimenti per poter accedere alle informazioni contenute nel file stesso. Esempio di accesso ad un file. I link Nei sistemi Unix-like dunque un file (o directory) è rappresentato da un inode, all interno del quale sono memorizzati i sui metadati, ovvero i suoi dati caratteristici ed in esso vi sono i riferimenti ai blocchi che contengono il contenuto vero e proprio del file. Come si può notare dalla struttura, negli inode non viene memorizzato il nome del file, poiché esso non è una caratteristica intrinseca del file stesso (il file è individuato univocamente dal numero di inode), ma è semplicemente un etichetta memorizzata nelle dentry che serve come riferimento per poter accedere all inode relativo al file. Quindi, sebbene un nome di file individui un solo inode, lo stesso inode può essere individuato da più nomi di file. L associazione tra il nome del file e l inode a cui si riferisce, memorizzato nelle dentry, è detta hard link (physical link, collegamento fisico o collegamento diretto). Dunque, un file (inode) può avere più hard link (più nomi) che si riferiscono ad esso. Quando viene creato un hard link, viene incrementato il contatore dei riferimenti nell inode relativo (i_links_count). In questo modo il sistema tiene traccia di quanti hard link sono riferiti ad ogni inode. L eliminazione di un hard link non implica l eliminazione di un file, ovvero dell inode relativo, ma un file viene effettivamente eliminato dal filesystem soltanto quando l ultimo degli hard link ad esso relativi viene eliminato e nessun processo sta utilizzando il file (inode) in questione. Alla creazione di un file viene sempre creato un hard link ad esso relativo, cioè il primo riferimento a sé stesso che è una dentry all interno della directory che lo contiene. In tale dentry sarà memorizzato il nome associato a tale hard link (il nome del file). È possibile creare hard link soltanto sui filesystem che li supportano e, comunque, sia l inode che il relativo hard link devono trovarsi sullo stesso filesystem; GNU/Linux permette la creazione di file particolari che il sistema riconosce come tali: i symbolic link (symlink, soft link o collegamenti simbolici). Essi sono dei file che contengono soltanto il path relativo al file o directory a cui si riferiscono. È importante sottolineare il fatto che il sistema non tiene conto, all interno degli inode, dei symbolic 4

link che si riferiscono ad essi, come invece avviene per gli hard link: quindi è possibile ottenere dei dangling link (collegamenti penzolanti) ovvero dei symbolic link che non sono collegati ad un file o ad una directory esistente. Per contro, i symbolic link non hanno le restrizioni degli hard link, quindi è possibile anche creare symbolic link relativi a file o directory situati in filesystem diversi da quello in cui viene creato il link. I link vengono creati per mezzo del comando ln. La creazione di un link, sia hard che symbolic, non occupa molto spazio sul disco, poiché non effettua la copia del contenuto del file al quale il link si riferisce. I file speciali Alcuni file in GNU/Linux hanno caratteristiche particolari e per questo sono detti file speciali e si dividono in FIFO (o named pipe), file di dispositivo e socket (Unix domain socket). Le FIFO o named pipe Una FIFO, detta anche named pipe, è un file il cui funzionamento è simile a quello di una pipe, cioè come memoria di appoggio per lo scambio di informazioni tra processi. Quando i processi comunicano tra loro attraverso una FIFO, il sistema non utilizza il filesystem, ma il transito delle informazioni avviene direttamente in memoria centrale. Il file serve soltanto come riferimento univoco alla FIFO per i processi che la vogliono utilizzare per comunicare tra loro.il nome FIFO deriva dal fatto che essa opera come una coda, ovvero è gestita in maniera tale che il primo dato in essa inserito è anche quello che viene estratto per primo (First In, First Out). Un processo può accedere in lettura e/o scrittura ad una FIFO, ovvero all inode (file) presente sul filesystem, soltanto se ha i diritti per poterlo fare, come avviene per tutti gli altri file. I file di dispositivo I file di dispositivo o device file sono particolari file che i sistemi Unix-like associano ai dispositivi fisici. Ad esempio, ad un terminale (monitor) è associato un file di dispositivo che rappresenta per il sistema il buffer di output del terminale stesso, ovvero i caratteri scritti in quel file verranno visualizzati sullo schermo; allo stesso modo la tastiera è associata ad un file, ovvero tutto ciò che viene digitato dalla tastiera finisce in tale file ed il sistema operativo leggerà i comandi impartiti da tale file. Per poter funzionare correttamente con il sistema, ogni dispositivo necessita di un apposito software denominato driver. Tale software ha il compito di far vedere il dispositivo al sistema, nel senso che si preoccupa di gestire i meccanismi per la comunicazione con il particolare dispositivo considerato. Quindi è necessario creare anche un file di dispositivo, con le opportune caratteristiche, da associare al dispositivo stesso. I file di dispositivo sono generalmente contenuti nella directory /dev. I socket I socket costituiscono un interfaccia di comunicazione tra processi. I socket locali, o Unix domain socket (il nome deriva dal fatto che tale meccanismo di comunicazione è nato in ambiente Unix nel 1983) presi in considerazione in questo contesto, costituiscono il meccanismo di comunicazione tra processi esistenti su una stessa macchina. L interfaccia dei socket viene attualmente utilizzata per la comunicazione tra processi esistenti anche su macchine diverse, ovvero per realizzare la comunicazione di rete. Un socket rappresenta un canale di comunicazione tra due processi, nel quale si possono scrivere informazioni e dal quale si possono leggerle. L interfaccia dei socket è caratterizzata da un elevata genericità e flessibilità, tanto che si è diffusa in tutti gli ambienti di programmazione, anche in quelli non legati al mondo Unix. 5