CAP.8: Il file system

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "CAP.8: Il file system"

Transcript

1 Struttura interna del sistema operativo Linux CAP.8: Il file system Primitive per la gestione dei file File System Il gestore del file system è quel componente del Sistema Operativo che realizza i servizi di gestione dei file file: unità di archiviazione in memoria di massa. Il file system rappresenta quindi la struttura logica della memoria di massa (organizzazione e memorizzazione dei file) ed è costituito da un insieme di primitive del Sistema Operativo e relative strutture dati di supporto. Le astrazioni fornite dal file system sono: File, link e operazioni i sui file Directory e file speciali Attributi e politiche di accesso Mapping del file system logico sui dispositivi fisici 2 Pag. 1 1

2 File (i) Il concetto di file offre una visione logica omogenea delle informazioni memorizzate. La visione i non dipende d dal tipo di dispositivo iti fisico i su cui le informazioni i i vengono memorizzate Un file è costituito da: una sequenza di byte, che rappresenta l insieme di informazioni omogenee; un nome simbolico; un insieme di attributi. Un file in UNIX può contenere dati o programmi (file ordinario) contenere riferimenti ad altri file (directory) rappresentare l astrazione di un dispositivo periferico (file speciale) File (ii) Nome: nome simbolico univoco nella directory con cui ci si riferisce ad esso Attributi: Tipo: definisce il tipo dei dati contenuti (estensione del nome, opzionale) Locazione (implicito): è un riferimento alla posizione fisica sul dispositivo Dimensione: dimensione dei dati contenuti espressa in byte o blocchi Protezione: definisce le politiche di gestione degli accessi Ora e Data: indicano il momento della creazione, ultima modifica o ultimo accesso Proprietario: indica il nome dell utente che ha creato il file 3 4 Pag. 2 2

3 Gestione del file system L immagine del file system è memorizzata in memoria di massa attraverso il concetto di volume. Un volume è composto da una sequenza di blocchi di dimensione fissa (512Byte). Per rendere più efficienti gli accessi a file, il Sistema Operativo mantiene in memoria centrale una parte delle strutture dati per la gestione dei file. Tra queste citiamo: Tabella dei file aperti per ogni processo Contiene un elemento per ogni file aperto da un certo processo. L indice della tabella è costituita dal file descriptor. Tabella globale dei file aperti nel sistema Contiene un elemento per ogni file aperto nel sistema. Ogni elemento viene referenziato tramite gli elementi delle tabelle dei file aperti dei processi e contiene, tra le altre, l indicatore di posizione corrente (offset) nel file, il numero di link al file e un riferimento al file su disco Primitive per la gestione dei file (1) Sui file possono essere compiute diverse operazioni, che vengono svolte attraverso richieste di servizi al sistema operativo (system call), invocabili anche da programma: creat, open, close, write,read, Per operare su un file è necessario: aprirlo, se il file esiste già crearlo (cioè aggiungerlo nel file system), se il file non esiste Le funzioni di apertura e creazione richiedono come parametro il nome del file e restituiscono un intero non negativo chiamato descrittore del file (fd file descriptor) Le funzioni di lettura e scrittura, e altre ancora, usano come riferimento il descrittore e operano su sequenze di byte a partire da un byte specifico, la cui posizione è contenuta dall indicatore di posizione corrente nel file (offset) 5 6 Pag. 3 3

4 Primitive per la gestione dei file (2) Creazione di un file: fd = creat(file_name, mode); Apertura di un file: fd = open(file_name, name O_RDONLY O_WRONLY O_RDWR, RDWR mode) Chiusura di un file aperto: close(fd) Scrittura di dati in un file già creato/aperto: write(fd, buf, num_byte); Lettura dati da un file già creato/aperto: read(fd, buf, num_byte); Riposizionamento all interno del file: new_offset = lseek(fd, offset, base); Duplicazione di un descrittore di un file: fd2=dup(fd1); Creazione di un nuovo riferimento (link) ad un file: link(old_file_name, new_file_name); Eliminazione di un link: unlink(nome_file); Funzioni del linguaggio C per la gestione dei file Il linguaggio C dispone di una libreria standard di ingresso e uscita, che definisce le funzioni C per le operazioni sui file (fopen, fread, fwrite, fclose, fputs, fgets etc.) In linguaggio C il riferimento a file è dato da un puntatore (FILE * file_pointer) Le funzioni C usano il file pointer e invocano i servizi messi a disposizione dal sistema operativo Le implementazioni delle funzioni C su un certo Sistema Operativo definiscono le modalità di chiamata dei servizi di Sistema Operativo (primitive o System Call) e il legame tra il file pointer e il file descriptor. Attenzione: fopen e simili possono avere comportamenti differenti da un sistema operativo ad un altro (ad es. Unix System V e Linux Red Hat 7.2). 7 8 Pag. 4 4

5 Organizzazione del file system Direttori: strutturazione gerarchica del file system Un file system è organizzato in: Partizioni: contengono insiemi di file correlati Direttori: una partizione è suddivisa in direttori. I direttori contengono informazioni sui file o direttori in essi contenuti e fungono da indice. Direttorio radice (root): è il direttorio accessibile direttamente e autonomamente dal file system File (ordinari): contengono effettivamente i dati o i programmi Pathname (nome completo di un file): è il nome (percorso) ottenuto concatenando tutti i nomi dei direttori che devono essere percorsi dalla radice fino al file. Es: /usr/nome_file 10 Pag. 5 5

6 Direttori I direttori sono dei file (d) e quindi sono caratterizzati da nome e diritti d accesso Contengono informazioni sui file e direttori in essi contenuti (nome, attributi, proprietario) Forniscono una corrispondenza tra nomi di file e file stessi. Il contenuto di una directory può essere visto come una tabella, con una entry per ogni file/direttorio in essa contenuto. Ogni entry è del tipo: <riferimento, nome_file/nome_dir > 11 Contenuto di una directory Riferimento: posizione file/direttorio su disco (inode) Nome_file/Nome_directory 3. (direttorio corrente) 2.. (direttorio padre) 4 usr 7 nome_file_1 8 nome_file_ Pag. 6 6

7 Operazioni sui direttori Sui direttori, così come sui file, è possibile compiere alcune operazioni: Ricerca di un file: Sulla base di un nome o una espressione regolare consente di recuperare le informazioni su uno o più file Creazione di un file: Al direttorio viene aggiunto un elemento che raccoglie le informazioni sul nuovo file Rimozione di un file: Eliminazione di un descrittore di file. Il descrittore deve essere prima individuato tramite una operazione di ricerca Elenco dei file: Produce l elenco dei nomi ed eventualmente altre informazioni relative ai file memorizzati Rinomina di un file: Modifica il nome di un file già presente nel direttorio. Il descrittore deve essere prima individuato tramite una operazione di ricerca. Per creare un nuovo direttorio si usa la funzione mkdir ( ) 13 Organizzazione dei direttori Tutti i file sono contenuti in un solo direttorio Struttura molto semplice ma presenta alcuni problemi (unicità dei nomi, ricerca inefficiente, accesso indifferenziato per tutti gli utenti) Direttori a due livelli direttorio principale: (root) contiene un elenco di direttori, uno per ogni utente direttorio utente: contiene i file di un singolo utente (home). I singoli utenti vedono e gestiscono solo i file nel proprio direttorio home La gestione del direttorio root è affidata ad un amministratore del sistema (root, administrator, superuser). 14 Pag. 7 7

