Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Gestione File e File System: Strutture e Allocazione, Appunti di Sistemi Operativi

Una panoramica completa della gestione dei file e dei file system, esplorando le loro strutture, i metodi di allocazione dei file (allocazione contigua, per blocchi e indicizzata) e le tecniche di gestione dello spazio libero (vettore di bit e lista linkata). I vantaggi e gli svantaggi di ogni metodo, fornendo una comprensione approfondita dei principi fondamentali alla base della gestione dei file e dei file system.

Tipologia: Appunti

2024/2025

In vendita dal 16/01/2025

dicaprioale_
dicaprioale_ 🇮🇹

4 documenti

1 / 9

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
IL FILE SYSTEM
Alessio di Caprio - mat. 05121/19548
Universit`a degli Studi di Salerno - A.A. 2024/25
pf3
pf4
pf5
pf8
pf9

Anteprima parziale del testo

Scarica Gestione File e File System: Strutture e Allocazione e più Appunti in PDF di Sistemi Operativi solo su Docsity!

IL FILE SYSTEM

Alessio di Caprio - mat. 05121/

Universit`a degli Studi di Salerno - A.A. 2024/

Cos’`e il file system?

Con il termine file system ci riferiamo all’insieme di tutti quei meccanismi necessari per la memoriz- zazione e l’accesso ai dati di un sistema operativo. Esso `e strutturato secondo queste specifiche:

  • Insieme di file
  • Una struttura di directory necessarie per organizzare i file di sistema

File

Un file non e altro che un’unita di memorizzazione logica che dispone di una collezione di informazioni correlate, memorizzate su memoria non volatile. Possono contenere: dati (numeri, caratteri, dati binari) e/o programmi (file sorgenti, file linkabili, file eseguibili).

Tipologie di file

  • File di testo: sequenza di caratteri, testo, linee, pagine.
  • File sorgente: codice sorgente di programmi.
  • File oggetto: file contenenti sequenze di byte.
  • File eseguibili: serie di sezioni di codice binario.

Ad ogni file sono associate delle specifiche informazioni (attributi) che possono variare a seconda del sistema operativo utilizzato:

  • Nome: nome simbolico del file.
  • Identificatore: identificatore univoco del file.
  • Tipo: tipo di file.
  • Locazione: puntatore al dispositivo di memoria in cui il file `e memorizzato.
  • Dimensione: dimensione del file.
  • Protezione: informazioni che regolano l’accesso al file (permessi).
  • Ora, data e identificazione utente: ora, data di creazione e specifiche dell’utente creatore del file.

Operazioni sui file

  • Creazione: richiede al sistema operativo di trovare spazio per il file e creare un accesso al file tramite la directory contenente il file, secondo le modalit`a di accesso stabilite.
  • Scrittura e Lettura: il sistema operativo dispone di una system call per specificare il nome del file su cui si vuole effettuare una delle due operazioni. Allo stesso tempo, gestisce il puntatore verso il file e trova spazio sufficiente per ospitare eventuali espansioni del file.
  • Cancellazione di un file: gestisce il puntatore verso il file e recupera lo spazio occupato dal file (nella directory), eliminando il file.
  • Troncamento di un file: cancella i dati memorizzati nel file e recupera lo spazio occupato.

Tutte le operazioni sopracitate necessitano di un’operazione di apertura del file e di ricerca della sua entry in una directory. Operazione di lettura di un file: Per evitare una continua ricerca di una entry all’interno di una specifica directory, molti sistemi operativi richiedono l’impiego della chiamata di sistema open() prima che un file possa essere utilizzato. Poich´e molti sistemi fanno uso di tavole di memorizza- zione dei file aperti (process-table-entry), la ricerca di uno specifico file e minimizzata. Ogni entry, rappresentante un singolo file,e associata alle seguenti informazioni:

Figura 1: Esempio di struttura di una directory

Directory

Una directory puo essere vista come un file contenente le informazioni sui file che la compongono. Vie pero una differenza sostanziale tra file e directory: un generico file puo essere aperto e modificato a piacere dal possessore del file (eventualmente anche facendo qualche pasticcio); al contrario, nemmeno il possessore di una directory pu`o modificarla a piacimento, ma solo attraverso operazioni messe a disposizione dal sistema operativo.

Directory a singolo livello

Le directory a singolo livello sono adatte in casi in cui:

  • La gestione e l’accesso ai file sono semplici e non richiedono un’organizzazione avanzata.
  • Il numero di file e ridotto e non c’e bisogno di organizzare i dati in modo complesso.
  • La struttura non `e destinata a crescere in modo significativo nel tempo.

Le directory a singolo livello sono una soluzione semplice e veloce per organizzare pochi file, ma possono diventare rapidamente inefficienti e difficili da gestire quando il numero dei file aumenta o quando e necessario un sistema piu complesso di categorizzazione e archiviazione.

Directory a Due Livelli

