Gestione dei file: filosofia. carica in memoria l i-node del file read / write. close cose rilascia le strutture dati di memoria del file
|
|
- Baldassare Tortora
- 8 anni fa
- Visualizzazioni
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 Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:
DettagliDigressione: 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
DettagliGestione 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
DettagliFile 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
DettagliFile 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
DettagliIl 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 è
DettagliGestione 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
Dettagli1. 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:
DettagliFiles, 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
DettagliScrivere 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);
DettagliInter-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
DettagliLaboratorio 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;
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
DettagliPer 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)
Dettagli1. 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
DettagliLink 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
DettagliCapitolo 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
DettagliInput-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.
DettagliLaboratorio 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
DettagliModulo 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
DettagliCORSO 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
DettagliLaboratorio 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
DettagliDigressione: 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
DettagliCORSO 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
DettagliSistemi 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
DettagliScrivere 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);
DettagliScrivere 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);
DettagliLaboratorio 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
DettagliLaboratorio 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
DettagliFiles 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,
DettagliChiamate 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
DettagliLaboratorio 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
DettagliCorso 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
DettagliCorso 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
DettagliTipi 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:
DettagliRecord 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
DettagliProgram 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
DettagliCREAZIONE 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
DettagliI/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
DettagliLaboratorio 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,
DettagliCapitolo 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
DettagliSistemi 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
DettagliDrivers. 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à
DettagliI 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à
DettagliProgrammazione 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
DettagliComandi. 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
DettagliIntroduzione 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
DettagliIl 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:
DettagliProgrammazione 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
DettagliInterfaccia 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
Dettagli12. 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
DettagliGestione 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
DettagliLaboratorio 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
DettagliLab. 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 -
DettagliSistemi 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);
DettagliModulo 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)
DettagliChiamate 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
DettagliStruttura 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
DettagliFile 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
DettagliModulo 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
DettagliIl 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
DettagliEsercitazione [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
DettagliIl 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:
DettagliSistemi 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
DettagliCorso 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/
DettagliIl 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
DettagliSistemi 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
DettagliModello 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
DettagliSystem 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,
DettagliCapitolo 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
DettagliSTRUTTURE 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
DettagliUniversità 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
DettagliIPC 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
DettagliOrganizzazione 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
DettagliSistemi 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
DettagliCAP.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
DettagliInterprocess 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
DettagliInter-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
DettagliAllocazione 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
DettagliLab. 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 -
DettagliSistemi 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
DettagliLaboratorio 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
Dettagli1. 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
DettagliIntroduzione 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
DettagliIl 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
DettagliChiamate 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
DettagliISTITUTO 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++ è
DettagliSistemi 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
DettagliMECCANISMI 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
DettagliAppunti 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.................................
Dettaglicostruttori 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,
DettagliSoftware 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
DettagliTipi 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
DettagliStruttura 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
DettagliCorso 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
DettagliCorso 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
DettagliIntroduzione 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,
DettagliPOSIX - 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
DettagliArchitettura 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