Riassunto - Cap.10 - Libro \"Sistemi operativi. Concetti ed esempi\" - Abraham Silberschatz; Peter Baer Galvin; Greg Gagne PDF

Title Riassunto - Cap.10 - Libro \"Sistemi operativi. Concetti ed esempi\" - Abraham Silberschatz; Peter Baer Galvin; Greg Gagne
Author Run Salerno
Course Sistemi Operativi
Institution Università degli Studi di Salerno
Pages 5
File Size 94.6 KB
File Type PDF
Total Downloads 70
Total Views 152

Summary

Riassunto - Cap.10 - Libro "Sistemi operativi. Concetti ed esempi" - Abraham Silberschatz; Peter Baer Galvin; Greg Gagne...


Description

Capitolo 10 Poiché la memoria centrale è troppo piccola x contenere in modo permanente tutti i dati e programmi, il calcolatore deve disporre di memoria secondaria a sostegno della centrale. I calcolatori impiegano i dischi come mezzo principale di registrazione delle informazioni e il file system fornisce i meccanismi x l’accesso sia ai dati e ai programmi residenti nei dischi e sia x la loro registrazione. Il file system consiste di due parti distinte: un insieme di file (che contiene dati) e una struttura della directory (che organizza file nel sistema). 10.1 Concetto di file I calcolatori possono memorizzare le info su diversi supporti, come dischi, nastri, ecc. il SO offre una visione logica uniforme della memorizzazione delle informazioni; astrae il file dalle caratteristiche fisiche dei propri dispositivi di memoria x definire un’unità di memoria logica. Il SO associa i file a dispositivi fisici non volatili. Un file è un insieme di informazioni, correlate e registrate in memoria secondaria, cui è stato assegnato un nome. I file di dati possono essere numerici, alfabetici, alfanumerici o binari, e non possedere un formato specifico. In genere un file è formato da una sequenza di bit, byte, righe o record e ha una struttura a seconda del tipo. Gli attributi di un file sono: -

Nome: nome del file che è l’unica info leggibile; Identificatore: etichetta che identifica il file all’interno del file system; Tipo: info necessaria ai sistemi che gestiscono tipi di file diversi; Locazione: puntatore al dispositivo e alla locazione del file in tale dispositivo; Dimensione: grandezza del file; Protezione: info di controllo degli accessi che controllano ki può leggere, scrivere o far eseguire file; Ora, data, id utente: creazione e ultima modifica e ultimo uso del file.

Un file è un tipo di dato astratto. X definire un file è necessario considerare le operazioni che si possono eseguire su di esso. Il SO può offrire chiamate di sistema x effettuare operazioni sui file, quali: -

Creazione di un file; Struttura di un file; Lettura di un file; Riposizionamento di un file; Cancellazione di un file; Troncamento di un file.

Il SO mantiene una piccola tabella contenente info riguardanti tutti i file aperti. Quando si richiede un’operazione su file, questo viene individuato tramite un indice in tale tabella evitando qualsiasi ricerca. Quando il file non viene usato viene chiuso dal processo e il SO rimuove l’elemento a esso associato dalla tabella dei file aperti. A ciascun file aperto sono associate le seguenti info: -

Puntatore al file: ultima posizione di lettura e scrittura nel file corrente; Contatore dei file aperti; Posizione nel disco del file; Diritti di accesso.