Le directory a due livelli consistono in una cartella principale che contiene diverse sottodirectory. Ogni sottodirectory pu`o contenere file, consentendo una semplice organizzazione gerarchica.

Vantaggi

  • Organizzazione migliorata: i file sono suddivisi in categorie o gruppi.
  • Navigazione semplice: facile accesso ai file grazie alla struttura a due livelli.
  • Scalabilita limitata: piu file possono essere gestiti senza diventare disordinati.

Svantaggi

  • Scalabilit`a limitata: troppi file o sottodirectory possono rendere la gestione complessa.
  • Mancanza di profondit`a: non adatta per esigenze di organizzazione molto complesse.

Directory ad albero

Le directory ad albero sono una struttura gerarchica in cui ogni directory puo contenere altre directory (sottodirectory), formando una struttura ramificata simile a un albero. Questo modello permette di organizzare i file in modo logico e gerarchico, facilitando la navigazione e la gestione dei dati. Ogni directory puo contenere file o altre sottodirectory, creando una struttura a pi`u livelli che consente una gestione flessibile e scalabile dei dati.

Vantaggi

  • Organizzazione gerarchica: consente di raggruppare i file in categorie e sottocategorie.
  • Scalabilita: facilita la gestione di grandi quantita di file e directory.
  • Navigazione efficiente: la struttura ad albero permette di accedere rapidamente ai file.

Le directory a grafo aciclico sono una struttura in cui le directory sono organizzate in un grafo, ma senza cicli, ovvero senza che una directory possa puntare a se stessa indirettamente. Ogni directory puo contenere altre directory e file, ma non ci sono riferimenti circolari tra di esse. Questo modello consente di creare relazioni piu flessibili tra file e directory rispetto alla struttura ad albero, mantenendo per`o l’assenza di cicli.

Vantaggi

  • Flessibilit`a: consente la creazione di relazioni multiple tra directory e file.
  • Nessun ciclo: evitando riferimenti circolari, si preserva l’integrit`a del sistema.
  • Condivisione di file: un file puo essere referenziato da piu directory senza duplicazioni.

Allocazione Indicizzata

L’allocazione indicizzata risolve alcuni dei problemi dei metodi precedenti, utilizzando un indice (una tabella) che contiene i puntatori a ciascun blocco del file. Ogni file ha una struttura di indice che tiene traccia dei blocchi in cui i dati sono memorizzati. Questo approccio consente ai file di non essere limitati dalla contiguit`a dei blocchi.

Vantaggi

  • Flessibilit`a totale: I blocchi di un file possono essere sparsi su tutto il dispositivo di memoriz- zazione.
  • Facile gestione: La struttura indicizzata rende facile la gestione di file di dimensioni variabili e la riduzione della frammentazione.
  • Accesso diretto: L’accesso ai blocchi `e veloce grazie alla presenza di un indice che mappa i blocchi.

Svantaggi

  • Overhead aggiuntivo: La gestione della struttura indicizzata richiede spazio extra per la memorizzazione degli indici.
  • Accesso ai metadati: Ogni volta che si accede al file, il sistema deve prima consultare la struttura di indice per recuperare i puntatori ai blocchi.

Gestione dello spazio libero

La gestione dello spazio libero `e un componente cruciale di un file system. Un file system deve essere in grado di allocare lo spazio su un dispositivo di memorizzazione in modo efficiente e tenere traccia dei blocchi liberi. Quando un file viene creato o eliminato, il file system deve aggiornare le informazioni relative allo spazio libero disponibile. Esistono diversi metodi per gestire lo spazio libero, tra cui:

  • Vettore di bit,
  • Lista linkata.

Questi due metodi sono tra i piu comuni per tenere traccia dei blocchi liberi e sono scelti in base alle esigenze specifiche del sistema, come la velocita di accesso e la gestione della memoria.

Gestione dello Spazio Libero tramite Vettore di Bit

Il metodo del vettore di bit utilizza un array di bit per rappresentare lo spazio libero in un file system. Ogni bit nell’array corrisponde a un blocco del dispositivo di memorizzazione: un bit con valore 0 indica che il blocco e libero, mentre un bit con valore 1 indica che il bloccoe occupato.

Vantaggi

  • Semplicita: Il vettore di bite semplice da implementare e da comprendere.
  • Accesso rapido: L’accesso ai bit e veloce, il che consente di determinare rapidamente se un bloccoe libero o occupato.
  • Spazio efficiente: Il vettore occupa una quantita di memoria proporzionale al numero di blocchi, chee generalmente una piccola quantit`a rispetto ad altri metodi.

Svantaggi

  • Scalabilita: Se il numero di blocchie molto grande, il vettore di bit pu`o diventare inefficiente in termini di memoria.
  • Complicato aggiornamento: Se un blocco viene liberato o allocato, l’array di bit deve essere aggiornato, il che pu`o comportare operazioni di scrittura frequenti.

Gestione dello Spazio Libero tramite Lista Linkata

Il metodo della lista linkata utilizza una lista di blocchi liberi, dove ogni blocco della lista contiene il puntatore al successivo blocco libero. Ogni volta che un blocco viene liberato, il sistema aggiunge il blocco alla lista; quando un blocco deve essere allocato, viene rimosso dalla lista.

Vantaggi

  • Flessibilita: La lista linkatae molto flessibile e non richiede la gestione di grandi array o vettori.
  • Aggiornamenti rapidi: Quando un blocco viene liberato o allocato, e sufficiente aggiungere o rimuovere un puntatore nella lista, senza la necessita di modificare una grande struttura.

Svantaggi

  • Accesso lento: Per trovare un blocco libero, e necessario scorrere la lista, il che puo essere pi`u lento rispetto al vettore di bit.
  • Overhead aggiuntivo: La gestione della lista richiede memoria per memorizzare i puntatori, aumentando l’overhead.