8 Organizzazione a due livelli Quando un utente richiede l accesso ad un file, il file system ne cerca il nome nel direttorio home dell utente. Per accedere ai file di altri utenti si utilizza il path name cioè la composizione del nome dell utente e del nome del file. Spesso gli applicativi sono accessibili a tutti gli utenti e memorizzati in un direttorio specifico (bin). I file vengono prima cercati nel direttorio dell utente quindi, se la ricerca fallisce, nel direttorio degli applicativi bin mike bill john gcc tcsh emacs test data foo gnu data 15 Direttori ad albero E una estensione del caso precedente ad un numero arbitrario di livelli Un utente accede ai file attraverso il path name (assoluto o relativo) Per semplificare l accesso ai file viene definito it il concetto di current working directory (cwd) cioè di direttorio corrente I file vengono cercati nel direttorio corrente. Se un file non è nel direttorio corrente: Si usa il suo path name assoluto Si cambia il direttorio corrente Il sistema operativo offre alcuni comandi per gestire il cwd: cd <dir>: Change Directory. Il direttorio dir diviene il cwd pwd: Print Working Directory. Mostra il nome del cwd 16 Pag. 8 8

9 Esempio di direttorio ad albero bin mike bill jhon gcc tcsh test data foo gnu data aax data type mary work her mom much 17 Periferiche e file speciali In Unix le periferiche sono viste come file speciali, simulate come file nel direttorio /dev. Sulle periferiche è possibile eseguire open, read e write (purché ne abbia senso), close ma non creat. Per creare un nuovo file speciale si usa la funzione mkdir ( ) Ogni programma, all esecuzione, dispone già di 3 descrittori di file: stdin (0), stdout (1), stderr (2) associati rispettivamente alla tastiera e al video. I descrittori standard possono essere ridiretti su altri file. Ad esempio: close (1); /* chiude lo standard d output t e libera il descrittore 1 */ fd = open (./outputfile, O_WRONLY); /* il descrittore 1 viene associato a ouputfile, quindi ogni operazione su 1 viene eseguita su outputfile */ 18 Pag. 9 9

10 Protezione e diritti di accesso Protezione e diritti d accesso I dati memorizzati nei file di un file system necessitano di protezione da accessi impropri (riservatezza, modifica o eliminazione accidentale di dati importanti) Definizione di una politica di accesso e relativa implementazione Alcune banali politiche di accesso sono: Ogni utente accede solo ai propri file Ogni utente accede a tutti i file Accesso controllato: si definiscono regole di accesso ai file sulla base di: l identità degli utenti e del gruppo di lavoro dell utente la proprietà dei file il tipo di operazione richiesta: lettura, scrittura, esecuzione, eliminazione, ecc. 20 Pag

11 Protezione: Liste di accesso L accesso e le operazioni consentite dipendono dall identità dell utente Ad ogni file è associata una lista di accesso che indica quali operazioni sono consentite a quali utenti Quando un operazione viene richiesta il sistema operativo controlla la lista di accesso per verificare se: il richiedente è previsto; il richiedente ha il permesso di compiere quel tipo di operazione. Questa soluzione presenta alcuni svantaggi: le liste di accesso possono essere di dimensioni notevoli; le liste devono essere create e mantenute per ogni file; il tempo di accesso ad un file si allunga. 21 Protezione: UNIX (i) UNIX adotta una soluzione semplificata delle liste di accesso Gli utenti sono identificati in base a: Username: Identificativo dell utente Group: Identificativo di gruppo, condiviso da più utenti Gli utenti sono raggruppati in tre classi: Owner: Solo il proprietario del file Group: Solo i membri del gruppo del proprietario del file All: Tutti gli utenti 22 Pag

12 Protezione: UNIX (ii) Le operazioni su file sono raggruppate in tre classi: Read: Lettura, copia Write: Scrittura, modifica, eliminazione Execute: Esecuzione Ad ogni file sono associati: Owner Group Control access list 23 Protezione: UNIX (iii) La control access list è formata da tre gruppi di bit: Ogni gruppo di bit si riferisce ad una delle tre classi di utenti Ogni bit del gruppo si riferisce i ad una delle tre operazioni i owner group all rwx rwx rwx execute write read owner group all rwx rwx rwx Pag

13 Organizzazione logica e fisica del file system Mapping del file system logico sul dispositivo fisico Il file system svolge le sue funzioni accedendo ai dispositivi fisici (dischi) tramite l invocazione di routine messe a disposizione dal gestore del disco (disk driver) Il driver del disco fornisce una interfaccia di accesso ai dati su disco nascondendone le caratteristiche fisiche Il disco, a livello di file system, è rappresentato da un dispositivo logico, chiamato volume composto da un array di blocchi Il blocco è una porzione di disco costituita da un numero intero di byte che viene trasferita in memoria con un unica operazione 26 Pag

14 Struttura del dispositivo fisico: tracce e settori Traccia (track): sequenza circolare di bit scritta mentre il disco compie una rotazione completa: la larghezza di una traccia dipende dalla dimensione della testina e dall accuratezza con cui la si può posizionare; la densità radiale va da 800 a 2000 tracce per centimetro (510 µm per traccia); tra una traccia e l altra c è un piccolo spazio di separazione (gap). Settore (sector): parte di una traccia corrispondente a un settore circolare del disco: un settore contiene 512 byte di dati, preceduti da un preambolo, e seguiti da un codice di correzione degli errori; la densità lineare è di circa 50100kbit per cm ( µm per bit); tra settori consecutivi si trova un piccolo spazio (intersector gap). Formattazione: operazione che predispone tracce e settori per la lettura/scrittura. 27 Spazi tra tracce Settore Tracce Spazi tra record 28 Pag

15 Schema di un Hard Disk Superficie 7 Testina di lettura/scrittura (una per superficie) Superficie 6 Superficie 5 Superficie 4 Superficie 3 Superficie 2 Superficie 1 Superficie 0 Direzione del movimento Le tracce in grigio formano un cilindro 29 Prestazioni dei dischi Tempo di acceso (ms o 10 3 s) Seek time la testina deve arrivare alla traccia giusta; dipende dalla meccanica (515 ms, 1 per tracce adiacenti). Latency il disco deve ruotare fino a portare il dato nella posizione giusta; dipende dalla velocità di rotazione ( RPM ms). Transfer Rate (MBps) Velocità di trasferimento del disco dipende dalla densità di registrazione e dalla velocità di rotazione; un settore di 512 byte richiede fra 25 e 100 µsec (520 MB/sec). Velocità di trasferimento del sistema di controllo SCSI vs. EIDE 30 Pag

16 Struttura del dispositivo logico: Volume UNIX gestisce i file system a livello logico considerandoli come dispositivi logici (volumi) identificati da un numero Il volume è composto da una sequenza di blocchi logici (vettore di blocchi), di dimensioni fisse pari a un multiplo di 512 byte (configurabile a livello di sistema). La conversione tra indirizzi del dispositivo logico (volumi e blocchi) e indirizzi fisici (tracce e settori) è realizzata dal driver del disco. 31 Blocco di un volume Il blocco è l unità di informazione trasferita con un solo accesso a disco, quindi è un multiplo del settore. In generale, la dimensione di un blocco è pari a 512 Byte. Un blocco può essere letto o scritto in una zona di memoria centrale di pari dimensione (buffer) Il gestore dei buffer (buffer cache parte del gestore della memoria virtuale) gestisce le aree di buffer cercando di minimizzare le letture multiple a disco Quando il file system richiede la lettura di un blocco interagisce con il gestore dei buffer che, a sua volta, può interagire con il disk driver 32 Pag

17 Struttura logica di un file Il file è visto dal file system come una sequenza di blocchi logici numerati in sequenza a partire dal Blocco 0 all interno del file Le operazioni read, write etc. fanno riferimento alla posizione corrente nel file (offset nel file) Ad esempio: ricerca del byte 520 (posizione corrente nel file): Blocco = 520 div 512 Offset nel blocco = 520 % 512 (resto della divisione) Offset =8 Blocco 0 Blocco 1 Blocco Allocazione dei blocchi del file nel volume File Posizione corrente: 520 Byte 520 File in blocchi Blocco 0 del file Byte 8 Blocco 1 del file Blocco 2 del file La corrispondenza tra i blocchi logici di un file e i blocchi del volume in cui viene memorizzato dipende dalla tecnica di allocazione blocchi del volume Volume posizione del byte nel volume 34 Pag