Alcuni SO offrono la possibilità di applicare lock a file aperti. Essi sono basati su una funzionalità simile ai lock di lettura-scrittura. Un lock condiviso è simile a un lock di lettura mentre il lock esclusivo è assimilabile al lock di scrittura. Inoltre, il SO può fornire meccanismi di protezione dei file obbligatori, oppure consigliati. Nel primo caso, il SO impedirà a qualunque altro processo di accedere al file interessato una volta che il suo lock sia stato acquisito. Nella progettazione di un file system, si deve sempre considerare la possibilità o meno che quest’ultimo riconosca o gestisca i tipi di file. Una tecnica x gestire i tipi di file è includere il tipo nel nome del file. Il nome viene suddiviso in due parti: un nome e un’estensione separati da un punto. Il sistema usa l’estensione x stabilire il tipo del file e le operazioni che si possono compiere su di esso. I tipi di file possono anche adoperare x indicare la struttura interna dei file e uno degli svantaggi dei SO che gestiscono più strutture di file è che la dimensione risultante del SO è ingombrante in quanto, se si definiscono più strutture di file, il SO deve contenere codice x gestirle tutte. 10.2 Metodi di accesso I file memorizzano informazioni; al momento dell’uso è necessario accedere a queste info e trasferirle in memoria. Esistono molti metodi x accedere alle info dei file: -

-

Accesso sequenziale: le info dei file si elaborano ordinatamente un record dopo l’altro e le operazioni più comuni che si compiono sui file sono letture e scritture; Accesso diretto: un file è formato da elementi logici (record) di lunghezza fissa e ciò consente di leggere e scrivere rapidamente tali elementi senza ordine preciso. Il file si considera come una sequenza numerata di blocchi o record che si possono leggere o scrivere in modo arbitrario. Sono molto utili quando è necessario accedere immediatamente a grandi quantità di info. Un esempio sono le basi di dati. Il numero del blocco fornito dall’utente è un numero di blocco relativo che permette al SO di decidere dove posizionare il file e aiuta a impedire che l’utente acceda a porzioni di file system che possono non far parte del suo file. Sulla base di un metodo di accesso diretto se ne possono costruire altri, che implicano generalmente la costruzione di un indice x il file. L’indice contiene puntatori ai vari blocchi; x trovare un elemento del file occorre prima cercare nell’indice, e quindi usare il puntatore x accedere direttamente al file e trovare l’elemento desiderato. Questa struttura permette di compiere ricerche in file molto lunghi limitando il numero di operazioni I/O. nel caso di file molto lunghi, lo stesso file indice può diventare molto lungo e una soluzione a questo problema è data dalla creazione di un indice x il file indice che contengono puntatori ai file indice secondari che puntano agli effettivi elementi.

10.3 Struttura della directory Il file system di un calcolatore può essere molto ampio e x gestire tanti dati è necessario che siano organizzati e tale organizzazione coinvolge l’impiego di directory. Un disco può essere interamente usato x un file system. Si può installare un file system in diverse aree di memoria chiamate partizioni ed è possibile ance combinare le parti del disco x formare strutture più grandi chiamate volumi. Quest’ultimo è concepibile come un disco virtuale che possono contenere anche più SO. Ogni volume contenente un file system deve avere anche info sui file presenti nel sistema e queste info risiedono in una directory del dispositivo o indice del volume.

La directory si può considerare come una tabella di simboli che traduce i nomi dei file negli elementi in essa contenuti. Le operazioni che si possono eseguire su una directory sono: -

Ricerca di un file; Creazione di un file; Cancellazione di un file; Elencazione di una directory; Ridenominazione di un file; Attraversamento di un file.

Gli schemi più comuni x la definizione della struttura logica di una directory sono: -

-

-

-

