cerca
Riassunto del libro di Sistemi Operativi - Capitolo 11: L'interfaccia del file-system
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Riassunto del libro di Sistemi Operativi - Capitolo 11: L'interfaccia del file-system

 :: Capitolo 11: L'interfaccia del file-system ::

Torna alla pagina di Sistemi Operativi

11.1 Il concetto di file

Per facilitare l'uso del pc si memorizza l'informazione sotto forma di un'unità logica di memorizzazione: il File. Il contenuto del file è definito dal suo creatore, e può essere di diverso tipo (numerico, binario, alfanumerico, ecc...). Ogni file possiede una sua struttura interna la quale dipende proprio dal tipo di file.

11.1.1 Attributi del file

Ogni file possiede un nome, il quale deve essere univoco, per poter essere identificato. Quando il file viene creato esso diventa indipendente dal processo e dal sistema. Per poter operare sul file ci devono essere diversi attributi, i quali variano da sistema a sistema, quelli generali sono:

  • Nome: leggibile dall'utente;
  • Identificatore: etichetta che identifica il file dentro il file-system;
  • Tipo: indica che tipo di file;
  • Locazione: puntatore che indica la posizione del file;
  • Dimensione: dimensione attuale del file, include anche la massima che il file potrebbe avere;
  • Protezione: indica i permessi sul quel file;
  • Tempo, date e identificativo dell'utente: informazione utili che riguarda la manipolazione del file da parte degli utenti.

11.1.2 Operazioni sui file

Le operazioni che si possono effettuare su un file sono:

  • Creazione di un file: bisogna trovare spazio nel file-system, successivamente creare descrittore nella directory;
  • Scrittura del file: chiamata di sistema appropriata per scrivere sul file;
  • Lettura file: chiamata di sistema appropriata per leggere un file. Si cerca quindi il descrittore del file;
  • Cancellazione del file: é desiderabile cancellare un file quando non è più utile, deallocando lo spazio che occupava;
  • Troncamento di un file: si desidera a volte cancellare solo il contenuto di un file, per non cancellarlo e doverlo ricrearlo immediatamente dopo.

Da queste operazioni elementari se ne possono definire altre più complesse.
Molte operazioni richiedono la ricerca del descrittore del file per poter svolgere l'operazione. Nel caso tale operazione debba essere ripetuta si dovrebbe ricercare nuovamente tale file nel file-system. Per evitare la ricerca ogni volta, si mantiene una tabella dei file aperti, per avere tutte le informazioni sui file aperti. Quando si deve ricercare un file si passa l'indice di tale tabella, nel caso sia aperto, per non dover accedere in memoria secondaria ogni volta (la tabella risiede in memoria centrale). La prima volta si accede alla memoria secondaria, con la chiamata open() si copia il descrittore di tale file all'interno della tabella, in seguito di farà riferimento a tale tabella ogni qual volta altri processi vorranno aprire quel file. Per sapere quando rimuovere il descrittore dalla tabella tutti i file devono aver chiuso tale file. Si utilizza un contatore, quando è uguale a 0 si toglie dalla tabella. Alcuni file non potranno essere mai tolti ad questa tabella, sono file di sistema.

11.1.3 Tipi di file

E' importante sapere se il sistema saprà riconoscere i tipi di file. Un metodo è quello di dare un'estensione al nome del file (Es: cacca.exe, file eseguibile, esegue cacca). Molti sistemi supportano questo metodo. Unix usa un numero magico per identificare approssimativamente che tipo di file si ha sotto mano.

11.1.4 Struttura del file

I tipi di file sono usati anche per identificare la struttura interna del file, ad esempio un file binario (quindi eseguibile) definisce una struttura interna adeguata del file. Così facendo si potrà sapere in che modo questo file dovrà essere caricato in memoria.

11.1.5 Struttura interna dei file

L'informazione all'interno dei dischi viene organizzata all'interno di un blocco, quindi quando di sposta informazione da e verso i dischi si spostano blocchi di dimensione fissa.
E' improbabile che la lunghezza di un record logico eguagli un blocco fisico, dunque si compatta l'informazione all'interno di pacchetti. Dunque saranno questi pacchetti ad essere memorizzati nei blocchi fisici. Tale metodo potrebbe soffrire di frammentazione interna in quanto non è detto che l'ultimo blocco sia riempito del tutto.

11.2 Medoti di accesso

Ci sono diversi metodi per accedere ai file. Se ne sceglie uno, o più di uno, in base alle esigenze.

11.2.1 Accesso sequenziale

Il metodo più semplice è quello sequenziale, dove le informazioni vengono elaborate una dietro all'altra. Il metodo di accesso sequenziale è supportato sia sui dispositivi ad accesso sequenziale, sia a quelli ad accesso diretto, in quanto è possibile saltare avanti e indietro di n record.