18 Tecnica di allocazione: UNIX inode Un volume contiene l immagine del file system ad esso associato. Il sistema operativo UNIX utilizza lo schema di allocazione indicizzata combinata dei blocchi logici dei file sui blocchi del volume La tecnica è realizzata mediante una lista (ilist) i cui elementi sono chiamati inode (indexnode). Ogni inode contiene la lista degli attributi e degli indirizzi dei blocchi fisici del disco a cui sono associati i blocchi logici del file. Dato il numero dell inode (inumber) si può localizzare la posizione del file/dir calcolandone l indirizzo su disco Un file esiste nel file system se esiste il corrispondente inode nella ilist. La lista degli inode ha dimensione prefissata in fase di configurazione del sistema operativo (quindi i numero massimo di inode che possono essere creati in un volume risulta prefissato). 35 Struttura di un volume (1) Blocco di boot Super block Lista inode Blocchi dati Un volume è suddiviso in 4 aree distinte: 1. Blocco 0 o blocco di boostrap: contenuto tipicamente nel primo settore del disco, contiene il codice di inizializzazione del sistema operativo (altrimenti è comunque allocato ma non utilizzato) 2. Blocco 1 o Superblock: contiene le informazioni globali del file system (es. dimensione del volume, numero di blocchi liberi nel volume, ecc.) 3. Lista degli inode: Ogni elemento della lista è un inode che contiene la lista degli indirizzi dei blocchi dati del file su disco 4. Blocchi di dati: blocchi che contengono il contenuto dei file e dei direttori. Nel caso di una directory, il corrispondente blocco contiene una tabella con la lista di file/direttori in essa contenuti rappresentati dalla coppia < i_node, nome_file/nome_dir > 36 Pag

19 Struttura di un volume (2) Ogni file ordinario, directory o file speciale ha associato un inode inode: struttura contenente 64 byte di informazioni Gli inode dei file in un disco sono memorizzati in sequenza numerica e costituiscono la ilist (lista degli inode). Ogni inode è accessibile attraverso l indice (inumber) relativo alla sua posizione all interno della ilist. In una directory, i file/direttori contenuti sono rappresentati da una tabella le cui entry sono costituite dalla coppia: <nome_file nome_dir, i_node > 37 Esempio (1) 10 (file1) blk 910 blk 1040 Blocco di boot Super block Conte 910 nuto 1040 file1 Conti nuaz. file1 Lista inode Blocchi dati Esempio: file1 (associato a inode 10) costituito da 2 blocchi (910 e 1040) 38 Pag

20 Esempio (2) 6 (/usr) 10 (file1) blk 800 blk 910 blk 1040 Blocco di boot Super block F1 10 Conte nuto file1 Conti nuaz. file1 Lista inode Blocchi dati Esempio: Directory /usr (associata a inode 6) contenente file1 (associato a i node 10) costituito da 2 blocchi (910 e 1040) 39 Struttura di un volume (2) Ogni file ordinario, direttorio o speciale ha associato un i node inode: struttura contenente 64 byte di informazioni Gli inode dei file in un disco sono memorizzati in sequenza numerica e costituiscono la ilist (lista degli i node). Ogni inode è accessibile attraverso l indice (inumber) relativo alla sua posizione all interno della ilist. In una directory, i file/direttori contenuti sono rappresentati da una tabella le cui entry sono costituite dalla coppia < i_node, nome_file nome_dir > 40 Pag

21 Informazioni contenute nell inodenode Tipo di file: d directory, b file speciale per device a blocchi (es. disco), c file speciale per device a caratteri Proprietario i del file e gruppo del proprietario i Bit di protezione (9 rwx) Numero di link (riferimenti) al file fisico cioè allo stesso inode (rappresenta la condivisione dello stesso file fisico da parte di più nomi simbolici creati con la primitiva link). Dimensione del file in byte o blocchi (se file ordinario o direttorio) Puntatori ai blocchi dell area dati: 13 indirizzi su disco che referenziano in modo diretto o indiretto i blocchi su disco contenenti il file. (Non sono significativi nel caso di file speciale) Data e ora in cui il file è stato letto e scritto per l ultima volta Data e ora dell ultima modifica dell inode 41 Allocazione indicizzata negli UNIX inode I primi 10 indirizzi su disco rappresentano direttamente i puntatori ai blocchi del file su disco Per file di dimensioni maggiori, l inode linode contiene l indirizzo di un blocco del disco chiamato single indirect block (11) che a sua volta contiene altri 128 indirizzi di blocchi del disco (Nota: un blocco da 512byte può contenere 128 indirizzi da 4byte ciascuno) Se questo non è sufficiente, l inode mette a disposizione un altro indirizzo, chiamato double indirect block (12) che contiene l indirizzo di un blocco che a sua volta contiene una lista di 128 single indirect block. Ognuno di questi blocchi punta a sua volta a 128 single indirect block (in pratica si realizza una doppia indicizzazione) Esiste anche un triple indirect block (13) nel caso la doppia indicizzazione non sia sufficiente 42 Pag

22 Rappresentazione dell inode inode Mode Owner,,group Timestamp Size Number of blocks Number of references Data Data Data Data Data Data Direct blocks (10) Data Data Data Single indirect blocks Double indirect blocks Triple indirect blocks Data Data Data 43 Data Contenuto del superblock Il superblock contiene le informazioni necessarie a creare o eliminare un file, ad aggiungere g o togliere blocchi a un file esistente dimensione del volume; numero di blocchi liberi nel volume; parte iniziale della lista dei blocchi liberi (freelist); numero di elementi della lista dei blocchi liberi (freelist); numero di elementi della lista degli inode (ilist); numero di inode liberi; lista degli inode liberi (free inode list); altre informazioni ausiliarie. 44 Pag

23 Gestione dello spazio libero (1) Al momento della creazione del file system da associare ad un volume (mkfs) viene allocata la lista (ilist) di dimensione fissa contenente gli innode node. La lista degli inode (ilist) è costituita da una sequenza di inode utilizzati e inode liberi (tipo di file =0) Le posizioni degli inode liberi sono riportate nella free inode list contenuta nel superblocco. La lista dei blocchi liberi (free list) è una lista concatenata di blocchi liberi. La parte iniziale della free list è contenuta nel superblocco. 45 Gestione dello spazio libero (2) All atto della creazione e scrittura di un file è necessario individuare sul disco il primo blocco libero da allocare al file UNIX utilizza una lista concatenata di blocchi liberi (in genere il primo elemento della lista punta ad un altra lista ) lista dei blocchi liberi (parte contenuta nel superblock) lista dei blocchi liberi (parte contenuta nel blocco 180) 240 lista dei blocchi liberi (parte contenuta nel blocco 240) Pag

24 Strutture dati per la gestione del file system Strutture dati del file system (1) Per la gestione efficiente del file system, il sistema operativo dispone di tre tabelle residenti in memoria centrale : Tabella dei descrittori dei file aperti per processo Esiste una tabella per ogni processo attivo nel sistema Tabella globale dei file aperti Tabella globale del sistema operativo che contiene una riga per ogni file aperto nel sistema; Ogni elemento viene referenziato tramite gli elementi delle tabelle dei file aperti per processo Tabella degli inode (detti anche incore inode) Tabella globale del sistema contenente una copia in memoria degli i node del volume per maggiore efficienza nei riferimenti. 48 Pag

25 Tabella dei descrittori dei file aperti per processo Tabella associata ad ogni processo utente e costituita da un elemento (riga) per ogni file aperto dal processo Indice della tabella = descrittore del file (fd) Ogni elemento della tabella contiene l indice della riga della tabella globale dei file aperti relativa al file Per convenzione, ogni processo vengono aperti automaticamente 3 descrittori di file associati ai primi tre elementi della tabella: stdin (0), stdout (1), stderr (2) associati rispettivamente alla tastiera (0) e al video (1 e 2). 0 stdin 1 stdout 2 stderr 3 49 Tabella globale dei file aperti Indice della tabella = Puntatore/i proveniente/i dalle tabelle dei processi Ogni elemento (riga) della tabella contiene: Puntatore al corrispondente inode nella tabella degli inode Indicatore della posizione corrente nel file (offset nel file) da usare per il prossimo accesso. Valore calcolato come numero di byte dall origine del file Contatore del numero di riferimenti da parte dei processi a questo file Modalità di apertura del file (READ WRITE RW) 50 Pag

