Anteprima
Vedrai una selezione di 9 pagine su 40
Sistemi operativi - domande esame Pag. 1 Sistemi operativi - domande esame Pag. 2
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 6
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 11
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 16
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 21
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 26
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 31
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Sistemi operativi - domande esame Pag. 36
1 su 40
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Descrittori di file in UNIX

Un descrittore di file non è altro che un record contenente tutte le informazioni che permettono di gestire un file generico di un sistema operativo. Tipicamente la struttura dei campi di un descrittore di file cambia a seconda del sistema operativo. Le informazioni memorizzate in un descrittore di file sono:

  • Nome: nome simbolico del file
  • Tipo di file: informazione necessaria ai sistemi che supportano più tipi di file diversi (e.g. Windows)
  • Locazione: puntatore al dispositivo ed alla locazione del file su quel dispositivo
  • Posizione corrente: puntatore alla posizione corrente di lettura/scrittura del blocco
  • Dimensione: dimensione attuale di un file
  • Protezione: controlli per stabilire chi può leggere, scrivere o eseguire il file
  • Contatore di utilizzo: numero di utenti che condividono il file
  • Ora, data e identificazione dell'utente: informazioni che possono essere relative alla creazione, ultima modifica e

Quelli di informatica www.quellidiinformatica.tk - Scaricato da www.cplusplus.it

Ultimo utilizzo. La soluzione adottata in Unix consiste nel comporre i descrittore di due soli campi: nome del file (simbolico) e un puntatore che punta alla rimanente parte del descrittore (Inode). La dimensione del descrittore di file è di 16 byte (14 byte per il nome del file e 2 byte per il puntatore). La parte restante, detta inode (index node), è un record memorizzato nei primi blocchi del disco. Un Inode è di 64 byte e contiene i seguenti campi:

  1. Identificatore del proprietario (UID);
  2. Identificatore del gruppo associato al file (GID);
  3. Tipo di accesso consentito (9 bit, tre terne ERW, rispettivamente per proprietario, gruppo del proprietario, altri utenti);
  4. Dimensione del file;
  5. Ora, data di ultima modifica e ultimo accesso;
  6. Numero di Hard Link per gestire la cancellazione del file quando questo è condiviso;
  7. Tipo del file (file dati, file dir, link simbolico, file di dispositivo);
  8. Allocazione del file (ci sono 15 puntatori di cui 12 sono...

puntatori di livello zero, cioè puntano direttamente ai dati, poi ci sono un puntatore di livello 1 che contiene indirizzi di blocchi che contengono dati, puntatore di livello 2 che contiene indirizzi di blocchi che contengono indirizzi di blocchi che puntano a dati e un puntatore di livello 3 che contiene indirizzi che puntano ad indirizzi che puntano ad indirizzi puntanti dati);

9) dimensione della I-list.

42. Illustrare le operazioni che un file system rende disponibili ai processi distinguendo tra operazioni relative alle directory e operazioni relative ai file.

Un file è un tipo di dati astratto. Il sistema operativo mette a disposizione delle system call per eseguire operazioni sui file. Di queste le più importanti sono:

Creazione di un file: è necessario compiere due passaggi. In primo luogo bisogna trovare lo spazio per il file nel file system, secondariamente bisogna creare nella directory un nuovo elemento, in cui registrare il nome del file e la sua

posizione nel file system.
Scrittura di un file: è indispensabile una system call che specifichi il nome del file e le informazioni che si vogliono scrivere su di esso. Grazie al nome il sistema cerca nella directory la posizione del file. Il file system deve mantenere un puntatore di scrittura alla locazione nel file in cui deve aver luogo la successiva scrittura. Il puntatore deve essere aggiornato ogniqualvolta si esegue una scrittura.
Lettura di un file: è necessaria una system call che specifichi il nome del file e la posizione in memoria dove porre il successivo blocco del file. Viene ricercato il file nella directory e il sistema deve mantenere un puntatore di lettura alla locazione nel file in cui deve aver luogo la successiva operazione di lettura. Completata la lettura il puntatore viene aggiornato. Generalmente la maggior parte dei sistemi mantiene solamente un puntatore alla posizione corrente del file, così le operazioni di lettura e scrittura adoperano lo stesso puntatore.

stesso puntatore risparmiando spazio e riducendo la complessità del sistema.

Riposizionamento in un file: si ricerca il file nella directory e si assegna un nuovo valore al puntatore alla posizione corrente del file. Quest'operazione non richiede alcuna operazione di I/O.

Cancellazione di un file: si cerca il file nella directory associata al file designato. Quindi si rilascia tutto lo spazio associato al file (in modo che possa essere adoperato da altri file) e si elimina l'elemento della directory.

Troncamento di un file: consente di mantenere immutati gli attributi (ad esclusione della lunghezza del file) pur cancellando il contenuto del file.

Esistono comunque altre operazioni comuni che comprendono l'accodamento di nuove informazioni alla fine di un file e la rinomina di un file. Queste operazioni primitive possono essere combinate per effettuare altre operazioni.

Quelli di informatica www.quellidiinformatica.tk - Scaricato da www.cplusplus.it

Una directory

può essere vista come un contenitore di file. In realtà può essere considerata come una tabella di simboli che traduce i nomi dei file negli elementi in essa contenuti. Può essere organizzata in diversi modi e l'insieme delle operazioni che possono essere eseguite su una directory sono le seguenti:
  • Ricerca di un file: consiste nello scandire una directory per trovare l'elemento associato ad un datofile. Poiché i file possono avere nomi simbolici e poiché nomi simili possono indicare relazioni tra file, deve esistere la possibilità di trovare tutti i file il cui nome soddisfi una particolare espressione.
  • Creazione di un file: consiste nell'aggiungere un nuovo file nella directory.
  • Cancellazione di file: consiste nella rimozione di un file dalla directory.
  • Listare una directory: consiste nella possibilità di elencare tutti i file di una directory, oltre al contenuto dell'elemento della directory associato a ciascun file.

file dell'elenco;

Rinomina di un file: consiste nella possibilità di rinominare un file, questa rinomina potrebbe comportare anche la variazione della posizione del file nella directory.

Attraversamento del file system: consiste nella possibilità di accedere ad ogni directory e a ciascun file contenuto in una directory. Per motivi di affidabilità è buona idea salvare il contenuto e la struttura dell'intero file system a intervalli regolari (copia di backup).

43. Illustrare le operazioni di apertura e chiusura di un file, la loro utilità e le modalità di realizzazione in Unix.

L'apertura di un file è un'operazione in cui si trasferisce un descrittore di file associato ad un file dalla sua directory alla tabella dei file aperti. Quindi aprire un file significa assegnare una nuova entry nella tabella dei file aperti; da questo momento in poi non bisogna più inizializzare il file con il suo nome simbolico ma fare

riferimento semplicemente alla sua entry nella tabella dei file aperti. Tipicamente, la tabella dei file aperti ha anche un contatore delle open associato a ciascun file, che indica il numero di processi che hanno aperto quel file. La chiusura di un file comporta la memorizzazione nella directory del contenuto dell'entry presente in memoria RAM e l'annullamento dell'entry stessa dalla memoria. Ogni volta che si effettua una close si decrementa il contatore delle open, e quando esso raggiunge il valore zero il file non è più in uso e viene eliminato l'elemento corrispondente (entry) dalla tabella dei file aperti. In Unix le operazioni di apertura e chiusura di un file si realizzano attraverso le system call open e close: fd = open (pathname, mode). La open tramite il pathname del file cerca il suo inode, se il file non esiste o non è accessibile nella modalità richiesta restituisce al chiamante un codice di errore. Se il file non è statocondivisione di un file tra directory distinte può essere realizzata attraverso l'utilizzo di link simbolici o hard link. Un link simbolico è un tipo di collegamento che punta a un file o a una directory tramite un percorso relativo o assoluto. Questo tipo di link crea un nuovo file che fa riferimento al file originale. Quando si accede al link simbolico, si accede effettivamente al file originale. Se il file originale viene spostato o rinominato, il link simbolico diventa non valido. Un hard link, invece, è un collegamento diretto tra due file che condividono lo stesso inode. Gli hard link puntano direttamente all'inode del file originale, quindi non creano un nuovo file. Se si elimina uno dei file collegati tramite hard link, il file originale rimane comunque accessibile tramite l'altro hard link. Entrambi i tipi di link consentono di condividere un file tra directory distinte senza duplicare fisicamente il file stesso.tecnica più naturale di implementazione della condivisione di file è quella di duplicare il descrittore di file. L'inconveniente principale di questa tecnica è che avendo più descrittori che si riferiscono allo stesso file, si deve prevedere una accorta gestione dell'allineamento per evitare incoerenze. Un altro problema riguarda la cancellazione dei files; infatti, volendo cancellare un file condiviso da una determinata directory, si deve stare attenti a cancellare il descrittore ma non il file, altrimenti rimarrebbero appesi gli altri descrittori che facevano riferimento a quel file e che quindi punterebbero a strutture non di loro appartenenza. Un terzo problema è che, avendo più descrittori di uno stesso file magari anche con nomi differenti, non si ha conoscenza del numero di riferenze attive al file, per cui non può essere effettuata alcuna operazione sul file stesso. I due metodi utilizzati sono: 1) soft link, 2) hard link. Un linkè un elemento di una directory di tipo speciale che punta ad un elementoQuelli di informatica www.quellidiinformatica.tk - Scaricato da www.cplusplus.itdi un'altra directory e quindi ad un file o a una sottodirectory condivisa. Il soft link funziona in questo modo: quando viene effettuato un riferimento ad un file viene effettuata una ricerca nella directory che contiene il link; parte una routine il cui compito è quello di risolvere un pathname fino ad accedere al file reale. Il vantaggio enorme che si ha con il soft link è che non c'è possibilità che il sistema fallisca a seguito di un accesso errato, cioè la routine che risolve il pathname prevede un'uscita di errore qualora non sia stato possibile risolvere il percorso, invece di arrestare il sistema. Per questo cancellare un link non comporta problemi. Con questa tecnica anche il problema del disallineamento dei descrittori non esiste, perché il descrittore ènon raggiunge lo zero. Inoltre, l'hard link non può essere creato tra file di diversi filesystem. Il soft link, invece, è un puntatore simbolico a un file o a una directory. Questo tipo di link contiene il percorso completo del file o della directory a cui punta. Se il file o la directory a cui punta viene spostato o rinominato, il soft link diventa non valido. Per creare un hard link si utilizza il comando `ln`, seguito dal percorso del file originale e dal percorso del link da creare. Ad esempio: ``` ln /percorso/file_originale /percorso/link_creato ``` Per creare un soft link si utilizza il comando `ln` con l'opzione `-s`, seguito dal percorso del file originale e dal percorso del link da creare. Ad esempio: ``` ln -s /percorso/file_originale /percorso/link_creato ``` È importante notare che quando si elimina un hard link, il file originale rimane intatto. Mentre quando si elimina un soft link, il file originale viene eliminato se non ci sono altri link che lo puntano. In conclusione, gli hard link e i soft link sono due tipi di puntatori utilizzati per accedere ai file. Gli hard link sono più robusti e non dipendono dal percorso completo del file, mentre i soft link sono più flessibili ma possono diventare non validi se il file originale viene spostato o rinominato.
Dettagli
Publisher
A.A. 2012-2013
40 pagine
12 download
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Menzo di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Cotroneo Domenico.