11.2.2 Accesso diretto

Un secondo metodo è quello dell'accesso diretto. Permette che i file siano letti e scritti senza particolare ordine. Si accede in base al numero di blocco che è passato dall'utente. Tale blocco è un blocco fisico relativo, così l'utente crede che inizi dal blocco 0 poi 1, poi 2 ecc. I blocchi assoluti possono non essere contigui e vicini.
I blocchi relativi permettono al sistema di allocare dove vuole il file e non fa accedere l'utente a blocchi a cui non dovrebbe accedere.

11.2.3 Altri metodi di accesso

Altri tipi di accesi sono mediante gli indici. Quando si vuole accedere ad un blocco logico prima si cerca nell'indice, mediante un puntatore si accede al record logico voluto.
Per file grandi l'indice potrebbe diventare troppo lungo. Posso mettere due livelli di indici. Cerco il record logico tramite la prima scansione degli indici, la quale mi porta ad un altro indice. Da qui posso accedere al record logico voluto.

11.3 Struttura della directory

I dischi possono contenere una o più partizioni, dove sono contenuti i file e le directory. In altri dischi la partizione può raggruppare più dischi.
Questa struttura permette all'utente di avere a che fare solo con la directory logica, ignorando come i file siano allocati. Le informazioni riguardanti il file sono memorizzati nella directory del dispositivo o indice del volume. Tutte queste informazioni sono utilizzate come descrittore del file. Voglio poter effettuare diverse operazioni sulle directory, le quali contengono i file:

  • Ricerca di un file: devo poter trovare un descrittore di file desiderato;
  • Creare un file: aggiungere file;
  • Cancellare file: non più necessario il file deve essere cancellato;
  • Elencare una directory: elencare quindi il contenuto della directory, tutti i suoi file;
  • Rinominare file: l'utente potrebbe rinominare il file contenuto in una directory;
  • Attraversamento del file-system: accedere a tutti i file che sono in una directory.

11.3.1 Directory a singolo livello

La directory a singolo livello è la più semplice da implementare. Tutti i file sono nella stessa directory, quindi devono avere dei nomi univoci. Quando il numero dei file aumenta la situazione si complica, proprio per il fatto che i nomi iniziano a scarseggiare. La situazione si complica se si entra in un sistema multiutente, tutti potrebbero avere un file di nome “prova”.

11.3.2 Directory a due livelli

Directory a due livelli risolve questo problema. Nel primo livello si inseriscono gli utenti (directory degli utenti). Nel secondo livello si inseriscono i file. La directory dell'utente è detta anche principale. Questa struttura presenta ancora degli svantaggi: separa un utente da un altro. Dato che si vogliono poter condividere file questo è inaccettabile. Un utente allora deve specificare il nome del proprietario del file e il proprietario stesso. Deve specificare quindi un percorso univoco per poter accedere a quel file.

11.3.3 Directory strutturata ad albero