26 Tabella degli inode Tabella globale del sistema contenente una copia in memoria degli i node del volume per maggiore efficienza nell accesso ai file. Ogni elemento (riga) contiene una copia in memoria degli inode statici presenti su disco nella ilist. Oltre alla copia delle informazioni presenti nel corrispondente inode statico, sono presenti informazioni riguardanti lo stato dell inode. Es.: se ci sono processi in attesa di accedere all inode, se inode è stato modificato e deve quindi essere riscritto su disco, se il contenuto del file è stato modificato e quindi i suoi blocchi devono essere scritti su disco. 51 Esempio (1): P0 apre il file F (fd1); P0 apre il file G (fd6) Tabella dei descrittori di file aperti per processo Processo P0 Tabella globale dei file aperti Tabella degli inode fd1 fd6 Processo P0: fd1 = open ( F ); fd6= open( G ); 52 Pag

27 Esempio (2): Apertura dello stesso file da parte di più processi Per uno stesso file vengono allocati tanti elementi (righe) nelle due tabelle (privata e globale) quante sono le volte che il file viene aperto (dallo stesso processo oppure da altri processi) che convergono ad uno stesso incore inode. Nel caso di apertura dello stesso file da parte di 2 processi vengono allocati 2 elementi nelle 2 tabelle private e 2 elementi nella tabella globale. Notare che nella tabella globale i 2 elementi possono avere (offset, mode) con valori diversi Processo P0: fd1 = open ( F ) Processo P1: fd7 = open ( F ) 53 Esempio (2): P0 apre il file F (fd1); P1 apre lo stesso file F (fd7) Tabella dei descrittori di file aperti per processo Processo P0 Tabella globale dei file aperti Tabella degli inode fd1 Processo P1 fd7 54 Pag

28 Esempio (3): dup Nel caso di apertura di un file F da parte di un processo P0 e di duplicazione da parte dello stesso processo si ha che la dup duplica il descrittore del file cioè duplica la riga nella tabella privata che punta però allo stesso elemento nella tabella globale (con la stessa posizione corrente nel file) e incrementa il contatore dei riferimenti al file nella tabella globale Processo P0: fd1 = open( F ) fd2 = dup(fd1); 55 Esempio (3): P0 apre il file F (fd1); P0 duplica il file F (fd2) Tabella dei descrittori di file aperti per processo Processo P0 Tabella globale dei file aperti Tabella degli inode fd1 fd2 56 Pag

29 Esempio (4) P apre il file F; P esegue una dup; P esegue una fork, generando Q; R apre lo stesso file F. 57 Esempio (4) Indicatore posizione corrente Numero di riferimenti P inode F Q R Tabella globale file aperti Tabella degli inode 58 Pag

30 Primitive per la gestione dei file Creazione creat() Descrizione: Creazione di un file ordinario: Viene aggiunto un nuovo file al file system e restituisce un intero che rappresenta il file descriptor da usare in una seguente chiamata di sistema (read, write, lseek, ) Prototipo: int creat(const char *file_name, mode_t mode); mode: gestisce i permessi di accesso per la configurazione dei bit di protezione. Utilizzo (sintassi della chiamata): fd = creat(file_name, mode); fd: file descriptor o descrittore del file Se file_name corrisponde ad un file già esistente il contenuto del file viene cancellato e la dimensione del file diventa nulla. Nota: per la creazione di un file speciale si usa mknod e per la creazione di una directory si usa mkdir. 60 Pag

31 Apertura open() Descrizione: Apertura di un file ordinario: Sulla base del nome del file individua la posizione del file su disco e restituisce un intero che rappresenta il file descriptor da usare in una seguente chiamata di sistema (read, write, lseek, ) Prototipo: int open(const char *file_name, int flags, mode_t mode); flags: tipo o modalità di apertura del file: O_RDONLY lettura, O_WRONLY scrittura, O_RDWR lettura e scrittura mode: gestisce i permessi di accesso per la configurazione dei bit di protezione. Utilizzo: fd = open(file_name, O_RDONLY O_WRONLY O_RDWR, mode); fd: file descriptor o descrittore del file 61 Scrittura write ( ) Descrizione: Aggiunge dati ad un file già creato/aperto. Per scrivere dati su un file è necessario fornire descrittore (ottenuto tramite open / creat) e un puntatore ai dati da scrivere. Restituisce il numero di caratteri effettivamente scritti alla fine dell esecuzione della primitiva (ritorna 1 in caso di errore). Prototipo: int write(int fd, char buffer[ ], int num_byte); Utilizzo: byte_scritti = write(fd, buf, num_byte); byte_scritti: restituisce il numero di caratteri effettivamente scritti. fd: file descriptor o descrittore del file buf: indirizzo dell area contenente i dati da scrivere nel file num_byte: numero byte da scrivere Il file system mantiene un indicatore alla posizione (offset) nel file in cui deve essere effettuata la scrittura successiva. 62 Pag

32 Lettura read( ) Descrizione: Preleva dati da un file già creato/aperto. Per leggere dati su un file è necessario fornire il descrittore (ottenuto tramite open / creat) e un puntatore ai dati da leggere. Restituisce il numero di caratteri effettivamente letti alla fine dell esecuzione della primitiva (ritorna 1 in caso di errore). Prototipo: int read(int fd, char buffer[ ], int num_byte); Utilizzo: byte_letti = read(fd, buf, num_byte); byte_letti: restituisce il numero di caratteri effettivamente letti. fd: file descriptor o descrittore del file buf: indirizzo dell area dati del processo destinata a contenente i dati letti num_byte: numero byte da leggere Il file system mantiene un indicatore alla posizione (offset) nel file in cui deve essere effettuata la lettura successiva. 63 Riposizionamento lseek ( ) Descrizione: Riposiziona l indicatore di lettura / scrittura di un file aperto (cioè riposiziona la posizione corrente nel file detta anche offset nel file). Prototipo: long lseek(int fd, long offset, int base); modifica la posizione corrente nel file fd e la restituisce come long int. La nuova posizione corrente nel file new_offset viene calcolata sommando all argomento offset il valore di base dove: base = 0: inizio file base = 1: posizione corrente nel file base = 2: fine file Utilizzo: new_offset = lseek(fd, offset, base); In pratica permette l accesso alla posizione new_offset nel file fd ottenuta sommando all argomento offset il valore di base Esempi: lseek(fd, 0L, 1): restituisce la posizione corrente senza modificarla; lseek(fd, 0L, 0): riposiziona all inizio del file; lseek(fd, 0L, 2): riposiziona alla fine del file. 64 Pag

33 Duplicazione dup( ) Descrizione: Duplicazione di un descrittore associato ad un file già aperto. In pratica si aggiunge una nuova riga nella tabella dei file aperti da quel processo che punta allo stesso file aperto nella tabella globale. Prototipo: int dup(int old_fd); Utilizzo: fd1=open( ); fd2=dup(fd1); la posizione corrente nel file è comunque la stessa per i due o più descrittori (esiste una sola riga nella tabella globale dei file aperti) e si incrementa il numero dei riferimenti al file nella tabella globale (non si incrementa il numero dei link nell inode del file). 65 Chiusura Close( ) Descrizione: Chiude un descrittore aperto cioè elimina il descrittore dalla tabella dei file aperti dal processo. Decrementa il numero di riferimenti al file nella tabella globale, e se non vi sono altri riferimenti, elimina l elemento dalla tabella globale dei file aperti. Prototipo: int close(int fd) fd : descrittore di un file aperto precedentemente Restituisce un intero che rappresenta l esito dell operazione di chiusura: 0 = successo nella chiusura 1 = errore di chiusura Utilizzo: close(fd) 66 Pag

