Gestione dei file: filosofia. carica in memoria l i-node del file read / write. close cose rilascia le strutture dati di memoria del file

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Gestione dei file: filosofia. carica in memoria l i-node del file read / write. close cose rilascia le strutture dati di memoria del file"

Transcript

1 File system 1

2 Gestione dei file: filosofia open carica in memoria l i-node del file read / write accedono al file tramite il suo i-node close cose rilascia le strutture dati di memoria del file 2

3 Gestione File Gestione file: generalità Un file per essere usato deve essere aperto (open) L operazione open: localizza il file nel file system attraverso il suo pathname copia in memoria il descrittore del file (i-node) associa al file un intero non negativo (file descriptor), che verrà usato nelle operazioni di accesso al file, invece del pathname I file standard non devono essere aperti, perchè sono aperti dalla shell. Sono associati ai file descriptor 0 (input), 1 (output) e 2 (error). La close rende disponibile il file descriptor per ulteriori usi

4 Gestione File File Sharing File Sharing Unix supporta la condivisione dei file aperti tra processi differenti Tre strutture dati differenti sono utilizzate dal kernel Nel process control block di ogni processo è contenuta una tabella di descrittori di file aperti organizzata come vettore, indicizzata dal numero di descrittore Ad ogni entry della tabella sono associati: un flag del file descriptor un puntatore ad una tabella di file aperti

5 Gestione File Strutture dati Ogni entry della File Table contiene: il file status flag per il file (lettura, scrittura, append, etc.); il current file offset; un puntatore ad una entry della I-Node Table. Ogni entry della I-Node Table contiene: informazioni sul tipo di file; puntatori alle funzioni che operano sul file; copia dell i-node del file Alberto Montresor, Renzo Davoli 4