La struttura ad albero della directory permette di creare agli utenti delle sottodirectory e di accedere ai file di altri utenti specificando il percorso. Specificando il percorso può accedere anche alle sue sottodirectory. Tale percorso quindi può essere assoluto, nel caso vengano specificate tutte le directory per giungere al file (che rappresenta la foglia nell'albero). Oppure se si deve accedere ad un file che si trova nella directory dell'utente si può passare un percorso relativo (non specificando tutte le directory).

11.3.4 Directory a grafo aciclico

La struttura della directory a grafo aciclico consente di condividere dei file, in quanto con la struttura ad albero si poteva solo accedere a tale informazione. Con il grafo aciclico la stessa informazione è in più directory. Attenzione: non sono duplicati i file, sono condivisi. La condivisione può essere realizzata mediante un descrittore che funge da link. Se si fa riferimento ad un file si cerca per prima cosa nella directory, se il descrittore di tale file è un link vuol dire che si fa riferimento ad un altro file. Il descrittore del link è in un formato diverso da quello dei normali file per poterli identificare.
Il secondo metodo prevede la semplice duplicazione dei file. Questo comporta operare su due file diversi e quindi avere delle copie non coerenti.
Un problema con la struttura aciclica è quando cancellare i file in quanto si potrebbero lasciare dei puntatori pendenti, oppure potrebbero far riferimento ad altri file nel caso lo spazio deallocato precedentemente venga rioccupato. Per poter cancellarlo allora ci possiamo prima assicurare di aver cancellato ogni riferimento di quel file, tenendo una tabella dei riferimenti per ogni file. Problema: la tabella potrebbe essere enorme per tanti file. Si può usare allora solo un contatore all'interno di questa tabella, le dimensioni si riducono.

11.3.5 Directory a grafo generale

Nel grafo aciclico non ci devono essere cicli. Questo perché si possano implementare algoritmi efficienti per esplorare il grafo. La presenza dei cicli potrebbe far incappare in un'esplorazione infinita. Un altro problema che potrebbe sorgere sarebbe quello di non sapere quando dover cancellare un file in quanto il contatore non si azzererebbe mai.

11.4 Montaggio del file-system

Ogni partizione sul disco ha il suo file-system. Prima di rendere disponibili tali informazioni bisogna montare il file-system. Il punto di montaggio è appunto la locazione dove il file-system esistente deve agganciarsi al file-system da montare. Successivamente il sistema verifica che il dispositivo contenga un file-system valido, incaricando il driver del dispositivo di verificare che sia nel formato previsto. A questo punto il sistema annota nella sua struttura della directory che un file-system è stato montato. Ora è possibile esplorare l'intero file-system.

11.5.1 Il caso di più utenti

Nel caso di un sistema multiutente si potrebbe consentire di default ad un utente di accedere a tutti i file di tutti gli altri utenti, oppure è possibile imporre delle restrizioni.
Per implementare queste protezioni si è introdotto il concetto di proprietario di file/directory o di gruppo (nel caso più utenti abbiano lo stesso permesso su un file/directory).
Identificatori di utente-> per poter identificare gli utenti; Identificatori di gruppo-> per poter identificare i gruppi di utente.
Con tali identificatori è possibile distinguere utenti o gruppi di utenti che possono accedere a determinati file/directory.

11.5.2 File-system remoti

Con internet è stato possibile condividere file mediante la rete. Due modi per ottenere la condivisone:

1.Ftp: metodo manuale per trasferire file, trasferimenti di file in modo anonimo; 2.File-system distribuiti (DFS): directory remote sono disponibili per gli utenti della rete. Implica un rapporto più stretto fra utente richiedente e macchina remota.

11.5.2.1 Il modello client-server

Macchina su cui risiede il file è detta server. La macchina che richiede il servizio è la macchina client. Il client è identificato da un indirizzo IP, il quale potrebbe essere contraffatto. A causa della difficoltà di implementazione della sicurezza le comunicazioni avvengono mediate connessioni non sicure.

11.5.2.2 Sistemi informativi distribuiti

Si introducono i DNS (Domain Name Server), il quale fornisce una traduzione da nome host ad un indirizzo. Questo per rendere più controllabili i sistemi client-server. In secondo luogo per identificare una macchina remota è più facile, per l'utente, ricordarsi un nome piuttosto che un numero.

11.5.2.3 Modalità di guasto

Ci sono più guasti che possono colpire i file-system locali:

  • dischi che si guastano;
  • corruzioni di blocchi di informazione;
  • guasti hardware vari;
  • ecc...;

In uno scenario di file-system distribuiti le possibilità di guasti aumentano in quanto bisogna tenere conto dei possibili guasti della rete. Per ripristinare la situazione di guasto bisognerebbe mantenere delle informazioni di stato di client e server. In questo modo è possibile ripristinare il contesto antecedente al guasto.

11.6 Protezione

Per computer che immagazzinano una grande quantità dei dati è consigliabile tenere tale informazione in un luogo sicuro. Quindi si potrebbero effettuare dei backup e tenerli in posti lontani dalla macchina (per evitarli di perderli a causa di catastrofi naturali).

11.6.1 Tipi di accesso

La protezione di un file è legato al suo metodo di accesso. I casi limite sono: far evitare di accedere al file qualsiasi utente, oppure far accedere tutti-> meglio un accesso controllato. Controllare un file significa controllare le operazioni che possono essere svolte su tale file:

  • lettura;
  • scrittura;
  • esecuzione;
  • accodamento;
  • cancellazione;
  • elenco.

11.6.2 Controllo dell'accesso

Primo metodo di controllo dell'accesso è quello di mantenere una lista dei controlli degli accessi. Si memorizzano gli utenti e il tipo di operazioni. Se un utente non figura su tale lista l'accesso gli è negato. Vantaggi: Permette metodi di accessi complessi;
Svantaggi: Difficile realizzazioni in quanto la lista potrebbe essere lunga.
Tali problemi sono risolvibili utilizzando una versione ridotta di tale lista che comprende:

  • Proprietario: utente che ha creato il file;
  • Gruppo: insieme degli utenti che vi possono accedere con un sottoinsieme di privilegi del proprietario;
  • Universo: tutti gli altri utenti.

11.6.3 Altri metodi di protezione

Un altro metodo per la protezione consiste nell'introdurre una password per quel determinato file. Cambiare spesso la password del file consente un alto grado di protezione. Lo svantaggio è che l'utente dovrebbe ricordarsi molte password in quanto potrebbe accedere anche ad altri file.