34 Ridenominazione link ( ) Descrizione: Per associare un nuovo nome ad un file già esistente (il contenuto dei 2 file è condiviso). Crea una nuova entry nella directory che contiene il file. Non crea un nuovo descrittore, ma incrementa di uno il numero di link a quel file nell inode del file. Prototipo: int link(char *nome_file, char *nuovo_nome_file); Restituisce un intero che rappresenta l esito dell operazione. Utilizzo: link(old_file_name, new_file_name); Nota: La primitiva link consente di associare un nuovo nome ad un file già esistente (il contenuto dei 2 file è condiviso) mentre per copiare un file esistente si deve usare il comando cp che richiede l allocazione di un nuovo file 67 Unlink unlink ( ) Descrizione: Per interrompere il link creato tra 2 file cioè eliminare un riferimento (link) ad un file specificato tramite nome (e decrementa di uno il numero di riferimenti al file nel corrispondente inode). Se esisteva un solo link al file, e nessun processo ha aperto il file, il numero dei link al file diventa 0 e il file in pratica viene eliminato dal file system in quanto diventa inaccessibile e i blocchi dati associati vengono rilasciati. In questo caso, le azioni necessarie sono: Deallocazione dell inode del file dal file system che viene aggiunto alla free inode list; Deallocazione dello spazio dati sul dispositivo fisico che viene aggiunto alla lista dello spazio disponibile (free list). Se esisteva un solo link al file, ma almeno un processo ha aperto il file, la unlink verrà eseguita solo dopo che l ultimo descrittore associato al file è stato chiuso. Prototipo: int unlink(char *nome_file); Utilizzo: unlink(nome_file); 68 Pag

35 Un esempio (i) /* Esempio di uso delle primitive LINUX di gestione dei file */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> void main() { int fd1; int i,pos; char c; /* apertura del file */ fd1=open("fileprova", O_RDWR); /* visualizza posizione corrente */ printf("\npos= %ld \n", lseek(fd1,0,1)); /* scrittura del file */ for (i=0; i<20;i++) { c=i + 65; /*caratteri ASCII a partire da A*/ write(fd1, &c, 1); printf("%c",c);} /* visualizza posizione corrente; riportala a 0 */ printf("\npos= %ld \n", lseek(fd1,0,1)); lseek(fd1,0,0); 69 Un esempio (ii) /* lettura e visualizzazione del file */ for (i=0; i<20;i++) { read(fd1, &c, 1); printf("%c",c);} printf("\n"); /* posizionamento al byte 5 del file e stampa posiz.*/ printf("\npos= %ld\n", lseek(fd1,5,0)); /*lettura di 5 caratteri */ for (i=0; i<5;i++) { read(fd1, &c, 1); printf("%c",c);} printf("\n"); /*scrittura di 5 caratteri x*/ c= 'x'; for (i=0; i<5;i++) { write(fd1, &c, 1);} 70 Pag

36 Un esempio (iii) } /* lettura del file dall'inizio */ lseek(fd1,0,0); for (i=0; i<20;i++) { read(fd1, &c, 1); printf("%c",c);} printf("\n"); /* chiusura file */ close(fd1); 71 Primitive per la gestione dei file e strutture dati del file system Pag

37 Primitive per la gestione dei file e strutture dati del file system (i) Open ( ): la richiesta di apertura di un file al sistema operativo prevede le seguenti operazioni: Riserva una riga nella tabella globale dei file aperti e inizializza il contatore dei riferimenti e l indicatore di posizione nel file e aggiorna il puntatore alla tabella degli inode. Riserva un riga nella tabella dei descrittori dei file aperti del processo e vi scrive l indice della riga della tabella globale dei file aperti L allocazione di un nuovo elemento nella tabella privata avviene cercando il primo posto libero Restituisce al processo il descrittore costituito dal numero della riga della tabella dei descrittori di file aperti per processo 73 Primitive per la gestione dei file e strutture dati del file system (ii) Open ( ): cont. Determina quale sia l inode corrispondente al file il cui pathname è stato indicato nella richiesta e scrive il suo riferimento nella riga della tabella globale dei file aperti associata al file Per questa operazione il file system esegue una ricerca ordinata all interno di tutti i direttori del pathname. Per esaminare ogni direttorio (memorizzato in un blocco di dati del volume) è necessario accedere all inode corrispondente presente nella tabella degli inode (eventualmente ricopiato dalla ilist) e caricare in memoria il suo contenuto Ad esempio /dir1/file Ricerca dell inode di root e caricamento in memoria dei blocchi che costituiscono root (generalmente, almeno l inode di root è sempre caricato nella Tabella degli inode in posizione prefissata) Ricerca nella tabella di root della entry di dir1 (<inode, dir1>) per ricavare l inode Ricerca dell inode di dir1 e caricamento in memoria dei blocchi che costituiscono dir1 Ricerca in dir1 della entry di file (<inode, file>) per ricavare l inode Copiatura dell inode di file nella Tabella degli inode e aggiornamento della riga relativa nella tabella globale dei file aperti 74 Pag

38 Primitive per la gestione dei file e strutture dati del file system (iii iii) Creat ( ): la richiesta di creazione di un file al sistema operativo prevede le seguenti operazioni: Verifica che esista un inode libero Verifica che esistano dei blocchi liberi Riserva una riga nella tabella globale dei file aperti e inizializza il contatore dei riferimenti e l indicatore di posizione Riserva un riga nella tabella dei descrittori di file utente aperti del processo e vi scrive l indice della riga della tabella globale dei file aperti Restituisce al processo un descrittore costituito dal numero della riga della tabella dei descrittori di file utente aperti Alloca l inode al file, inizializzando le informazioni in esso contenute e aggiorna le informazioni relative alla ilist Aggiorna il contenuto della directory che contiene il file Scrive nella riga della tabella globale dei file aperti associata al file il riferimento all inode corrispondente al file 75 Dup ( ): Primitive per la gestione dei file e strutture dati del file system (iv iv) si generano due descrittori nella medesima tabella dei file aperti da quel processo e che puntano allo stesso file Esiste una sola riga nella tabella globale dei file aperti (con la stessa posizione corrente nel file) che punta allo stesso inode del file Fork ( ): Duplicazione delle tabelle dei file aperti da un processo Esiste una sola riga nella tabella globale dei file aperti (con la stessa posizione corrente nel file) che punta allo stesso inode del file Apertura dello stesso file da parte di 2 processi: si allocano 2 righe nella tabella globale dei file aperti che puntano allo stesso inode del file ogni processo ha una propria posizione corrente del file 76 Pag

39 Primitive per la gestione dei file e strutture dati del file system (v) Lettura o scrittura: Deve essere fornito il descrittore del file che permette di seguire i puntatori t nelle tre tabelle e tramite l inode identificare i blocchi di dati del file Chiusura di un file: Il sistema operativo libera la corrispondente riga nella tabella dei descrittori dei file aperti per processo Decrementa il contatore dei riferimenti nella tabella globale dei file e se =0, libera la riga nella tabella globale. 77 Un secondo esempio (i) /* programma verifica figura 8 pag. 180 Pelagatti ediz */ #include <stdio.h> void main(int argc, char* argv[]) { int error, status; long posiz; pid_t pid, pid_figlio; FILE *fp; char *s1 = "Nel mezzo del cammin di nostra vita"; char *s2 = "mi ritrovai in una selva oscura"; char *s3 = "che la diritta via era smarrita"; /* il processo padre apre il file */ printf("verifica con FOPEN\n\n"); printf("padre: apro il file \n"); fp=fopen("divcom","w"); error = (fp == 0); if (error!=0) { fprintf(stderr,"errore di apertura del file\n"); exit(1); } 78 Pag

40 Un secondo esempio (ii) posiz = ftell(fp); printf("padre: posizione corrente = %d\n",posiz); /* il processo padre scrive nel file */ printf("padre: scrivo sul file\n"); fprintf(fp,"%s\n",s1); fprintf(fp,"%s\n",s2); fprintf(fp,"%s\n",s3); posiz = ftell(fp); printf("padre: posizione corrente = %d\n",posiz); /* il padre genera un figlio. Il figlio eredita il file */ /* e la stessa posizione corrente del padre */ printf("padre: eseguo la fork\n"); pid = fork(); 79 Un secondo esempio (iii) if (pid == 0) { /* nel figlio */ /* legge posizione corrente, identica a quella del padre */ posiz = ftell(fp); printf("figlio: posizione corrente = %d\n",posiz); /* il figlio si riposizioe all'inizio del file */ printf("figlio: riposiziono all' inizio del file\n"); error = fseek(fp, (long) 0, SEEK_SET); /* legge posizione corrente, non piu' identica a quella del padre */ posiz = ftell(fp); printf("figlio: posizione corrente = %d\n",posiz); close(fp); /* chude il file e termina */ exit(0); } 80 Pag

41 Un secondo esempio (iv) else { /* nel padre */ printf("padre: generato figlio: %d\n",pid); /* legge la posizione corrente del file, dopo la */ /* fseek del figlio */ pid_figlio = wait(&status); printf("padre: figlio terminato: %d, con esito: %d\n",pid_figlio,status); posiz = ftell(fp); printf("padre: posizione corrente = %d\n",posiz); } /* chiude il file e termina */ close(fp); exit(0); } 81 Risultato dell esecuzione Verifica con FOPEN padre: apro il file padre: posizione corrente = 0 padre: scrivo sul file padre: posizione corrente = 100 padre: eseguo la fork padre: generato figlio: figlio: posizione corrente = 100 figlio: riposiziono all inizio del file figlio: posizione corrente = 0 padre: figlio terminato: con esito: 0 padre: posizione corrente = Pag

42 Un terzo esempio (i) /* programma verifica figura 8 pag. 180 Pelagatti ediz */ #include <stdio.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> void main(int argc, char* argv[]) { int error, status, file_desc; long posiz; pid_t pid, pid_figlio; char *s1 = "Nel mezzo del cammin di nostra vita"; char *s2 = "mi ritrovai in una selva oscura"; char *s3 = "che la diritta via era smarrita"; /* il processo padre apre il file */ printf("verifica con utilizzo OPEN\n\n"); printf("padre: apro il file \n"); file_desc=open("divcom",o_rdwr O_CREAT, 0666); error = (file_desc == 0); if (error!=0) { fprintf(stderr,"errore di apertura del file\n"); exit(1); } 83 Un terzo esempio (ii) posiz = lseek(file_desc, (long ) 0, 0); printf("padre: posizione corrente = %d\n",posiz); /* il processo padre scrive nel file */ printf("padre: scrivo sul file\n"); error = write(file_desc, s1, strlen(s1)); error = write(file_desc, "\n", 1); error = write(file_desc, s2, strlen(s2)); error = write(file_desc, "\n", 1); error = write(file_desc, s3, strlen(s3)); error = write(file_desc, "\n", 1); posiz = lseek(file_desc, (long ) 0, 1); printf("padre: posizione corrente = %d\n",posiz); /* il padre genera un figlio. Il figlio eredita il file */ /* e la stessa posizione corrente del padre */ printf("padre: eseguo la fork\n"); pid = fork(); 84 Pag

43 Un terzo esempio (iii) if (pid == 0) { /* nel figlio */ /* legge posizione corrente, identica a quella del padre */ posiz = lseek(file_desc, (long ) 0, 1); printf("figlio: posizione corrente = %d\n",posiz); /* il figlio si riposizioe all'inizio del file */ printf("figlio: riposiziono all' inizio del file\n"); error = lseek(file_desc, (long ) 0, 0); /* legge posizione corrente, non piu' identica a quella del padre */ posiz = lseek(file_desc, (long ) 0, 1); printf("figlio: posizione corrente = %d\n",posiz); error = close(file_desc); /* chude il file e termina */ exit(0); } 85 Un terzo esempio (iv) else { /* nel padre */ printf("padre: generato figlio: %d\n",pid); /* legge la posizione corrente del file, dopo la */ /* fseek del figlio */ pid_figlio = wait(&status); printf("padre: figlio terminato: %d, con esito: %d\n",pid_figlio,status); posiz = lseek(file_desc, (long ) 0, 1); printf("padre: posizione corrente = %d\n",posiz); } /* chiude il file e termina */ error = close(file_desc); exit(0); } 86 Pag

44 Risultato dell esecuzione Verifica con OPEN padre: apro il file padre: posizione corrente = 0 padre: scrivo sul file padre: posizione corrente = 100 padre: eseguo la fork padre: generato figlio: figlio: posizione corrente = 100 figlio: riposiziono all inizio del file figlio: posizione corrente = 0 padre: figlio terminato: con esito: 0 padre: posizione corrente = 0 87 Pag

Architettura dei calcolatori e sistemi operativi. Input Output. IO 2 Il File System

Architettura dei calcolatori e sistemi operativi. Input Output. IO 2 Il File System Architettura dei calcolatori e sistemi operativi Input Output IO 2 Il File System File System E quel componente del Sistema Operativo che realizza i servizi di gestione dei file file: unità di archiviazione

Dettagli

CAP.8: Il file system

CAP.8: Il file system Struttura interna del sistema operativo Linux CAP.8: Il file system Primitive per la gestione dei file 28/10/2013 File System Il gestore del file system è quel componente del Sistema Operativo che realizza

Dettagli

Struttura interna del sistema operativo Linux. Il file system. -revisione del 30 marzo 2004

Struttura interna del sistema operativo Linux. Il file system. -revisione del 30 marzo 2004 Struttura interna del sistema operativo Linux Il file system -revisione del 30 marzo 2004 File System Il file system è il componente del sistema operativo che realizza i servizi di gestione dei file file:

Dettagli

Architettura degli elaboratori Docente:

Architettura degli elaboratori Docente: Politecnico di Milano Il File System Architettura degli elaboratori Docente: Ouejdane Mejri mejri@elet.polimi.it Sommario File Attributi Operazioni Struttura Organizzazione Directory Protezione Il File

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 23 Martedì 17-01-2017 Il file system Il file system si basa sulle astrazioni

Dettagli

Il file system. dell 11. -Revisione. l 11 Aprile 2005

Il file system. dell 11. -Revisione. l 11 Aprile 2005 Struttura interna dei sistemi operativi unix-like Il file system -Revisione dell 11 l 11 Aprile 2005 File System Il file system è il componente del sistema operativo che realizza i servizi di gestione

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 22 Martedì 08-01-2019 Struttura logica del file system una tipica organizzazione

Dettagli

Modulo 13: System call relative al File System

Modulo 13: System call relative al File System Modulo 13: System call relative al File System Chiamate di sistema relative ai file Restituzione descrittore Uso di namei Assegnazione inode Attributi I/O File System Struttura Manipolazione open creat

Dettagli

Giuseppe Pelagatti. Programmazione e Struttura del sistema operativo Linux

Giuseppe Pelagatti. Programmazione e Struttura del sistema operativo Linux IL FILE SYSTEM Giuseppe Pelagatti Programmazione e Struttura del sistema operativo Linux Appunti del corso di Architettura dei Calcolatori e Sistemi Operativi (AXO) Parte IO: Input/Output e File System

Dettagli

8. IL FILE SYSTEM. 1. I servizi per la gestione dei file

8. IL FILE SYSTEM. 1. I servizi per la gestione dei file IL FILE SYSTEM 8. IL FILE SYSTEM In tutti i sistemi operativi il File System costituisce una parte molto rilevante del codice complessivo, ma noi lo tratteremo abbastanza brevemente, perchè dal punto di

Dettagli

Esercitazione 4. Gestione dei file in Unix

Esercitazione 4. Gestione dei file in Unix Esercitazione 4 Gestione dei file in Unix Primitive fondamentali (1/2) open close Apre il file specificato e restituisce il suo file descriptor (fd) Crea una nuova entry nella tabella dei file aperti di

Dettagli

Mari, Buonanno, Sciuto Informatica e cultura dell informazione McGraw-Hill 3/1/2010

Mari, Buonanno, Sciuto Informatica e cultura dell informazione McGraw-Hill 3/1/2010 Che cosa serve per acquisire dati e fornire risultati dispositivo che si trova alla periferia del calcolatore, dedicato a svolgere le operazioni di raccolta dei dati o di presentazione dei risultati, collegato

Dettagli

File System ext2. Struttura del filesystem ext2.

File System ext2. Struttura del filesystem ext2. Struttura di base File System ext2 Lo spazio fisico di un disco viene usualmente diviso in partizioni; ogni partizione può contenere un filesystem. Nel filesystem ext2 il blocco (block) definisce la minima

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Organizzazione del filesystem Meccanismo

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Capitolo 3 -- Stevens

Capitolo 3 -- Stevens I/O non bufferizzato (1) Capitolo 3 -- Stevens System Call open close read write lseek 1.2 sono degli interi non negativi file descriptor il kernel assegna un file descriptor ad ogni file aperto le funzioni

Dettagli

Sistemi operativi e distribuiti

Sistemi operativi e distribuiti Sistemi operativi e distribuiti File System Il concetto di file Unospaziologicocontinuo per la memorizzazione dei dati Tipi di dati memorizzabili in un file Codice eseguibile Dati generici numeri caratteri

Dettagli

&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file;

&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file; CREAZIONE ritorna fd o 1 Pseudocodice dell operazione: If(file esiste) If(Write permission) Tronca la lunghezza a 0 e lascia il file aperto in scrittura; Else Exit(-1); Else Alloca un nuovo INODE con link=1

Dettagli

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di file Metodi di accesso Struttura delle

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con

Dettagli

System call per l accesso a file

System call per l accesso a file System call per l accesso a file Nome open creat close read write lseek unlink remove fcntl Significato apre un file in lettura e/o scrittura o crea un nuovo file crea un file nuovo chiude un file precedentemente

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 6 Marzo 2016 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Maggio 2014 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver Architettura dei calcolatori e sistemi operativi Input Output IO 3 Device driver Device driver - gestori delle periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi

Dettagli

Directory. Le directory unix sono file.

Directory. Le directory unix sono file. Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con

Dettagli

Esercizio n. 4 File system

Esercizio n. 4 File system Esercizio n. 4 File system Un processo P esegue il programma seguente, creando un processo figlio Q, che crea a sua volta un figlio R: int main ( ) { /* processo P */ / dichiarazioni varie / fd = open

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Il file È un insieme di informazioni: programmi. Il File System. Il file system Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System 1 Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i

Dettagli

Il file system. Il File System. Il file È un insieme di informazioni: programmi dati testi

Il file system. Il File System. Il file È un insieme di informazioni: programmi dati testi Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Il File System Realizza i concetti

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

Dettagli

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Patrizia Scandurra Università degli Studi di Bergamo a.a. 2011-12 Sommario Il concetto di file Metodi di accesso Struttura delle

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

Dettagli

Igino Corona

Igino Corona Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno

Dettagli

Sistemi Operativi. L interfaccia del file system

Sistemi Operativi. L interfaccia del file system Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Il concetto di file Metodi di accesso Struttura delle

Dettagli

Il file system di Unix. Caratteristiche generali dei FS comunemente usati da Unix/Linux

Il file system di Unix. Caratteristiche generali dei FS comunemente usati da Unix/Linux Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux Il file system di Unix Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato System Call open close read write lseek 2 1 file descriptor sono degli interi non negativi il kernel assegna un file descriptor

Dettagli

Il file system. Il File System. Attributi del file. File

Il file system. Il File System. Attributi del file. File Il file system Il File System Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti di file:

Dettagli

SISTEMI OPERATIVI. Linguaggio C e Linux. Diffusione dei linguaggi di programmazione IEEE Giorgio Giacinto 2016.

SISTEMI OPERATIVI. Linguaggio C e Linux. Diffusione dei linguaggi di programmazione IEEE Giorgio Giacinto 2016. SISTEMI OPERATIVI Linguaggio C e Linux Diffusione dei linguaggi di programmazione IEEE 2016 2 Diffusione dei linguaggi di programmazione IEEE 2015 e 2014 2015 2014 3 Diffusione dei linguaggi di programmazione

Dettagli

Implementazione del File System nel Sistema Operativo Unix

Implementazione del File System nel Sistema Operativo Unix Implementazione del File System nel Sistema Operativo Unix (Bach: the Design of the Unix Operating System (cap: 4, da 5.1 a 5.7, 5.12) 1 Argomenti Index node (I-NODE) gestione dei file mediante i-node

Dettagli

CAP9. Device drivers

CAP9. Device drivers Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2015 2nda prova in itinere Era il 21 Maggio 2 2nda prova in itinere Era il 21 Maggio Spostata (da 3 settimane) al 22

Dettagli

File I/O. M. R. Guarracino: File I/O 1

File I/O. M. R. Guarracino: File I/O 1 File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:

Dettagli

Interfaccia del file system

Interfaccia del file system Interfaccia del file system Concetto di file Metodi di accesso Struttura delle directory Protezione 1 Concetto di File Insieme di informazioni correlate, registrate in memoria secondaria, con un nome.

Dettagli

Sistemi Operativi FILE SYSTEM : INTERFACCIA. D. Talia - UNICAL. Sistemi Operativi 8.1

Sistemi Operativi FILE SYSTEM : INTERFACCIA. D. Talia - UNICAL. Sistemi Operativi 8.1 FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

(9) pid1 = waitpid (pid1, &status, 0); (10) exit (0); } / end if / } / main.c / File system_