6 Gestione File: Strutture dati NON RESIDENTE (U-AREA) RESIDENTE Ø 1 2 File descriptor Table File Table I-node Table m read Ø 1 2 (Processo 1) File descriptor Table p write... 2 n write n... ref count modalità di apertura ref count in-core i-node (copia dell'i-node statico) (Processo( 2) ) offset di ultimo byte letto/scritto i-number i b logical device number flag di modificato Una entry per ogni file aperto da ogni processo (Globale) Una entry per ogni modalità di apertura di ogni file aperto (Globale) Una entry per ogni file aperto 5

7 Esempio Processo A fd1=open("/etc/passwd",o_rd ONLY); fd2=open("local",o O RDWR); 4 fd3=open("/etc/passwd",o_wr ONLY); User File descriptor Table File Table I-node Table (Processo A) count 1 Read count 3 (/etc/passwd) Processo B fd1=open("/etc/passwd",o_rd ONLY); fd2=open("private",o i t " O RDONLY ); count 1 count 1 Rd-Wrt Read count 1 (local) (Processo B) count 1 Write count 1 (private) count 1 Read 6 6

8 Visione d insieme Switcher l Kernel Ready queue System calls Interrupt Handlers I/O drivers Process Table File table i-node table Buffer pool U-Area File descriptor table U-Area Stack Dati Stack Dati... Stack Dati Testo Testo Testo Processo 1 Processo 2 Processo n 7

9 Gestione File Esempio: int fd;... fd=open(pathname,...); if (fd==-1) { /*gestione errore*/ }... read(fd,...);... write(fd,...);... close(fd); Nota: Un file può essere aperto più volte, e quindi avere più file descriptor associati contemporaneamente Alberto Montresor, Renzo Davoli 9

10 Gestione File int open(const char *path, int oflag,...); apre (o crea) il file specificato da pathname (assoluto o relativo), secondo la modalità specificata in oflag restituisce il file descriptor con il quale ci si riferirà al file successivamente (o -1 se errore) Valori di oflag O_RDONLY read-only (0) O_WRONLY write-only (1) O_RDWR read and write (2) Solo una di queste costanti può essere utilizzata in oflag Altre costanti (che vanno aggiunte in or ad una di queste tre) permettono di definire alcuni comportamenti particolari Le costanti sono definite in <fcntl.h>

11 Gestione File Valori di oflag: O_APPEND append O_CREAT creazione del file O_EXECL con O_CREAT, ritorna un errore se il file esiste O_TRUNC se il file esiste, viene svuotato O_NONBLOCK file speciali (discusso in seguito) O_SYNC synchronous write Se si specifica O_CREAT, è necessario specificare anche i permessi iniziali come terzo argomento; La maschera O_ACCMODE (uguale a 3) permette di isolare la modalità di accesso. oflag & O_ACCMODE può essere uguale a O_RDONLY, O_WRONLY, oppure O_RDWR Alberto Montresor, Renzo Davoli 11

12 Gestione File #include <fcntl.h> int creat(const char *path, mode_t mode); crea un nuovo file normale di specificato pathname, e lo apre in scrittura mode specifica i permessi iniziali; l'owner è l'effective user-id del processo se il file esiste già, lo svuota (owner e mode restano invariati) restituisce il file descriptor, o -1 se errore Equivalenze: creat(path, mode); open(path, O_WRONLY O_CREAT O_TRUNC, mode);

13 Gestione File int close(int filedes); chiude il file descriptor filedes restituisce l esito dell operazione (0 o -1) Nota: Quando un processo termina, tutti i suoi file vengono comunque chiusi automaticamente

14 Gestione File Ogni file aperto: e associato ad un current file offset, la posizione attuale all interno del file; un valore non negativo che misura il numero di byte dall inizio del file; operazioni read/write leggono dalla posizione attuale e incrementano il current file offset in avanti del numero di byte letti o scritti; quando viene aperto un file: Il current file descriptor viene posizionato a 0. a meno che l opzione O_APPEND non sia specificata Alberto Montresor, Renzo Davoli 14

15 Gestione File off_t lseek(int filedes, off_t offset, int whence); sposta la posizione corrente nel file filedes di offset bytes a partire dalla posizione specificata in whence: SEEK_SET dall'inizio del file SEEK_CUR dalla posizione corrente SEEK_END dalla fine del file restituisce la posizione corrente dopo la lseek, o -1 se errore Nota: La lseek non effettua alcuna operazione di I/O. Il valore di offset può anche essere negativo oppure 0 per recuperare la posizione corrente. Non tutti i files supportano l'operazione di lseek. lseek oltre la fine del file provocano dei buchi

16 Gestione File ssize_t read(int filedes, void *buf, size_t nbyte); legge in *buf una sequenza di nbyte byte dalla posizione corrente del file filedes; aggiorna la posizione corrente; restituisce il numero di bytes effettivamente letti, o -1 se errore; Esistono un certo numero di casi in cui il numero di byte letti è inferiore al numero di byte richiesti: Fine di un file regolare Per letture da stream provenienti dalla rete Per letture da terminale etc Alberto Montresor, Renzo Davoli 16

17 Gestione File ssize_t write(int filedes, const void *buf, size_t nbyte); scrive in *buf una sequenza di nbyte byte dalla posizione corrente del file filedes; aggiorna la posizione corrente; restituisce il numero di bytes effettivamente scritti, o -1 se errore Alberto Montresor, Renzo Davoli 17

18 Gestione File Esempio Copia lo standard input sullo standard output A seconda della dimensione di BUFFERSIZE si ottengono prestazioni differenti #define BUFFSIZE?? int main(void) { int n; char buf[buffsize]; while ( (n = read(stdin_fileno, buf, BUFFSIZE)) > 0) if (write(stdout_fileno, buf, n)!= n) { perror("write error"); exit(1); } if (n < 0) { perror("read error"); exit(1); } } exit(0);

19 Buffer cache user Level kernel Level trap user programs libraries system call interface kernel Level hardware Level file subsystem buffer cache character block device drivers process control subsystem hardware control hardware inter-process communication scheduler memory management 36

20 Buffer cache 37

21 Buffer cache 38

22 La buffer cache: lettura buffer buffer cache read(fd, buffer, n) processo kernel disco 18

23 La buffer cache: scrittura buffer buffer cache write(fd, buffer, n) processo kernel disco 19

24 Gestione File BUFFSIZE User CPU (seconds) System CPU (seconds) Clock time (seconds) # loops

25 Gestione File - Fcntl La funzione fcntl può cambiare le proprietà di un file aperto int fcntl(int filedes, int cmd, /* int arg */) Argomento 1: è il descrittore del file su cui operare Argomento 2: è il comando da eseguire Argomento 3: quando presente, parametro del comando; Comandi: duplicazione di file descriptor (F_DUPFD) get/set file descriptor flag (F_GETFD, F_SETFD) get/set file status flag (F_GETFL, F_SETFL) get/set async. I/O ownership (F_GETOWN, F_SETOWN) get/set record locks (F_GETLK, F_SETLK, F_SETLKW)

26 Gestione File - Fcntl int fcntl(int filedes, F_DUPFD, int min) Duplica il file descriptor specificato da filedes Ritorna il nuovo file descriptor Il file descriptor scelto è uguale al valore più basso corrispondente ad un file descriptor non aperto e che sia maggiore o uguale a min int fcntl(int filedes, F_GETFD) Ritorna i file descriptor flag associati a filedes Attualmente, è definito un solo file descriptor flag: FD_CLOEXEC (se true, il file descriptor sarà chiuso all'exec)

27 Gestione File int fcntl(int filedes, F_SETFD, int newflag) Modifica i file descriptor flag associati a filedes, utilizzando il terzo argomento come nuovo insieme di flag. int fcntl(int filedes, F_GETFL) Ritorna i file status flag associati a filedes; I file status flag sono quelli utilizzati nella funzione open; Per determinare la modalità di accesso, è possibile utilizzare la maschera ACC_MODE; Per determinare gli altri flag, è possibile utilizzare le costanti definite (O_APPEND, O_NONBLOCK, O_SYNC) Alberto Montresor, Renzo Davoli 23

28 Gestione File - Fcntl int fcntl(int filedes, F_SETFL, int newflag) Modifica i file status flag associati a filedes con il valore specificato in newflag I soli valori che possono essere modificati sono O_APPEND, O_NONBLOCK, O_SYNC; l access mode deve rimanere inalterato Che succede nell'esempio del buffer cache se abilitiamo O_SYNC?

29 Gestione File - Ioctl La funzione ioctl raccoglie tutti i comportamenti che non possono essere racchiusi nella interfaccia basata su file int iocntl(int filedes, int request, /*args*/); filedes è il descrittore del file stream request è la funzione di controllo selezionata e tipica di filedes args sono informazioni opzionali associate a request Categorie di comandi disk labels I/O file I/O magnetic tapes I/O socket I/O terminal I/O

30 Gestione File - Fsync La system call fsync() int fsync(int fildes); effettua l'operazione di "flush" dei dati bufferizzati dal s.o. per il file descriptor fildes (ovvero li scrive sul disco o sul dispositivo sottostante) Motivazione il gestore del file system può mantenere i dati in buffer in memoria per diversi secondi, prima di scriverli su disco per ragioni efficienza ritorna 0 in caso di successo, -1 altrimenti

31 Gestione File System - Select System call select() permette di aspettare contemporaneamente file descriptor multipli (con timeout) int select(int nfds, /* # of file descriptors */ fd_set *readfds, /* Read descriptor set */ fd_set *writefds, /* Write descriptor set */ fd_set *exceptfds, /* Exception descriptor set */ struct timeval *timeout); /* Timeout value */ Parametri di input nfsd è la dimensione massima dei sottoinsiemi *...fds sono i sets dei file descriptors realizzati tramite mappe di bit timeout è il timeout di attesa (opzionale) Parametri di output 0 timeout; -1 errore (see errno); k < 0 numero di descriptors pronti per l'i/o Modifica fd_set ponendo a 1 i bit relativi ai file descriptors pronti per l'i/o

32 Gestione File System - Select System call select() permette di aspettare contemporaneamente file descriptor multipli (con timeout) int select(int nfds, /* # of file descriptors */ fd_set *readfds, /* Read descriptor set */ fd_set *writefds, /* Write descriptor set */ fd_set *exceptfds, /* Exception descriptor set */ struct timeval *timeout); /* Timeout value */ Gestire fd_set FD_SET(fd, _fdset); /* add fd to _fdset */ FD_CLR(fd, _fdset); /* remove fd from _fdset*/ FD_ISSET(fd, _fdset); /* test if fd is in _fdset*/ FD_ZERO(_fdset); /* inizialize/clear _fdset*/ Esempio: if ( FD_ISSET(0,&readfds) ) { // Read input data from unit 0}

33 File e Directory open, read, write, close permettono di leggere e scrivere file regolari Ulteriori operazioni: leggere gli attributi di un file (stat) modificare gli attributi di un file (chmod, chown, chgrp, ) concetto di hard link (link, unlink, remove) lettura di directory

34 Gestione File : #include <sys/types.h> #include <sys/stat.h> int stat(const char *pathname, struct stat *buf); int fstat(int filedes, struct stat* buf); int lstat(const char *pathname, struct stat *buf); stat identifica il file tramite un pathname; fstat identifica un file aperto tramite il suo descrittore; lstat, se applicato ad un link simbolico, ritorna informazioni sul link simbolico, non sul file linkato Alberto Montresor, Renzo Davoli 28

35 Gestione File Il secondo argomento delle funzioni stat è un puntatore ad una struttura di informazioni sul file specificato struct stat { mode_t st_mode; // File type & mode ino_t st_ino; // i-node number dev_t st_dev; // device number (file system) dev_t st_rdev; // device n. for special files nlink_t st_nlink; // number of links uit_t uid; // user ID of owner gid_t gid; // group ID of owner off_t st_size; // size in bytes, for reg. files time_t st_atime; // time of last access time_t st_mtime; // time of last modif. time_t st_ctime; // time of last status change long st_blksize; // best I/O block size long st_blocks; // number of 512-byte blocks } Alberto Montresor, Renzo Davoli

36 File e Directory Tipo e accesso Tipi di file Campo st_mode struct stat sbuf; if ( stat(path,&sbuf) == -1 ) { /* error */} Macro per determinare il tipo di file File regolari S_ISREG(sbuf.st_mode) Directory file S_ISDIR(sbuf.st_mode) Character special file S_ISCHR(sbuf.st_mode) Block special file S_ISBLK(sbuf.st_mode) FIFO S_ISFIFO(sbuf.st_mode) Socket S_ISSOCK(sbuf.st_mode) Link simbolico S_ISLNK(sbuf.st_mode)

37 File e directory Tipo e accesso set-user-id e set-group-id: st_mode offre informazioni nell flag st_uid (set-user-id) per identificare l'effective user id: effective user id == st_uid Analogamente, st_mode offre informazioni nel flag st_gid (setgroup-id) per l'effective group id: effective group id == st_gid E possibile utilizzare questi due bit per risolvere il problema di passwd: l owner del comando passwd è root quando passwd viene eseguito, il suo effective user id è uguale a root il comando può modificare in scrittura il file /etc/passwd

38 File e directory Tipo e accesso Costanti per accedere ai diritti di lettura e scrittura contenuti in st_mode S_ISUID == 0x04000 set-user-id S_IRWXU == 0x00700 read/write/esecuzione, owner S_IRUSR == 0x00400 accesso in lettura, owner S_IWUSR == 0x00200 accesso in scrittura, owner S_IXUSR == 0x00100 accesso in esecuzione, owner S_IRGRP == 0x00040 accesso in lettura, gruppo S_IWGRP == 0x00020 accesso in scrittura, gruppo S_IXGRP == 0x00010 accesso in esecuzione, gruppo S_IROTH == 0x00004 accesso in lettura, altri S_IWOTH == 0x00002 accesso in scrittura, altri S_IXOTH == 0x00001 accesso in esecuzione, altri...

39 File e Directory Tipo e accesso System call: int access(const char* pathname, int mode) Quando si accede ad un file, vengono utilizzati effective uid e effective gid (inizialmente come i real ids ma possono cambiare) A volte, può essere necessario verificare l accessibilità in base a real uid e real gid Per fare questo, si utilizza access() Mode è un maschera ottenuta tramite bitwise or delle seguenti costanti: R_OK W_OK X_OK F_OK testa se si hanno i permessi di lettura testa se si hanno i permessi di scrittura testa se si hanno i permessi di esecuzione testa se il file esiste

40 File e Directory Tipo e accesso System call: mode_t umask(mode_t cmask); Cambia la maschera utilizzata per la creazione dei file (es. in open()). Ritorna la maschera precedentemente utilizzata. La maschera riguarda i permessi di rwx per utente, gruppo e others. Funzionamento: Si applica tutte le volte che un processo crea un nuovo file. I bit accesi in cmask disabilitano i rispettivi permessi nell'access mode del nuovo file.

41 File e Directory Tipo e accesso Esempio di umask: Supponiamo di voler aprire un file e di crearlo se non esiste. open(mfile, O_WRONLY O_CREAT..., mmode); In cui mmode è specificato come: (default) mmode == S_IRUSR S_IWUSR S_IRGRP S_IWRGRP S_IROTH S_IWOTH 0x666 Se la corrente umask è: (default) umask == S_IWGRP S_IWOTH 0x022 I permessi sul nuovo file saranno: mfile == S_IRUSR S_IWUSR S_IRGRP S_IROTH 0x0644 Schema mmode & ~umask

42 File e Directory Tipo e accesso System call: int chmod (const char* path, mode_t mode); int fchmod (int filedes, mode_t mode); int lchmod(const char *path, mode_t mode); Per cambiare i diritti su un file esistente. Opera su un pathname (chmod) o di un file aperto (fchmod) o di un link simbolico (lchmod) Per cambiare i diritti di un file: l effective_uid del processo deve essere uguale all owner del file oppure deve essere uguale a root

43 File e Directory Proprietario Alla creazione di un file L access mode del file viene scelto seguendo la modalità illustrata in precedenza. L'user id del proprietario è settato con l'effective uid del processo Per il group_id POSIX permette due possibilità: Può essere uguale allo effective gid del processo Può essere uguale al group id della directory in cui il file viene creato In alcuni sistemi, questo può dipendere dal bit set-group-id della directory in cui viene creato il file

44 File e Directory Proprietario System call: int chown(char* pathname, uid_t owner, gid_t group); int fchown(int filedes, uid_t owner, gid_t group); int lchown(char* pathname, uid_t owner, gid_t group); Queste tre funzioni cambiano lo user id e il group id di un file Nella prima, il file è specificato come pathname Nella seconda, il file aperto è specificato da un file descriptor Nella terza, si cambia il possessore del link simbolico, non del file stesso Restrizioni: In alcuni sistemi, solo il superutente può cambiare l owner di un file Costante POSIX_CHOWN_RESTRICTED definisce se tale restrizione è in vigore

45 File e Directory Hard link Hard link: Ogni i-node mantiene un contatore con il numero di hard link ad esso associati. Ogni link corrisponde ad una entry nella tabella di una directory. Operazioni: Linking: aggiungere un link ad un file Unlinking: rimuovere un link da un file In stat il campo st_nlink contiene il numero di link al file Solo quando il numero di link scende a zero è possibile rimuovere un file

46 File e Directory Hard link Suddivisione delle informazioni: gli inode mantengono tutte le informazioni sul file: dimensioni, permessi, puntatori ai blocchi dati, etc. le directory entry mantengono un file name e un inode number Limitazioni degli hard-link: la directory entry contiene un numero di inode sullo stesso file system non è possibile fare hard-linking con file su file system diversi in questo caso, si utilizzano symbolic link Hard link per directory: ogni directory dir ha un numero di hard link maggiore uguale a 2: Uno perché dir possiede un link nella sua directory genitore Uno perché dir possiede un entry. che punta a se stessa ogni sottodirectory di dir aggiunge un hard link: Uno perché la sottodirectory possiede un entry.. che punta alla directory genitore

47 File e Directory Hard link System call: int link(char* path, char* alias); crea un nuovo hard link per il file specificato da path operazione atomica: aggiunge la directory entry (riferita alla directori di alias) ed aumenta il numero di link del file individuato da path errori: path non esiste Una componente del path non esiste non è una directory la directory di destinazione per l'alias non è accessibile in scrittura path e alias non risiedono nello stesso file system... utilizzato dal comando ln

48 File e Directory Hard link System call: int unlink(char* path); int remove(char* path); rimuove un hard link per il file specificato da path operazione atomica: rimuove la directory entry e decrementa di uno il numero di link del file errori: path non esiste un utente diverso da root cerca di fare unlink su una directory utilizzato dal comando rm un file può essere effettivamente cancellato dall hard disk: quando il suo conteggio raggiunge 0

49 File e Directory Rename System call: int rename(char* oldpath, char* newpath); Cambia il nome di un file da oldpath a newpath Casi: se oldpath specifica un file regolare, newpath non può essere una directory esistente se oldpath specifica un file regolare e newpath è un file regolare esistente, questo viene rimosso e sostituito sono necessarie write permission su entrambe le directory se oldpath specifica una directory, newpath non può essere un file regolare esistente se oldpath specifica una directory, newpath non può essere una directory non vuota

50 File e Directory Link simbolici Un link simbolico: E un file speciale che contiene il pathname assoluto di un altro file E un puntatore indiretto ad un file (gli hard link invece sono puntatori diretti ad inode) Introdotto per superare le limitazioni degli hard link: hard link possibili solo fra file nello stesso file system hard link a directory possibili solo al superuser nota: questo comporta la possibilità di creare loop i programmi che analizzano il file system devono essere in grado di gestire questi loop Quando si utilizza una funzione, bisogna avere chiaro se: segue i link simbolici (la funzione si applica al file puntato dal link simbolico) non segue i link simbolici (la funzione si applica sul link) Funzioni che non seguono i link simbolici: lchown, lstat, readlink, remove, rename, unlink

51 Gestione File int symlink(char* oldpath, char* newpath); Crea una nuova directory entry newpath con un link simbolico che punta al file specificato da oldpath. oldpath e newpath non devono risiedere necessariamente nello stesso file system. int readlink(char* path, char* buf, int size); Copia in buf il valore del link simbolico. poiché la open segue il link simbolico, abbiamo bisogno di una system call per ottenere il contenuto del link simbolico Alberto Montresor, Renzo Davoli 45

52 File e Directory Tempi Tre valori temporali sono mantenuti nella struttura stat st_atime (opzione u in ls) Ultimo tempo di accesso read, creat/open (when creating a new file), utime st_mtime (default in ls) Ultimo tempo di modifica del contenuto write, creat/open, truncate, utime st_ctime (opzione c in ls) Ultimo cambiamento nello stato (nell inode) chmod, chown, creat, mkdir, open, remove, rename, truncate, link, unlink, utime, write

53 File e Directory Tempi System call #include <utime.h> int utime(char* pathname, struct utimbuf *times); struct utimbuf { time_t actime; time_t modtime; } Modifica il tempo di accesso e modifica del file puntato da pathname Il tempo di changed-status viene modificato automaticamente Nota Se times è null viene settato il tempo corrente L'effective user ID del processo deve essere il proprietario del file oppure il processo ha i diritti di scrittura sul file

54 File e Directory Directory int mkdir(char* path, mode_t); Crea una nuova directory vuota dal path specificato Modalità di accesso: I permessi specificati da mode_t vengono modificati in base ad umask L'UID è impostato all'effective UID Il GID è impostato al GID della directory parent oppure all'effective GID int rmdir(char* path); Rimuove la directory vuota specificata da path La directory deve essere vuota path non può essere un link simbolico o terminare con.,.. Se st_nlink della directory è 0: Non ci sono processi che la tengono aperta viene eliminata. Almeno un processo esiste ancora ma. e.. vengono rimossi.

55 File e Directory Directory Ogni processo: ha una directory corrente a partire dalla quale vengono fatte le ricerche per i pathname relativi System call: int chdir(char* path); int fchdir(int filedes); Cambia la directory corrente associata al processo, utilizzando un pathname oppure un file descriptor Funzione: char* getcwd(char* buf, size_t size); Legge la directory corrente e riporta il pathname assoluto nel buffer specificato da buf e di dimensione size

56 File e Directory Directory Leggere / scrivere directory Le directory possono essere lette da chiunque abbia accesso in lettura Solo il kernel può scrivere in una directory Per evitare problemi di consistenza I diritti di scrittura specificano la possibilità di utilizzare uno dei seguenti comandi: open, creat, unlink, remove, symlink, mkdir, rmdir Il formato del file speciale directory dipende dall implementazione di Unix Per questo motivo, esistono delle funzioni speciali per leggere il contenuto di una directory

57 File e Directory Directory Funzioni definite in dirent.h DIR *opendir(const char *pathname); Apre una directory e ne ritorna un puntatore di tipo DIR. NULL in caso di errore (e viene settato errno) struct dirent *readdir(dir *dp); Legge la prossima entry del puntatore a directory dp. Ritorna NULL se si raggiunge la fine della directory NULL in caso di errore e errno viene settato void rewinddir(dir *dp); Ritorna all'inizio della directory void closedir(dir *dp); Chiude la directory

58 Gestione File La struttura dirent è definita in dirent.h: struct dirent { } ino_t d_ino; // i-node number char d_name[name_max+1];// null-terminated name Note: la struttura DIR è una struttura interna utilizzata da queste quattro funzioni come "directory descriptor"; le entry di una directory vengono lette in un ordine non determinato a priori Alberto Montresor, Renzo Davoli 49

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

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

Gestione dei file: filosofia. carica in memoria l i-node del file read / write. close cose rilascia le strutture dati di memoria del file

Gestione dei file: filosofia. carica in memoria l i-node del file read / write. close cose rilascia le strutture dati di memoria del file File system 1 Gestione dei file: filosofia open carica in memoria l i-node del file read / write accedono al file tramite il suo i-node close cose rilascia le strutture dati di memoria del file 2 Caratteristiche

Dettagli

File e Directory. M. Guarracino - File e Directory 1

File e Directory. M. Guarracino - File e Directory 1 File e Directory M. Guarracino - File e Directory 1 Date dei file Ogni volta che accediamo ai dati contenuti in un file, il sistema memorizza la data di ultimo accesso La stessa cosa accade quando modifichiamo

Dettagli

File e Directory. M. Guarracino - File e Directory 1

File e Directory. M. Guarracino - File e Directory 1 File e Directory M. Guarracino - File e Directory 1 File e Directory Abbiamo visto come si possono utilizzare funzioni di I/O per i file: open, read, write, lseek e close Vogliamo ora analizzare ulteriori

Dettagli

Il sistema operativo LINUX Il file system. Indice. Blocchi logici. Indice. Super block. G. Di Natale, S. Di Carlo

Il sistema operativo LINUX Il file system. Indice. Blocchi logici. Indice. Super block. G. Di Natale, S. Di Carlo Il sistema operativo LINUX Il file system Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Blocchi logici Il file system è

Dettagli

Gestione di File e Directory

Gestione di File e Directory Gestione di File e Directory Duplicazione di file descriptor Un file descriptor puo' essere duplicato utilizzando: int dup (int filedes); int dup2(int filedes, int filedes2); dup restituisce un file descriptor

Dettagli

1. File normale: contiene dati 2. Directory: contiene nomi di altri file ed informazioni sugli stessi

1. File normale: contiene dati 2. Directory: contiene nomi di altri file ed informazioni sugli stessi File Tipi di file 2 1. File normale: contiene dati 2. Directory: contiene nomi di altri file ed informazioni sugli stessi 3. File speciali di caratteri: es. un terminale, /dev/tty 4. File speciali a blocchi:

Dettagli

Files, File I/O, File Sharing. Franco Maria Nardini

Files, File I/O, File Sharing. Franco Maria Nardini Files, File I/O, File Sharing Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c e un solo tipo di file. Struttura e interpretazione

Dettagli

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);

Dettagli

Inter-process communication

Inter-process communication Primitive di Comunicazione 1 Inter-process communication Nell'attività del sistema si rende necessario la cooperazione tra processi per realizzare le diverse funzionalità offerte all'utente. La cooperazione

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 Matricole congr. 0 mod 3 File & Directory #include #include stat,fstat e lstat int stat (const char *pathname, struct stat *buf); int fstat (int

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

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

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

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A. 2005-2006

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A. 2005-2006 Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione Corso di Sistemi Operativi A. A. 2005-2006 Link e permessi Link Un riferimento ad un file è detto link Ogni file può avere un numero

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

Input-Output di basso livello

Input-Output di basso livello Input-Output di basso livello File in UNIX Il kernel di UNIX vede tutti i file come flussi non formattati di byte; il compito di interpretare ogni struttura logica interna ad un file e lasciato alle applicazioni.

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matr. Congr. 0 mod 3

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matr. Congr. 0 mod 3 Marzo-Giugno 2008 Matr. Congr. 0 mod 3 File & Directory (2) #include #include umask mode_t umask (mode_t cmask); Descrizione: setta la maschera di creazione per l accesso ad

Dettagli

Modulo 5: Programmazione di sistema --- Parte C: System call per la gestione dei file

Modulo 5: Programmazione di sistema --- Parte C: System call per la gestione dei file 1 Modulo 5: --- Parte C: System call per la gestione dei file Laboratorio di Sistemi Operativi I Anno Accademico 2006-2007 Francesco Pedullà (Tecnologie Informatiche) Massimo Verola (Informatica) Copyright

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call

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

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory 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

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);

Dettagli

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file:

Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: Scrivere alla fine di un file Vi sono due modi per scrivere alla fine di un file: usare lseek per spostarsi alla fine del file e poi scrivere: lseek(filedes, (off_t)0, SEEK_END); write(filedes, buf, BUFSIZE);

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato-2 dup, dup2 System Call sync, fsync, fdatasync fcntl 2 1 Condivisione di file Unix supporta la possibilità che più processi

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

Files e Directories. Franco Maria Nardini

Files e Directories. Franco Maria Nardini Files e Directories Franco Maria Nardini stat(2) Famiglia di system call Ritornano gli attributi estesi del file riferito in caso di link simbolico, lstat(2) ritorna attributi del link stesso le altre,

Dettagli

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI mumolo@units.it Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process

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

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

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 14 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche

Dettagli

Tipi di file. File. Proprietà dei file. Link simbolici. Set-user-ID e set-group-id. Identificatori e processi

Tipi di file. File. Proprietà dei file. Link simbolici. Set-user-ID e set-group-id. Identificatori e processi Tipi di file 2 File 1. File normale: contiene dati 2. Directory: contiene nomi di altri file ed informazioni sugli stessi 3. File speciali di caratteri: es. un terminale, /dev/tty 4. File speciali a blocchi:

Dettagli

Record locking con la system call fcntl

Record locking con la system call fcntl Record locking con la system call fcntl Il record locking è un metodo per disciplinare la cooperazione tra processi. Permette ad un processo di poter accedere ad un file in modo esclusivo. È utile quindi

Dettagli

Program m azione di Sistem a 2a

Program m azione di Sistem a 2a Program m azione di Sistem a 2a Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio di Sistemi Operativi primavera 2009 primavera 2009 stat,fstat e lstat File & Directory (1) int stat (const char *pathname, struct stat *buf); int fstat (int fd, struct stat *buf); int lstat (const char *pathname,

Dettagli

Capitolo 11 -- Silberschatz

Capitolo 11 -- Silberschatz Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono

Dettagli

Sistemi Operativi. Organizzazione logica ed implementazione di un File System

Sistemi Operativi. Organizzazione logica ed implementazione di un File System Modulo di Sistemi Operativi per il corso di Master RISS: Ricerca e Innovazione nelle Scienze della Salute Unisa, 17-26 Luglio 2012 Sistemi Operativi Organizzazione logica ed implementazione di un File

Dettagli

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

Drivers. Introduzione Tipologie Struttura Interazione con il kernel Drivers Introduzione Tipologie Struttura Interazione con il kernel Driver Un driver è un modulo del sistema operativo Esterno al kernel Dedicato alla gestione di una specifica periferica Come altre funzionalità

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Programmazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente

Programmazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente Programmazione di sistema in UNIX File comandi utente Shell Gestione processi Comandi Sistema Operativo Servizi di sistema (primitive, system call) fork exec wait exit char I/O block I/O open create close

Dettagli

Comandi. Sistema Operativo

Comandi. Sistema Operativo Introduzione Programmazione di sistema in UNIX File comandi utente Shell Comandi Sistema Operativo Programmi in C Servizi di sistema (primitive, system call) solo per driver fork exec wait exit char I/O

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

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

Interfaccia del file system

Interfaccia del file system Interfaccia del file system Concetto di file Modalità di accesso Struttura delle directory Montaggio di un file system Condivisione di file Protezione 9.1 File E un insieme di informazioni correlate e

Dettagli

12. Implementazione di un File System. 12.1.1 Struttura a livelli. 12.2.1 Allocazione contigua

12. Implementazione di un File System. 12.1.1 Struttura a livelli. 12.2.1 Allocazione contigua 12. Implementazione di un File System 1 Struttura del file system Metodi di allocazione Gestione dello spazio libero Implementazione delle directory Prestazioni ed efficienza 2 Utente 12.1.1 Struttura

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi Le FIFO pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) la fifo consente di scambiare dati tra processi qualsiasi 2 1 FIFO (named

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -

Dettagli

Sistemi Operativi. II Semestre - Marzo/Giugno 2012 Matricole congr. 0 mod 3. File & Directory

Sistemi Operativi. II Semestre - Marzo/Giugno 2012 Matricole congr. 0 mod 3. File & Directory II Semestre - Marzo/Giugno 2012 Matricole congr. 0 mod 3 File & Directory #include Leggere Directory DIR *opendir(const char *pathname); ritorna NULL su errore struct dirent *readdir(dir *dp);

Dettagli

Modulo 8 System call per la gestione dei file

Modulo 8 System call per la gestione dei file 1 Modulo 8 Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli, Alberto Montresor (Universitá di Bologna)

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Struttura del Micro Filesystem (µfs)

Struttura del Micro Filesystem (µfs) Struttura del Micro Filesystem (µfs) Il Micro Filesystem deve essere organizzato all'interno di un unico file regolare Linux (dev_ufs) ed può basato sul filesystem FAT-32 con la gestione dei permessi in

Dettagli

File system II. Sistemi Operativi Lez. 20

File system II. Sistemi Operativi Lez. 20 File system II Sistemi Operativi Lez. 20 Gestione spazi su disco Esiste un trade-off,tra spreco dello spazio e velocità di trasferimento in base alla dimensione del blocco fisico Gestione spazio su disco

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

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo

Dettagli

Il File System. Il file system

Il File System. Il file system 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 IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 5 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Processi in Unix Approfondimenti: http://gapil.gnulinux.it/download/

Dettagli

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa Il File System 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 di massa Realizza i concetti astratti

Dettagli

Sistemi Operativi. II Semestre - Marzo/Giugno 2011 Matricole congr. 0 mod 3. File & Directory. Leggere Directory

Sistemi Operativi. II Semestre - Marzo/Giugno 2011 Matricole congr. 0 mod 3. File & Directory. Leggere Directory II Semestre - Marzo/Giugno 2011 Matricole congr. 0 mod 3 File & Directory Leggere Directory DIR *opendir(const char *pathname); ritorna NULL su errore struct dirent *readdir(dir *dp); ritorna

Dettagli

Modello di Programma in UNIX

Modello di Programma in UNIX Modello di Programma in UNIX Spazio di Indirizzamento per ogni singolo PROCESSO (Modello ad ambiente locale) Aree Dati Stack Heap Dati non inizializzati Dati dinamici Processo riferisce dati codice Dati

Dettagli

System call fcntl e record locking

System call fcntl e record locking System call fcntl e record locking Esempio: prenotazione di voli aerei La compagnia ACME Airlines usa un sistema di prenotazione dei voli basato su unix. Possiede due uffici per la prenotazione, A e B,

Dettagli

Capitolo 3 -- Stevens

Capitolo 3 -- Stevens File & Directory Capitolo 3 -- Stevens stat, fstat e lstat #include #include int stat (const char *pathname, struct stat *buf); int fstat (int fd, struct stat *buf); int lstat

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

IPC System V. Code di messaggi

IPC System V. Code di messaggi IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile

Dettagli

Organizzazione di Sistemi Operativi e Reti

Organizzazione di Sistemi Operativi e Reti Organizzazione di Sistemi Operativi e Reti Corso di Laurea Triennale in Ingegneria Informatica Sara Lioba Volpi (sara.volpi@iet.unipi.it) Quarta esercitazione Sommario Virtual file system (VFS) concetto

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

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

Interprocess Communications - II. Franco Maria Nardini

Interprocess Communications - II. Franco Maria Nardini Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication (IPC) IPCS 1 1. Code di messaggi 2. Semafori 3. Memoria condivisa send receive 2? 3 p1 p3 p2 CODE DI MESSAGGI Modello di Comunicazione Code di Messaggi Il processo ricevente

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -

Dettagli

Sistemi Operativi. ugoerr+so@dia.unisa.it 11 LEZIONE INTERFACCIA DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. ugoerr+so@dia.unisa.it 11 LEZIONE INTERFACCIA DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 11 LEZIONE INTERFACCIA DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Federico Spizzo Dipartimento di Fisica / Edificio C Stanza 006 Tel: 0532 974231 E-mail: federico.spizzo@unife.it Gianluigi Cibinetto Dipartimento di Fisica / Edificio C Stanza

Dettagli

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. La nozione di multiprogrammazione prevede la possibilità di

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Chiamate di sistema. Gestione sistematica di errori Chiamate che lavorano su file

Chiamate di sistema. Gestione sistematica di errori Chiamate che lavorano su file Chiamate di sistema Gestione sistematica di errori Chiamate che lavorano su file 1 Chiamate di sistema: errori Le chiamate di sistema possono fallire in caso di fallimento ritornano un valore diverso da

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi Software relazione Hardware Software di base Software applicativo Bios Sistema operativo Programmi applicativi Software di base Sistema operativo Bios Utility di sistema software Software applicativo Programmi

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Struttura del sistema operativo GNU/Linux

Struttura del sistema operativo GNU/Linux Struttura del sistema operativo GNU/Linux http://www.glugto.org/ Cos'è un filesystem Cosa vuol dire FHS Composizione albero di directory Concetto di Mount Utente root Permessi su files e directory GNU/Linux

Dettagli

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Introduzione alla. Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1

Introduzione alla. Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1 Introduzione alla Shell di UNIX Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1 Composizione di un sistema informativo: Hardware (CPU, periferiche,

Dettagli

POSIX - Gestione dei file. E.Mumolo, DEEI

POSIX - Gestione dei file. E.Mumolo, DEEI POSIX - Gestione dei file E.Mumolo, DEEI mumolo@units.it Gestione file Gestione file: generalità Un file per essere usato deve essere aperto (open) L operazione open: localizza il file nel file system

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli