Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione.



Documenti analoghi
Capitolo Silberschatz

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

12. Implementazione di un File System Struttura a livelli Allocazione contigua

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi. Organizzazione logica ed implementazione di un File System

11 Realizzazione del File System Struttura a livelli (fig. 11.1) 11.4 Allocazione dei file

Implementazione del File System

Il File System. Il file system

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Sistemi Operativi. 12 LEZIONE REALIZZAZIONE DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Realizzazione del file system

File system. Realizzazione del file system. Struttura del file system. Struttura del file system. Realizzazione del file system

File system II. Sistemi Operativi Lez. 20

Il Sistema Operativo: il File System

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Sistemi Operativi Il Sistema Operativo Windows (parte 3)

Indice. settembre 2008 Il File System 2

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi. Implementazione del File System

Sistemi Operativi. Lez. 16 File System: aspetti implementativi

Strutturazione logica dei dati: i file

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

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

Gestione della memoria centrale

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

SISTEMI OPERATIVI DISTRIBUITI

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Sistema operativo: Gestione della memoria

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Organizzazione degli archivi

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Sistemi Operativi. 5 Gestione della memoria

La Gestione delle risorse Renato Agati

Le Infrastrutture Software ed il Sistema Operativo

Il Software. Il software del PC. Il BIOS

STRUTTURE DEI SISTEMI DI CALCOLO

PROGETTAZIONE FISICA

Laboratorio di Informatica di Base Archivi e Basi di Dati

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Esercitazione E6 Esercizi d esame

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Laboratorio di Informatica

Corso di Sistemi di Elaborazione delle informazioni

Gestione della Memoria

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi:

Protezione. Protezione. Protezione. Obiettivi della protezione

Tecnologia di un Database Server (centralizzato) Gestione del buffer

Capitolo 13. Interrogare una base di dati

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Sistemi Operativi. 11 LEZIONE INTERFACCIA DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Infrastrutture Software

Access. P a r t e p r i m a

File system. Chiamate di sistema POSIX Esempi: Chiamate di sistema Windows Esempio: Esercizi. 4.3 BSD Linux NTFS. Sistemi Operativi mod B 12.

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

FoLUG Forlì Linux User Group. Partizionamento

Memoria secondaria. Struttura del disco. Scheduling del disco. Gestione dell unità a disco. Affidabilità dei dischi: RAID

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Realizzazione del File System

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Introduzione all Architettura del DBMS

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

PARTE 4 La Macchina Software

B+Trees. Introduzione

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Lezione 12. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Materiali per il modulo 1 ECDL. Autore: M. Lanino

GESTIONE DELLA MEMORIA CENTRALE

Il memory manager. Gestione della memoria centrale

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Il Sistema Operativo

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Altri metodi di indicizzazione

Architettura hardware

La memoria centrale (RAM)

Cosa è un foglio elettronico

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Varie tipologie di memoria

Coordinazione Distribuita

Fasi di creazione di un programma

La struttura dati ad albero binario

Database. Si ringrazia Marco Bertini per le slides

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Funzioni in C. Violetta Lonati

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Transcript:

C6. REALIZZAZIONE DEL FILE SYSTEM Struttura del file system Un file è analizzabile da diversi punti di vista. Dal punto di vista del sistema è un contenitore di dati collegati tra di loro, mentre dal punto di vista logico è una struttura dati contigua (ovvero un vettore di byte su cui è possibile fare accesso diretto). Il file system fornisce un interfaccia per far corrispondere file logici a file fisici e per gestire le informazioni di accesso al disco ed è formato da più layer Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione. Effettua operazioni di trasferimento delle informazioni tra memoria centrale e memoria secondaria, ricevendo e traducendo messaggi del tipo recupera il blocco 123. File system di base Invia generici comandi al driver di dispositivo per leggere e scrivere blocchi fisici sul disco. Gestisce buffer di memoria e cache che conservano vari blocchi dei file system, delle directory e dei dati. Modulo di organizzazione dei file E a conoscenza dei file e dei loro blocchi logici, così come dei blocchi fisici del disco. Conoscendo il tipo di allocazione dei file usato e la locazione dei file, può tradurre gli indirizzi dei blocchi logici, che il file system di base deve trasferire, negli indirizzi dei blocchi fisici. File system logico Gestisce tutti i metadati, ovvero le strutture del file system, eccetto gli effettivi dati. Mantiene le strutture di file tramite i FCB, contenenti informazioni sui file, come la proprietà, i permessi, e la posizione del contenuto. Realizzazione del file system Introduzione Per realizzare un file system si usano parecchie strutture dati, sia nei dischi che in memoria. Tra le strutture presenti nei dischi ci sono: il boot control block contenente le informazioni necessarie al sistema per l avviamento di un sistema operativo da quel volume i volume control block che contengono i dettagli riguardanti il relativo volume, come il numero e la dimensione dei blocchi del disco le strutture della directory usate per organizzare i file. il file control block (FCB), associato ad ogni file e contenente molti dettagli riguardanti il file stesso come la dimensione, i proprietari, ecc. Dato che è possibile vedere il file come una struttura di blocchi logici che dovranno essere fatti corrispondere a dei blocchi fisici e che un file non è fisicamente contiguo (e quindi non è sufficiente sapere qual è il primo blocco per trovare tutti gli altri) si ha dunque la necessità di mantenere una tabella nel FCB per percorrere il file.

Le informazioni contenute in memoria principale sono diverse. Servono per migliorare le prestazioni, vengono caricate al momento del montaggio e si eliminano allo smontaggio. Si possono citare: la mounted table, che contiene informazioni relative a ciascun volume montato la struttura della directory, contenente le informazioni relative a tutte le directory cui i processi hanno avuto accesso di recente la tabella generale dei file aperti, contenente una copia del FCB di ciascun file aperto. la tabella dei file aperti per ciascun processo alcune strutture dinamiche (buffer di dati), in cui sono contenuti temporaneamente dati ridondati a scopo di efficienza Una volta creato un file, per essere usato per operazioni di I/O deve essere aperto. La chiamata di sistema open() passa un nome di file al file system. Per controllare se il file sia già in uso da parte di qualche processo, la chiamata open() dapprima esamina la tabella dei file aperti in tutto il sistema (aggiungendo un elemento alla tabella dei file aperti in caso di file trovato). Una volta aperto il file, se ne ricerca il nome all interno della directory, le cui informazioni sono tenute in parte all interno della memoria centrale. Trovato il file, si copia l FCB nella tabella generale dei file aperti tenuta in memoria. Questa tabella non solo contiene l FCB, ma tiene anche traccia del numero dei processi che in quel momento hanno il file aperto. Successivamente viene creato un elemento nella tabella dei file aperti del processo con un puntatore alla tabella generale e con alcuni altri campi. Questi altri campi possono comprendere un puntatore alla posizione corrente del file (per successive operazioni read() o write()) e il tipo di accesso richiesto all apertura del file. La open() riporta un puntatore all elemento appropriato nella tabella dei file aperti del processo, sicché tutte le operazioni sul file si svolgeranno usando questo puntatore. L operazione di close() causa l eliminazione di una entry nella open-file table per processo. Nel caso tale entry fosse stata l unica presente nella system-wide open-file table, l operazione di close() causerebbe anche l eliminazione di quest ultima tabella. Ogni entry presente nella per-process open-file table è detta file descriptor in Unix (dove le prime 3 righe di tale tabella corrispondono a stdin, stdout e stderr) e handle in Windows. Partizioni e montaggio Una partizione può essere un volume, contente un file system, o può essere una partizione di swap, e come tale è soltanto un insieme di blocchi. La partizione di boot e la partizione radice di un sistema devono essere verificate in partenza quando si fanno operazioni di mount per verificare che siano consistenti.

File system virtuali In UNIX, il Virtual File System (VFS) è un layer che permette di avere uniformità tra file system implementati al di sotto di esso. Esiste infatti un layer di virtualizzazione del file system che permette di prescindere da quelli che sono i dispositivi e i vari file system che vi sono al di sotto. I Virtual Nodes (Vnodes) sono i descrittori dei file a questo layer. Realizzazione delle directory Per decidere con quale sistema implementare le directory, bisogna innanzitutto sottolineare la presenza di un problema di dinamicità: è improbabile che l elenco dei file e dei nomi dei file in una directory sia fatto da un vettore perché questa è una struttura dati molto dinamica in cui bisogna poter cancellare o aggiungere delle nuove directory o dei nuovi file nel modo più ottimale possibile. La lista è quindi di per sè la struttura dati più semplice: ha però un problema di prestazioni legata alla ricerca, misurabile in O(n). Si potrebbe pensare di usare delle strutture dati più efficienti con prestazioni O(1), come le tabelle di hash: in questo caso però esiste il problema delle collisioni da gestire con lista concatenata (tale metodo è comunque più veloce di una ricerca lineare nell intera directory). Metodi di allocazione Immaginiamo di essere finalmente arrivati al PCB. A che cosa punta? Allocazione contigua Nell allocazione contigua un file occupa un insieme di blocchi contigui sul disco. L ordinamento dei blocchi fisici è dato dagli indirizzi associati ai blocchi fisici. Per un file lungo n blocchi, memorizzato a partire dal blocco b, verranno occupati i blocchi b, b+1, b+2,..., b+n 1 sul disco. la lettura sequenziale di un file avviene in modo ottimale, in quanto la testina del disco si sposta al più una volta, per posizionarsi all inizio del file nel caso un file fosse molto grande, la testina dovrebbe in ogni caso fare dei movimenti minimi in caso di creazioni e cancellazioni frequenti di file, il disco tenderà ad alternare sequenze di blocchi occupati a sequenze di blocchi liberi (frammentazione esterna): il tutto è risolvibile con la deframmentazione in generale, è necessario stimare la dimensione del file che si vuole creare, altrimenti non si è in grado di trovare un insieme di blocchi contigui adatto: l operazione è difficile e non sempre fattibile a priori Per risolvere i problemi della frammentazione esterna e della variabilità dei file, alcuni file system fanno uso di uno schema di allocazione contigua modificato: inizialmente si assegna una porzione di spazio contiguo, e se questa non è abbastanza grande si aggiunge un altra porzione di spazio (un estensione).

Allocazione concatenata Nell allocazione concatenata, un file è composto da una lista concatenata di blocchi. L elemento della directory contiene un puntatore al primo blocco del file. Il blocco i -esimo contiene un puntatore al blocco (i+1) -esimo. L ultimo blocco contiene un puntatore ad un nodo fittizio (solitamente, il blocco -1 ). un blocco libero può essere localizzato ovunque nel disco. Il problema della frammentazione esterna è risolto: la deframmentazione non è dunque più necessaria dal punto di vista funzionale (lo è ancora dal punto di vista prestazionale) non è più richiesta una stima della dimensione del file: un file può crescere indefinitamente solamente l accesso sequenziale ad un file è efficiente: l accesso diretto ad un blocco causa una scansione della lista dal blocco iniziale fino a quello considerato se i blocchi del file sono sparpagliati su disco, neanche l accesso sequenziale è efficiente poiché la testina deve continuare a muoversi, facendo aumentare il tempo di seek. l affidabilità peggiora rispetto all assegnazione sequenziale: poiché i puntatori sono nei blocchi dato, se si corrompe una blocco del file, tutto il file diventa invalido. parte dello spazio libero del disco va sprecata in puntatori. File allocation table Una variante di questa soluzione è la File Allocation Table (FAT). Tale struttura permette di scorporare i puntatori inglobati nei blocchi dato (che obbligano a leggere i dati durante la percorrenza della lista) inserendoli in un vettore precaricato in RAM. La percorrenza delle liste dunque può essere fatta riferendosi solamente a tale vettore, posticipando la lettura dei dati veri e propri solamente nei casi in cui è strettamente necessario. Allocazione indicizzata Nell assegnazione indicizzata ad un file è assegnato un blocco indice, che contiene una sequenza di indirizzi di blocchi sul disco appartenenti al file. L elemento della directory contiene un puntatore al blocco indice. Non appena creato un file, il blocco indice è valorizzato con puntatori nulli. A regime, il puntatore i -esimo contiene l indirizzo del blocco i-mo del file. non si ha più frammentazione esterna perché un blocco del file può essere memorizzato in qualunque posizione del disco si riduce la frammentazione interna perché la dimensione di un blocco è contenuta l accesso al blocco avviene in tempo costante in quanto si accede al vettore i - esimo del blocco indice

