Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
FILE SYSTEM
Il file system è la struttura logica con cui il sistema operativo gestisce i file. I moderni sistemi operativi gestiscono l'archiviazione in modo gerarchico (HFS - Hierarchical File System).STRUTTURA DEI FILE
- senza struttura; - sequenza di record: linee, record a lunghezza fissa o variabile; - struttura complessa: documento formattato, file eseguibile rilocabile;ATTRIBUTI DEI FILE (info conservate nella struttura directory)
- nome: identificativo del file per l'utente; - identificativo: numero che identifica il file all'interno del file system; - tipo: necessario per sistemi che supportano più tipi; - locazione: puntatore al dispositivo e alla posizione del file in esso; - dimensione; - protezione: parametri di controllo per l'accesso (read, write, execute); - ora, data e identificazione utente: controllo uso e sicurezza sistema;OPERAZIONI SUI FILE
- creazione:reperire lo spazio e creare un nuovo elemento nella directory in cui registrare il nome del file;
scrittura: reperimento del file e scrittura dei dati (puntatore di scrittura);
lettura: reperimento del file e lettura dei dati (puntatore di lettura);
posizionamento file: reperimento file e aggiornamento posizione;
cancellazione: reperimento file e rilascio spazio allocato del file;
troncamento: cancellazione del contenuto del file (certi attributi immutabili);
impostazione attributi: reperimento ed aggiornamento del relativo elemento di directory.
Le operazioni sui file richiedono la ricerca e l'apertura del file prima di qualsiasi accesso. Il sistema operativo mantiene nella ram una tabella dei file aperti:
- open(file): i file aperti nei sistemi multi utente richiedono due tabelle: tabella di sistema (file aperti nel sistema) e tabella associata al processo (file aperti del processo):
a) puntatore alla posizione
corrente nel file ;
b) contatore di aperture (numero processi che hanno aperto il file);
c) locazione file su disco ;
d) diritti di accesso (negare o approvare operazioni di I/O).
- close(file) .
TIPI DI FILE Il tipo è un attributo di un file che indica la struttura logica interna e permette di interpretarne il contenuto. Il sistema operativo se conosce il tipo, manipola il file in modo mirato tramite: meccanismo estensioni (suffisso del nome DOS), attributo associato al file nella directory (MAC OS) e magic number (valore posto all'inizio del file UNIX).
ACCESSO AI FILE
- sequenziale : si può accedere solo al blocco successivo (nastro);
- diretto : si può accedere al blocco tramite il numero di blocco relativo (disco);
- indicizzato : come il diretto ma implica la costruzione di un file indice per l'accesso al file. (contiene i puntatori ai vari blocchi).
DIRECTORY L'idea è quella di raggruppare i file
in sottoinsiemi. Questi sottoinsiemi di file vengono memorizzati all'interno di contenitori detti directory. I nomi dei file sono locali alle directory, si possono avere due file con lo stesso nome in cartelle diverse.
OPERAZIONI SULLE DIRECTORY
- creazione: creare una nuova directory;
- rimozione: rimuovere una directory;
- ridenominazione: rinominare una directory;
- elencare il contenuto;
- copiare o spostare i file da una directory ad un'altra;
- ricerca: possibilità di scorrere la directory per reperire un particolare file.
STRUTTURA DIRECTORY
un livello: una directory unica per tutti gli utenti; crea problemi di naming e non esiste nessun raggruppamento logico.
due livelli: directory separate per ciascun utente; ammessi nomi uguali per file di utenti diversi, ricerca più efficiente, nessuna capacità di raggruppamento logico.
ad albero: strutturata ad albero; ricerca efficiente,
capacità di raggruppamento logico e concetto di directory corrente (pwd). Concetto di pathname assoluto e relativo. La creazione o la cancellazione di un file viene effettuata nella directory corrente.
a grafo aciclico: struttura a ciclo; permette di avere file e sottodirectory condivise. Aliasing: più nomi diversi possono venire utilizzati per identificare lo stesso oggetto.
a grafo generale: mantiene il grafo aciclico ma sono proibiti i cicli; sono ammessi link a file ma non a directory.
MONTAGGIO DI UN FILE SYSTEM
Un file system deve essere montato. Viene fornito al sistema operativo il nome del dispositivo da montare e la locazione che dovrà assumere. Una volta montato, diventa parte integrante del grafo della directory. I sistemi MAC e Windows rilevano tutti i dispositivi all'avvio della macchina e montano automaticamente tutti i file system in essi contenuti. Nei sistemi UNIx, i file system devono essere montati esplicitamente.
( mount / unmount ).
CONDIVISIONE FILE La condivisione di file permette la collaborazione fra utenti / processi. Servono meccanismi di protezione per garantire il controllo dell'accesso ai file.Il Network File System (NFS) permette di realizzare la condivisione di file in ambienti distribuiti.
- proprietario : utente che possiede il file ( UID );
- gruppo di utenti : insieme di utenti autorizzati a condividere l'accesso al file ( GID ).
STRUTTURA DEL FILE SYSTEM
- file system per l'utente : progettazione che definisce la visione che ha l'utente (file, cartelle, etc);
- file system per il SO : implementazione algoritmi e strutture dati che mettano in corrispondenza il file system logico con i dispositivi fisici di memorizzazione.
Il file system è organizzato a livelli:
- I/O control : driver del dispositivo (tra due comandi di alto livello in sequenze di basso livello) e gestore interruzioni.
- file system di base :
- invia i comandi al driver del opportuno dispositivo per leggere/scrivere blocchi fisici su disco;
- modulo di organizzazione dei file: traduce indirizzi logici di blocco in indirizzi fisici e contiene il modulo per la gestione dello spazio libero;
- file system logico: gestisce i metadati (tutte le strutture del file system), gestisce le strutture delle directory, mantiene il file control block (FCB) e gestisce protezione e sicurezza. Il FCB contiene informazioni: permessi, date di accesso, possessore e gruppo, grandezza del file.
TIPI DI FILE SYSTEM
- Unix: UFS;
- Windows: FAT, FAT32, FAT64, NTFS;
- Linux: ext3, ext4 (extended file system);
- Google: GFS.
REALIZZARE DIRECTORY
- lista lineare: lista di nomi di file con puntatori ai blocchi dei dati, semplice ma inefficiente dal punto di vista della ricerca. Si potrebbe implementare una lista ordinata, ma bisognerebbe mantenere sempre l'ordinamento ad ogni operazione;
- tabella hash: lista
casuale.a) schema concatenato: ogni file ha almeno un blocco indice;
b) indice a più livelli: organizzazione gerarchica (simili alla paginazione gerarchica).
GESTIONE SPAZIO LIBERO
Per sapere lo spazio libero, il sistema conserva una lista dello spazio libero. Quando si crea un file bisogna aggiornare il contenuto della lista. Può non essere una lista:
- vettore di bit (bitmap): se ci sono n blocchi. bit[i] = 1 blocco libero, bit[i] = 0 blocco occupato. Ottiene buone prestazioni se il vettore è memorizzato nella RAM;
- lista concatenata: si collegano tutti i blocchi liberi mediante puntatori e si mantiene un puntatore alla testa della lista. (basso spreco, ma inefficiente);
- grouping: variante lista concatenata. Sul primo blocco memorizzo gli indirizzi di n blocchi liberi (n - 1 liberi, l'n-esimo contiene altri n blocchi liberi);
RIPRISTINO
File e Directory sono mantenuti sia nella RAM sia nei dischi, è necessario assicurarsi
chemalfunzionamenti non comportino la perdita o incoerenze dei dati:
- verifica di coerenza: fsck() confronta i dati tra ram e disco e corregge eventuali incoerenze;
- copie di riserva e recupero: vengono utilizzati programmi di sistema per creare dei backup su altri dischi magnetici.
FILE SYSTEM CON LOG
I file system con registrazione delle modifiche registrano ogni modifica come una transazione. Queste vengono registrate in un file log (committed).
NFS (NETWORK FILE SYSTEM)
Rappresenta una realizzazione di un sistema per accesso a file remoti tramite LAN o WAN tramite l'utilizzo di protocolli TCP/IP o UDP/IP. Permette di avere stazioni di lavoro interconnesse ma indipendenti. Infatti garantisce la condivisione tra i file system. Una directory remota viene montata su una directory del file system locale. Questo permette di avere i dati conservati su una singola macchina ma comunque rimangono accessibili a tutte le macchine.
amente è stato introdotto il tipo bool nel linguaggio C99, che può assumere i valori true o false. STRUTTURE DI CONTROLLO- if-else : permette di eseguire un blocco di codice se una condizione è vera, altrimenti esegue un altro blocco di codice.- switch : permette di eseguire un blocco di codice in base al valore di una variabile.- for : permette di eseguire un blocco di codice per un numero di volte definito.- while : permette di eseguire un blocco di codice finché una condizione è vera.- do-while : permette di eseguire un blocco di codice almeno una volta, poi continua a eseguirlo finché una condizione è vera. FUNZIONI- Le funzioni in C sono definite con il tipo di ritorno, il nome della funzione e i parametri che accetta.- Una funzione può essere chiamata all'interno di un altro blocco di codice per eseguire una determinata operazione.- Le funzioni possono restituire un valore o essere di tipo void, che non restituisce alcun valore. ARRAY- Un array in C è una collezione di elementi dello stesso tipo.- Gli elementi di un array sono accessibili tramite un indice, che parte da 0.- La dimensione di un array deve essere specificata al momento della sua dichiarazione e non può essere modificata successivamente. PUNTATORI- I puntatori in C sono variabili che contengono l'indirizzo di memoria di un'altra variabile.- I puntatori vengono utilizzati per accedere e manipolare direttamente i dati in memoria.- I puntatori possono essere dichiarati per puntare a variabili di diversi tipi di dato. STRUTTURE- Le strutture in C permettono di creare un tipo di dato personalizzato, che può contenere diversi tipi di dati.- Una struttura è composta da una serie di campi, ognuno dei quali può essere di un tipo di dato diverso.- Le strutture possono essere utilizzate per creare record o oggetti personalizzati. Queste sono solo alcune delle caratteristiche principali del linguaggio C. Il C è un linguaggio potente e flessibile, utilizzato in diversi ambiti come lo sviluppo di sistemi operativi, applicazioni desktop e embedded.