Directory a livello singolo: tutti i file sono contenuti nella stessa directory. Presenta limiti notevoli che si manifestano all’aumentare del numero di file nella directory stessa oppure se il sistema è usato da più utenti. Poiché sono nella stessa directory, i file devono avere nomi unici, se due utenti attribuiscono lo stesso nome a diversi file si viola questa regola; Directory a due livelli: ogni utente dispone della propria directory utente. Tutte le directory utente hanno una struttura simile ma in ciascuna sono elencati solo i file del proprietario la directory principale viene indirizzata con il nome dell’utente. Quando un utente fa riferimento a un file particolare, il SO esegue la ricerca solo nella directory di quell’utente; in questo modo utenti diversi possono attribuire stesso nome ai file all’interno della propria directory. Sebbene risolva il problema dei nomi unici, la struttura della directory a due livelli presenta dei problemi, infatti, questa struttura isola un utente dagli altri e risulta essere uno svantaggio quando gli utenti vogliono cooperare. La directory a due livelli si può pensare come un albero con altezza 2. La radice è la directory principale, i suoi discendenti sono le directory utente da cui discendono i file che sono le foglie dell’albero. Specificando un nome utente e un nome di file si definisce un percorso che parte dalla radice e arriva alla foglia, quindi insieme definiscono un nome di percorso (tutti i file hanno un nome di percorso); Directory con struttura ad albero: si ottiene con l’estensione della struttura della directory a un albero di altezza arbitraria (MS-DOS è strutturato cosi). L’albero ha una directory radice (root directory) e ogni file del sistema ha un unico nome di percorso. Una directory, o sottodirectory, contiene un insieme di file o sottodirectory. Tutte la directory hanno lo stesso formato interno e la distinzione tra file e directory è data dal bit di ogni elemento della directory. X creare o cancellare le directory si adoperano speciali chiamate di sistema. Ogni utente dispone di una directory corrente che deve contenere la maggior parte dei file di interesse corrente x il processo, infatti si esegue una ricerca all’interno della directory corrente e se il file non si trova in tale directory di effettua un cambio di directory tramite una chiamata di sistema. I nomi di percorso possono essere di due tipi: nomi di percorso assoluti e nomi di percorso relativi. I primi cominciano dalla radice e segue un percorso che arriva fino al file specificato mentre i secondi definiscono un percorso che partono dalla directory corrente. Con un sistema cosi formato, anche l’accesso ai file di altri utenti è di facile realizzazione; Directory con struttura a grafo aciclico: uno dei problemi della struttura ad albero è che non permette la condivisione di directory e file, mentre una struttura a grafo aciclico si. Lo stesso file e la stessa sottodirectory possono essere condivise in due directory diverse. Il fatto che un file sia condiviso non significa che esistano più copie dello stesso file, infatti se il file è condiviso esiste un solo file effettivo. La condivisione può essere effettuata tramite un collegamento (o link) che è un puntatore a un altro file o sottodirectory. La struttura di questo tipo di directory è più flessibile ma

-

più complessa. Un file può avere più nomi di percorso assoluti e quindi più nomi diversi possono riferirsi allo stesso file e quando si percorre tutto il file system il problema diventa più grave in quanto le strutture condivise non si devono attraversare più di una volta. Un altro problema è la cancellazione. Una possibilità prevede che a ogni operazione di cancellazione segua l’immediata rimozione del file, ma, questa operazione può far in modo di lasciare puntatori a file che non esistono più. Un altro approccio prevede la cancellazione del file solo quando sono cancellati tutti i riferimenti a esso, però, la dimensione della lista dei riferimenti può essere potenzialmente grande e utilizzando un contatore che tiene conto del numero di riferimenti, è possibile cancellare quel file quando quest’ultimo arriva a 0. Directory con struttura a grafo generale: il problema principale dell’uso di una struttura con grafo aciclico corrisponde proprio al fatto che non vi devono essere cicli all’interno del file system. Il vantaggio principale di questa struttura è che gli algoritmi necessari x attraversare tale struttura sono semplici da realizzare ma un algoritmo mal progettato potrebbe causare un ciclo infinito di ricerche se si permette di avere cicli nelle directory. La presenza di uno 0 nel contatore dei riferimenti al file o directory, implica la cancellazione di questi ultimi ma è possibile che se vi sono cicli nel file system, il contatore non diventi mai nullo effettuando ricerche inutili. In questo caso bisogna utilizzare un garbage collection che è un metodo di ripulitura x stabilire quando l’ultimo riferimento è stato cancellato e di conseguenza quando è possibile allocare spazio nel disco.

10.4 Montaggio di un file system Un file system deve essere montato. La procedura di montaggio è molto semplice: si fornisce al SO il nome del dispositivo e la sua locazione (punto di montaggio) nella struttura di file e directory alla quale agganciare il file system. Di solito un punto di montaggio è una directory vuota cui sarà agganciato il file system che deve essere montato. Il passo successivo consiste nella verifica da parte del SO della validità del file system contenuto nel dispositivo chiedendo al driver del dispositivo di leggere la directory del dispositivo e controllando che tale directory abbia il formato previsto. Infine, il SO annota nella sua struttura della directory che un certo file system è montato nel punto di montaggio specificato. 10.5 Condivisione di file La condivisione di file è molto utile quando più utenti vogliono collaborare e x ridurre le risorse richieste. Se un SO permette l’uso del sistema da parte di più utenti, diventano particolarmente rilevanti i problemi relativi alla condivisione di file. X realizzare i meccanismi di condivisione e protezione, il sistema deve memorizzare e gestire più attributi di directory e file rispetto a un sistema a singolo utente. La maggior parte dei sistemi ha adottato il concetto di proprietario e gruppo. Il proprietario è l’utente che può cambiare gli attributi di un file o directory, concedere l’accesso e definire le operazioni che il gruppo può fare sui file e directory. I file possono essere anche condivisi in rete e i metodi con il quale essi si condividono sono cambiati molto. Un primo metodo consiste nel trasferimento di file attraverso il protocollo FTP. Un secondo metodo, è quello del file system distribuito (DFS) che permette la visibilità del calcolatore locale in directory remote e il terzo metodo è rappresentato dal world wide web. I file system remoti permettono il montaggio di uno o più file system di uno o più calcolatori remoti in un calcolatore locale. In questo caso, il calcolatore contenente i file si chiama server mentre il calcolatore che

richiede l’accesso al file è il client. Il server dichiara quali risorse sono disponibili ai client, specificando quali risorse a quali client. I server possono gestire più richieste mentre i client possono accedere a più server. X semplificare la gestione dei servizi client-server, i sistemi informativi distribuiti sono stati concepiti x fornire un accesso unificato alle info necessarie x il calcolo remoto. Il sistema dei nomi di dominio (DNS) fornisce le traduzioni dei nomi dei calcolatori agli indirizzi di rete x l’intera Internet. Altri sistemi informativi forniscono uno spazio identificato da nome_utente/password/id_utente/id_gruppo. I file system locali possono presentare malfunzionamenti x varie cause che possono portare al crollo (crash) del sistema. L’uso dei file system remoti implica maggiori possibilità di malfunzionamenti e x realizzare determinati tipi di recupero dai malfunzionamenti è necessario mantenere alcune informazioni di stato sia sui client che sui server. 10.6 Protezione La salvaguardia delle info contenute in un sistema di calcolo dai danni fisici e da accessi impropri è fondamentale. Lo scopo è quello di conservare copie di riserva utili nei casi in cui il file system andasse distrutto a causa di problemi del dispositivo. La protezione si può avere in diversi modi: -

-

-

Tipi di accesso: la necessità di proteggere i file deriva direttamente dalla possibilità di accedervi. I sistemi che non permettono accesso ai file di altri utenti non richiedono protezione anche se ciò che serve è un accesso controllato. I tipi di acceso disponibili sono: lettura; Scrittura; Esecuzione; Aggiunta; Cancellazione; Elencazione. Controllo degli accessi: il problema della protezione si affronta rendendo l’accesso dipendente dall’identità dell’utente. Lo schema più generale x realizzare gli accessi dipendenti dall’identità consiste nell’associare una lista di controllo degli accessi (ACL) a ogni file e directory; in tale lista sono specificati i nomi degli utenti e i relativi tipi di accesso consentiti. Il problema principale di tale lista è la loro lunghezza. X condensarne la lunghezza, molti sistemi raggruppano gli utenti in tre classi distinte: proprietario; gruppo e universo. Password: inserire una parola d’ordine a ogni file ma questo metodo presenta degli svantaggi: il numero di parole da ricordare può essere molto alto e soprattutto se si utilizza un’unica parola x ogni file, rende i vari file accessibili a tutti....


Similar Free PDFs