la lista dei blocchi del file è inserita all interno di un solo blocco di disco, limitando la dimensione massima del file è dunque limitata da tale problema nasce la necessità di usare più blocchi indice la dimensione del blocco indice è critica: è necessario trovare un buon compromesso tra blocchi piccoli (se si esagera si rischia di non avere un numero sufficiente di indici per rappresentare un file grande) e grandi (se si esagera si rischia la frammentazione interna sul blocco indice) Esistono tre schemi principali di implementazione di un indice su più blocchi: schema concatenato, indice a più livelli e schema combinato. Schema concatenato Un blocco indice è formato normalmente di un solo blocco di disco; perciò, ciascun blocco indice può essere letto e scritto esattamente con un operazione. Per permettere la presenza di lunghi file è possibile collegare tra loro parecchi blocchi indice. Indice a più livelli Si usa un blocco indice di primo livello che punta ad un insieme di blocchi indice di secondo livello che, a loro volta, puntano ai blocchi dei file. Per accedere ad un blocco, il SO usa l indice di primo livello, con il quale individua il blocco indice di secondo livello, e con esso trova il blocco di dati richiesto. Schema combinato A ciascun file è assegnato un blocco descrittore, noto con il nome di inode, che funge da FCB del file e contiene un certo numero di puntatori a blocchi. Nell esempio è possibile distinguere zona direct blocks: puntatori che puntano a blocchi diretti, cioè blocchi contenenti dati del file zona single indirect: puntatore a un blocco indiretto singolo, cioè a un blocco contenente indirizzi di blocchi che contengono dati zona double indirect: puntatore a un blocco indiretto doppio, cioè a un blocco che a sua volta contiene gli indirizzi di blocchi contenenti puntatori agli effettivi blocchi di dati zona triple indirect: puntatore a un blocco indiretto triplo Gestione dello spazio libero Per tenere traccia dello spazio libero in un disco, il sistema conserva una lista dello spazio libero, in cui vi sono registrati tutti gli spazi liberi (cioè non allocati ad alcun file o directory). A dispetto del nome, la lista potrebbe essere realizzata in diversi modi: vettore di bit ogni blocco è rappresentato da un bit: se il blocco è libero, il bit vale 1 è facile trovare n blocchi liberi consecutivi nel disco è efficiente solo se viene scritto di tanto in tanto in memoria la dimensione è un problema da non trascurare un file system di 1 PB può richiedere anche 32 GB di mappa

lista concatenata si collegano tutti i puntatori agli spazi liberi e si tiene traccia del primo schema non efficiente perché per attraversare la lista è necessario leggere ogni blocco la lista, tuttavia, non viene attraversata spesso raggruppamento variabile del metodo della lista si memorizzano (n 1) blocchi liberi e l n -esimo contiene gli indirizzi di altri n blocchi liberi conteggio generalmente più blocchi liberi si possono allocare o liberare insieme si mantiene l indirizzo del primo blocco libero e il numero n di blocchi liberi mappe di spazio usate in sistemi particolari come ZFS Efficienza e prestazioni In alcuni sistemi operativi vi è una separazione delle cache: questo aspetto modulare è controintuitivamente fonte di inefficienza, perché ad esempio le chiamate di sistema read() e write() passano attraverso un meccanismo di cache, mentre le chiamate con associazione alla memoria richiedono l uso di due cache. Utilizzando una buffer cache unificata, sia l associazione alla memoria che le chiamate di sistema read() e write() usano la stessa cache delle pagine, con il vantaggio di evitare il double caching e permettendo al sistema di memoria virtuale di gestire dati del file system. E possibile ottimizzare la cache delle pagine con tecniche note come free-behind (che rimuove una pagina non appena si richiede quella successiva, ipotizzando che le pagine precedenti non verranno più richieste) e read-ahead (in cui si leggono e si inseriscono in cache sia la pagina richiesta che parecchie pagine successive, che verosimilmente verranno richieste in un futuro prossimo). Ripristino Poiché i file e le directory sono mantenuti sia in memoria centrale che nei dischi, è necessario aver cura di assicurare che il verificarsi di un malfunzionamento nel sistema non comporti la perdita dei dati o la loro incoerenza. Vi sono diversi meccanismi, che prevedono l iniziale verifica della coerenza (in grado di risolvere alcuni problemi) con strumenti come chkdsk o l implementazione di file system con registrazione delle modifiche, basati sul concetto di transazione. ***