(9) pid1 = waitpid (pid1, &status, 0); (10) exit (0); } / end if / } / main.c / File system_ File system_ 2.3.22 Si considerino i seguenti frammenti di programma: / programma main.c / main ( ) { int pid, pid2; int fd, fd2; char v = abcdefghil ; char c []; () pid = fork ( ); (2) fd = open ( /user/acso/prova,

Dettagli

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16 DIPARTIMENTO DI INFORMATICA Alberto Ceselli (alberto.ceselli@unimi.it) Informatica II Sistemi Operativi DIGIP - a.a. 2015/16 Sistemi Operativi (modulo di Informatica II) L interfaccia del file system Patrizia

Dettagli

File System Unix. Generalità

File System Unix. Generalità File System Unix Generalità File System: Caratteristiche Struttura gerarchica Files senza struttura (byte strems) Protezione da accessi non autorizzati Semplicità di struttura "On a UNIX system, everything

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

La gestione dell'errore

La gestione dell'errore La gestione dell'errore Esiste una variabile globale intera, definita nell'header errno.h che viene settata nel caso in cui una chiamata di sistema non possa eseguire correttamente il suo compito. Tale

Dettagli

Il File System. Sistemi Operativi L-A AA

Il File System. Sistemi Operativi L-A AA Il File System Sistemi Operativi L-A AA 2009-2010 1 Il file system E quella componente del SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria

Dettagli

Gestione del file system. Astrazione di File System. Attributi del file. File

Gestione del file system. Astrazione di File System. Attributi del file. File Gestione del file system Astrazione di File System Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

File System. Sistemi Operativi Lezione 19

File System. Sistemi Operativi Lezione 19 File System Sistemi Operativi Lezione 19 Necessità Un qualunque sistema per la gestione delle informazioni deve essere in grado di soddisfare i seguenti requisiti: Memorizzare grosse quantità di dati Garantire

Dettagli

Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo

Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo www.dis.uniroma1.it/~midlab Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo Corso di Laurea in Ingegneria Informatica e Automatica A.A. 2014-2015 Prof. Roberto

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire

Dettagli

Digressione: man 2...

Digressione: man 2... Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix 1 Interazione tra processi Unix I processi Unix non possono condividere memoria (modello ad ambiente locale ) L interazione tra processi può avvenire: mediante la

Dettagli

Sistemi Operativi Da Unix a GNU/Linux (parte 3)

Sistemi Operativi Da Unix a GNU/Linux (parte 3) Sistemi Operativi Da Unix a GNU/Linux Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega Caratteristiche del File System 1 File visto da FS come sequenza

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 23 Giovedì 11-01-2018 Organizzazione fisica del file system Il file system

Dettagli

Sistemi Operativi 1. Mattia Monga. 6 giugno Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 6 giugno Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 6 giugno 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Sistemi Operativi. Bruschi Martignoni Monga. File system Astrazioni utente Metadati Tecniche implementative. Sistemi Operativi

Sistemi Operativi. Bruschi Martignoni Monga. File system Astrazioni utente Metadati Tecniche implementative. Sistemi Operativi 1 Mattia Lezione XXX: Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo

Dettagli

Modulo 12: File System

Modulo 12: File System Modulo 12: File System Livelli logici per l accesso ai file Organizzazione dei file su disco Organizzazione di un File System di UNIX 12.1 Livelli logici per l accesso ai file Programmi utente Pile Sequenziali

Dettagli

Elementi di informatica

Elementi di informatica Sia dato una memoria della capacità di 1 GB, avente tempo di accesso di 50ms e velocità di trasferimento di 20 MB/sec. Si vuole ricopiare l intero contenuto su un altra memoria identica, montata sullo

Dettagli

File-System! Introduzione al File-System! Struttura dei File! Concetto di File!

File-System! Introduzione al File-System! Struttura dei File! Concetto di File! File-System Introduzione al File-System Dal punto di vista dell utente File Directory Metodi e strutture per garantire accesso organizzazione condivisione protezione su/ai dati memorizzati Operating System

Dettagli

Logico e fisico. Fisico: legato agli aspetti costruttivi e tecnologici HARDWARE Logico: legato al significato e all organizzazione SOFTWARE FISICO

Logico e fisico. Fisico: legato agli aspetti costruttivi e tecnologici HARDWARE Logico: legato al significato e all organizzazione SOFTWARE FISICO File System FISICO LOGICO Indice Caratteristiche generali I file e directory Metodi di accesso Directory e descrittori dei file Operazioni sui file Organizzazione della memoria fisica Allocazione della

Dettagli

Filesystem: richiami sui concetti di base

Filesystem: richiami sui concetti di base Filesystem: richiami sui concetti di base 1 Cosa è un file system? Con file system si intende la parte del sistema operativo che si occupa di organizzare e gestire i dati/programmi in modo persistente

Dettagli

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER FILE E SEMAFORI. Fabio Buttussi

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER FILE E SEMAFORI. Fabio Buttussi Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER FILE E SEMAFORI Fabio Buttussi System call per l accesso a file Nome open close read write lseek creat remove unlink stat Significato

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt; La Shell di Unix La parte del sistema operativo Unix dedita alla gestione dell interazione con l utente è la shell, ovvero, un interfaccia a carattere: l utente impartisce i comandi al sistema digitandoli

Dettagli

Il File System. Sistemi Operativi T AA

Il File System. Sistemi Operativi T AA Il File System Sistemi Operativi T AA 2011-12 1 Il file system E quella componente del SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

aumenta il tempo di accesso; aumenta la capacità di memorizzazione; ma diminuisce il costo per bit.

aumenta il tempo di accesso; aumenta la capacità di memorizzazione; ma diminuisce il costo per bit. Capitolo 6 Le infrastrutture HardWare La memoria di massa La memoria di massa (magnetica) Una gerarchia di memoria 1. registri contenuti nella CPU (qualche KB) 2. cache (da circa 32KB a circa 1024KB) 3.

Dettagli

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX:

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: Il primo meccanismo di comunicazione tra processi locali in ambiente Unix e stato il meccanismo delle pipe. Per processo locale si intende un processo

Dettagli

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Gestione dei files Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Struttura del disco fisso Un disco fisso è composto da una serie di piatti sovrapposti Ogni piatto è

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo:

Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: I/O (Input/Output) System Call di I/O 2 Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: open (e creat) write read close lseek 1 File descriptors 3 File descriptor (fd)

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 21 Giovedì 20-12-2018 Il livello di accesso al file system Definisce

Dettagli

Cenno al file system di base di Linux

Cenno al file system di base di Linux Cenno al file system di base di Linux DISCO (memoria secondaria) E' un deposito di blocchi, ottenuti con la formattazione fisica: 0 1 2 3 4 5 6 7 8 9 100000 100005 100001 100006 100002 100007 100003 100009

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, A. Pennisi, S. Peluso, S. Salza, C. Ciccotelli Sommario Input/Output

Dettagli

UNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica

UNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica UNIX file system: organizzazione logica / Il File System di UNIX omogeneità: tutto è file tre categorie di file file ordinari direttori bin.profile etc usr dev anna file1 paolo mbox dispositivi fisici:

Dettagli

Esercizio FAT 1. Soluzione:

Esercizio FAT 1. Soluzione: Esercizio FAT 1 In un disco con blocchi di 1 Kbyte (= 2 10 byte), è definito un file system FAT. Gli elementi della FAT sono in corrispondenza biunivoca con i blocchi fisici del disco. Ogni elemento ha

Dettagli

Il File System di UNIX

Il File System di UNIX Il File System di UNIX UNIX file system: organizzazione logica / bin etc usr dev omogeneità: tutto è file tre categorie di file file ordinari direttori anna paolo.profile file1 mbox testi... dispositivi

Dettagli

Capitolo Silberschatz

Capitolo Silberschatz File System Capitolo 10 -- Silberschatz Interfaccia del File System Per gli utenti di un computer, il File System è spesso l aspetto più visibile del SO di quel computer. Il File System fornisce infatti

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Laboratorio di Sistemi Operativi primavera 2009 open

Laboratorio di Sistemi Operativi primavera 2009 open primavera 2009 open System Call close read I/O non bufferizzato write lseek 2 file descriptor file descriptor...ancora sono degli interi non negativi il kernel assegna un file descriptor ad ogni file aperto

Dettagli

Programmazione di sistema in Linux: gestione dei file. E. Mumolo

Programmazione di sistema in Linux: gestione dei file. E. Mumolo Programmazione di sistema in Linux: gestione dei file E. Mumolo Struttura di Linux System Call per il file system System Call per i processi Hardware: dischi, CPU, monitor, tastiera, schede di rete, porte

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio di Sistemi Operativi primavera 2009 primavera 2009 dimensione di file La dimensione dei files (in bytes) è in st_size (della struttura stat) File & Directory (2) La dimensione del blocco utilizzato nelle operazioni di I/O è contenuto in

Dettagli

I SISTEMI OPERATIVI (1)

I SISTEMI OPERATIVI (1) I SISTEMI OPERATIVI () un computer può essere pensato come una stratificazione di macchine virtuali, ciascuna delle quali mette a disposizione alcuni servizi, che sono utilizzabili mediante chiamate effettuate

Dettagli

1. Standard input 2. Standard output 3. Standard error

1. Standard input 2. Standard output 3. Standard error System Call di I/O 2 Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: open (e creat) write read close lseek I/O (Input/Output) File descriptors 3 Standard file 4 File

Dettagli

FILE SYSTEM 2. I-nodes (o Inodes)

FILE SYSTEM 2. I-nodes (o Inodes) FILE SYSTEM 2 I-nodes (o Inodes) Un file ha diverse componenti: nome, contenuto, proprietario, diritti d accesso, data di modifica, ecc. Tutte le informazioni sono contenute in una struttura (un record)

Dettagli

Sistemi Operativi e Laboratorio, Prova del 19/6/2014

Sistemi Operativi e Laboratorio, Prova del 19/6/2014 Nome: Cognome: Matricola: fila: posto: Esercizio 3 (5 punti) In un sistema che gestisce la memoria con paginazione a domanda, le pagine logiche e i blocchi fisici hanno una lunghezza di 2 8 = 256 byte

Dettagli

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli