Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo:
|
|
- Iolanda Amore
- 6 anni fa
- Visualizzazioni
Transcript
1 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
2 File descriptors 3 File descriptor (fd) è un intero non negativo: 0 fd OPEN_MAX Un fd non è un file pointer (ANSI C) fopen, fclose usano FILE *file_pointer Ogni file aperto ha un file descriptor assegnato dal kernel Le system call di I/O identificano I file tramite I file descriptor Standard file 4 Ogni nuovo processo apre 3 file standard 1. Standard input 2. Standard output 3. Standard error e vi si riferisce con i tre file descriptor STDIN_FILENO = 0 STDOUT_FILENO = 1 STDERR_FILENO = 2 Costanti definite in <unistd.h> 2
3 SysCall: Open 5 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char* nome_file, int flag, ); int open(const char* nome_file, int flag); int open(const char* nome_file, int flag, mode_t permessi); Valore di ritorno: -1 se errore un file descriptor se OK char* nome_file = /a/b/c/pippo Open - parametri 6 int flag = sequenza di bit (13), OR di costanti <sys/stat.h>, esempio: O_WRONLY O_CREAT O_TRUNC Una ed una sola costante tra O_RDONLY (0), O_WRONLY (1), O_RDWR (2) Mentre le seguenti sono opzionali O_APPEND (1024), O_CREAT (64), O_EXCL (128), O_TRUNC (512), O_NOCTTY (256), O_NONBLOCK (2048), O_SYNC (4096) (SVR4) 3
4 Open parametri (2) 7 int permessi = 9 bit, , usati per O_CREAT -rwxr-xr-- users robdep user group other Mar 2 16:14 pippo S_IRUSR bit Read user 256 S_IWUSR bit Write user 128 S_IXUSR bit execute user 64 S_IRGRP bit Read group 32 S_IWGRP bit Write group 16 S_IXGRP bit execute group 8 S_IROTH bit Read others 4 S_IWOTH bit Write others 2 S_IXOTH bit execute others 1 Open - esempio 8 const char* nome_file = /a/b/c/pippo ; int flag = O_WRONLY O_CREAT O_TRUNC int permessi = S_IWUSR S_IRUSR S_IRGRP S_IROTH open(nome_file, flag, permessi); bash> cd /a/b/c bash> ls l pippo -rw-r--r-- users robdep 0 Mar 2 17:22 pippo 4
5 SysCall: Creat 9 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int creat(const char* nome_file, int permessi); restituisce un fd se OK, altrimenti -1 Equivalente a: open(nome_file, O_WRONLY O_CREAT O_TRUNC, permessi); In vecchie versioni di unix open poteva solo aprire un file, ma non crearlo SysCall: Write 10 #include <unistd.h> ssize_t write(int fd, const void* buffer, size_t nbyte); Restituisce numero di byte scritti se OK, altrimenti -1 Scrive i primi nbyte byte di buffer Scrive a partire dall offset corrente Offset incrementato del numero di byte scritti Normalmente il valore di ritorno è nbyte (in alcune circostanze potrebbe essere minore) 5
6 SysCall: Read 11 #include <unistd.h> ssize_t read(int fd, void* buffer, size_t nbyte); Restituisce:numero di byte letti se OK, 0 se file è finito -1 errore Legge nbyte byte, li scrive in buffer Se sono disponibili meno di nbyte nel file, legge solo i byte rimasti Syscall: Close 12 #include <unistd.h> int close(int fd); Valore di ritorno: -1 se errore 0 se OK Il kernel chiude I file quando il processo termina, quindi si potrebbe lasciar chiudere il file al kernel. E buona abitudine chiudere I file che si aprono. 6
7 File offset 13 file: sequenza di byte File offset offset Ogni file aperto ha un offset (intero 0) che fornisce la posizione nel file, cioe il numero di byte dall inizio del file Operazioni di lettura e scrittura partono dall offset corrente e causano un incremento pari al numero di byte letti o scritti Syscall: lseek 14 #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t n, int da_dove); Valore di ritorno: -1 se errore il nuovo offset se OK Il parametro da_dove può essere: SEEK_SET nuovo offset = n SEEK_CUR nuovo offset = vecchio offset + n SEEK_END nuovo offset = fine file + n 7
8 Lseek: note 15 Quando il file viene aperto l offset è inizializzato a 0, a meno che non venga usata O_APPEND Il parametro n può essere anche negativo, a patto che il nuovo offset non sia negativo Se l offset è > fine file, il file non viene allungato fino a quando non si scrive lseek - esempio 16 off_t offset; int fd = open( pippo, O_WRONLY O_CREAT, permessi); offset = lseek(fd, 10, SEEK_SET); offset = lseek(fd, 10, SEEK_CUR); offset = lseek(fd, 10, SEEK_END); write(fd, Ciao,4); offset = lseek(fd, 10, SEEK_END); File pippo: C i a o offset finale = 24 8
9 Efficienza di I/O 17 #include <unistd.h> #include <stdio.h> #include <errno.h> #define BUFFSIZE 8192 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); } Note 18 Il programma assume che STDIN_FILENO e STDOUT_FILENO siano aperti: il kernel apre per ogni processo stdin, stdout e stderr Il programma non chiude i file: il kernel li chiude quando il programma termina Efficienza: più grande è il buffer meno iterazioni servono. Tuttavia una volta raggiunto la grandezza dei blocchi di dati del filesystem non c è miglioramento dell efficienza di I/O (vedi Figura 3.1, Stevens). 9
10 Esercizi Osservare la ridirezione dell input nel programma 3.1. (pag. 52, Stevens) 2. Stampare il contenuto del file col buco creato dal programma 3.2 (pag 53, Stevens) usando il programma od. 3. Scrivere in un file la stringa , lasciare un buco di 10 byte e poi scrivere la stringa abcde. 4. Scrivere un programma che legga un file stampando in linee separate: numero byte: contenuto byte 5. Analizzare l efficienza di I/O (misurare quanto tempo si impiega a leggere un file grande al variare della grandezza del buffer) Rappresentazione file nel kernel 20 Il kernel mantiene: Tavola dei processi, tavola dei file e tavola dei v-nodi FD_CLOEXEC O_RDONLY O_WRONLY O_APPEND etc 10
11 Condivisione dei file Due o più processi possono condividere file 21 Note 22 Dopo ogni write, il file offset corrente nella file table viene aumentato del numero di byte scritti. Se diventa maggiore della grandezza (size), il file viene esteso (file size = offset) Se il file è aperto con O_APPEND, ogni volta che si usa write il file offset viene cambiato: diventa uguale alla grandezza del file (in pratica si scrive sempre alla fine del file) Lseek modifica solo il file offset nella file table 11
12 Dup e dup2 23 #include <unistd.h> int dup(int filedes); int dup2(int filedes, int filedes2); Valore di ritorno: -1 se errore il nuovo fd se OK Operazioni atomiche 24 Cosa succede se due processi scrivono lo stesso file? Meglio evitare. E se i due processi vogliono solo appendere dati alla fine del file? Un pò meglio ma Per scrivere alla fine del file normalmente: 1. Posizionare l offset all fine del file 2. Scrivere I dati Questo può creare problemi 12
13 Operazioni atomiche 25 Operazioni atomiche Sequenza di istruzioni tale che o tutte le istruzioni sono eseguite oppure nessuna istruzione è eseguita Quando si apre un file con il flag O_APPEND le operazioni di write diventano atomiche dup2 prima chiude filedes2 (se era aperto) e poi esegue filedes2 = filedes1. dup2 è atomica. Syscall: fcntl 26 #include <unistd.h> #include <sys/types.h> #include <fcntl.h> int fcntl(int filedes, int cmd,...); int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock * lock); Valore di ritorno: -1 errore dipende da cmd se OK 13
14 fcntl 27 cmd = F_DUPFD: duplica un descrittore esistente 2. F_GETFD / F_SETFD: prende/assegna i flag dei fd 3. F_GETFL / SETFL: prende/assegna i flag di stato dei file 4. F_GETOWN / F_SETOWN: prende/assegna il processo al quale vengono inviati i segnali SIGIO e SIGURG per I/O asincrono (usato per file speciali) F_GETLK, F_SETLK o F_SETLKW: non li studiamo fctnl 28 newfd = fcntl(fd, F_DUPFD); fdflag = fcntl(fd, F_GETFD); Un solo flag: FD_CLOEXEC, se 1 il fd viene chiuso dopo una exec vecchio_fdflag = fcntl(fd, F_SETFD, nuovo_flag); fcntl(fd, F_SETFL, arg); solo O_APPEND, O_NONBLOCK, O_SYNC possono essere modificati statusflags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETOWN, pid); 14
15 fcntl - esempio 29 #include <sys/types.h> #include <fcntl.h> #include <stdio.h> #include <stdarg.h> int main(int argc, char *argv[]) { int accmode, val; if (argc!= 2) { printf("usage: %s <descriptor#>\n",argv[0]); exit(1);} if ( (val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0) { perror("errore in fcntl"); exit(1); } accmode = val & O_ACCMODE; if (accmode == O_RDONLY) printf("read only"); else if (accmode == O_WRONLY) printf("write only"); else if (accmode == O_RDWR) printf("read write"); else { printf("access mode sconosciuto"); exit(1); } if (val & O_APPEND) printf(", append"); if (val & O_NONBLOCK) printf(", nonblocking"); #if!defined(_posix_source) && defined(o_sync) if (val & O_SYNC) printf(", synchronous writes"); #endif putchar('\n');exit(0); } Esercizi Scrivere un programma che copia un file in un altrousandosolo getchar e putchar, senza sfruttare la ridirezione offerta dalla shell (cioè non usare copia < file1 > file2 ) Suggerimento: duplicare gli standard file descriptor con dup e dup2 2. Ripetere l esercizio precedente facendo in modo che dopo la copia la funzione printf stampi normalmente su stdout. 15
16 Esercizi Scrivere un programma che prende input dalla tastiera e lo scrive in un file il cui nome è fornito sulla linea di comandi (command line). 4. Scrivere un programma che copia in ordine inverso il contenuto di un file in un altro file e sul terminale (i nomi dei file vengono forniti sulla linea di comandi). 16
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
DettagliFile 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
DettagliEsercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012
Sommario: Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - System Call Parte 1 open (apertura file) creat (creazione file) close (chiusura file) write (scrittura file) read (lettura file)
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
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);
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
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
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
DettagliIl File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Il File-System I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 File System Il file-system è uno degli aspetti più visibili di un sistema operativo
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
DettagliSystem calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc.
Le System Calls System calls permettono ai programmi utente di richiedere servizi al Sistema Operativo servizi come scrittura di file, stampa su video, ecc. corrispondenti procedure di libreria GNU C Library
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
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 Gestione
DettagliIgino Corona
Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliChiamate di sistema. Pipe Flussi di I/O
Chiamate di sistema Pipe Flussi di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);
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);
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 -
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
DettagliComunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)
Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Le pipe sono canali di comunicazione unidirezionali Limitazione pipe: permettono la comunicazione solo
DettagliCapitolo 5 -- Stevens
Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano
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/
DettagliESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata)
ESERCIZI RISOLTI IN C LANGUAGE (programmazione avanzata) 1. Gestione file a basso livello 1) Scrivere un programma che carichi in un file binario, gestito a basso livello, una serie di numeri interi contenuti
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
DettagliArgomenti della lezione. Generalità. System calls. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente
Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione III Gestione dell Input/Output System Calls Argomenti
DettagliUNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica
UNIX file system: organizzazione logica / Il File System di UNIX omogeneità: tutto è file tre categorie di file file ordinari direttori bin.profile etc usr dev anna file1 paolo mbox dispositivi fisici:
DettagliPOSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano:
POSIX Systems Programming Syscall e fondamenti della ambienti POSIX programmazione in By lord_dex f.apollonio@salug.it ZEI e Salug! presentano: geek evening 0x0d INDICE Processi e Thread Creazione ed utilizzo
DettagliA.1 Programma di comunicazione su porta seriale
Appendice A Programmi di gestione dell apparato A.1 Programma di comunicazione su porta seriale /* INCLUDE */ #include #include #include #include #include
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
DettagliCorso di Sistemi Operativi Programmazione di Sistema e Concorrente
Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione III Gestione dell Input/Output System Calls Argomenti
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
DettagliFile binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
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
DettagliLa Comunicazione tra Processi in Unix
La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire
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 è
DettagliProgram m azione di Sistem a 2
Program m azione di Sistem a 2 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
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 -
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
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
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
DettagliSmallShell Piccolo processore comandi
SmallShell Piccolo processore comandi /* file smallsh.h */ #include #include #define EOL 1 #define ARG 2 #define AMPERSAND 3 #define SEMICOLON 4 #define RIDIRIN 5 #define RIDIROUT 6
DettagliDirectory. Le directory unix sono file.
Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con
DettagliProcessore Danilo Dessì. Architettura degli Elaboratori.
Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
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
DettagliProgram m azione di Sistem a 5
Program m azione di Sistem a 5 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
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 2 luglio 2015 (Turno 1) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliGestione dei file. Linguaggio ANSI C Input/Output - 13
Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni
DettagliI file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti
DettagliIgino Corona
Sistemi Operativi Esercitazione 2: Richiami di programmazione in linguaggio C/C++ Igino Corona igino.corona@diee.unica.it martedi 7 Ottobre 2008 Linguaggi di programmazione Un linguaggio di programmazione
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
Dettagli8. IL FILE SYSTEM. 1. I servizi per la gestione dei file
IL FILE SYSTEM 8. IL FILE SYSTEM In tutti i sistemi operativi il File System costituisce una parte molto rilevante del codice complessivo, ma noi lo tratteremo abbastanza brevemente, perchè dal punto di
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
DettagliFilesystem. Introduzione Struttura logica Struttura fisica
Filesystem Introduzione Struttura logica Struttura fisica Filesystem Il filesystem E' un modulo del sistema operativo che si occupa di fornire una astrazione ai meccanismi di memorizzazione di massa Si
DettagliSezione 2: chiamate di sistema
a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Sezione 2: chiamate di sistema os16: _Exit(2)..........................................1402 os16: _exit(2)........................................
DettagliE.Mumolo, DEEI
E.Mumolo, DEEI mumolo@units.it Il comando gcc c file.c compila file.c, segnala eventuali errori e scrive il risultato della compilazione (oggetto) nel file.o il comando viene ripetuto per tutti i file
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:
DettagliIntroduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.
Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma
DettagliPipe con nome. [Pagina intenzionalmente vuota] 1: Pipe con nome ( ) slide 1:1/22 (p.1)
Pipe con nome [Pagina intenzionalmente vuota] (10 3 2003) slide 1:1/22 (p.1) Pipe tradizionali int pipe(int filedes[2]); Crea una pipe e restituisce due descrittori di file: fildes[0] aperto in lettura
DettagliProcessi in UNIX. Spazio di sistema (residente) Tabella dei. file APERTI OPEN FILE. Tabella dei codici
Processi in UNIX Spazio di sistema (residente) 1 i Tabella dei processi CODE Tabella dei file APERTI ACTIVE FILE PROCESS Tabella dei codici OPEN FILE Tabella dei file ATTIVI Spazio di utente (swappable)
DettagliStruttura interna del sistema operativo Linux. Il file system. -revisione del 30 marzo 2004
Struttura interna del sistema operativo Linux Il file system -revisione del 30 marzo 2004 File System Il file system è il componente del sistema operativo che realizza i servizi di gestione dei file file:
DettagliI files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
DettagliGESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliSulla libreria standard, III. Manipolare file con stdio.h
Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliCAP.8: Il file system
Struttura interna del sistema operativo Linux CAP.8: Il file system Primitive per la gestione dei file File System Il gestore del file system è quel componente del Sistema Operativo che realizza i servizi
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,
DettagliIntroduzione al C. Stream e disk file
Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:
DettagliLibreria POSIX. «70.1 File «sys/types.h» File «sys/stat.h»
1307 Libreria POSIX Capitolo 70 70.1 File sys/types.h»............. 1312 70.2 File sys/stat.h»................................. 1315 a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com
DettagliCapitolo 70. Libreria POSIX
543 Libreria POSIX Capitolo 70 70.1 File sys/types.h».............. 545 70.2 File sys/stat.h».................................. 546 70.2.1 Macro-variabili per la definizione del contenuto di un valore
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
DettagliIntroduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream
DettagliLABORATORIO di Reti di Calcolatori
LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione
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
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
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
Dettagliprincipali componenti di un calcolatore La memoria secondaria La memoria secondaria Unita disco consolle CPU stampante
principali componenti di un calcolatore LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica macchina di Von Neumann Sistemi Operativi : memoria secondariae file system Marco Lapegna Dipartimento
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
DettagliIl processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;
La creazione di un nuovo processo in UNIX int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la fork Solo il valore
DettagliProgrammazione su sistemi UNIX
Programmazione su sistemi UNIX Sistemi Operativi Mario Di Raimondo C.d.L. in Informatica (laurea triennale) Dipartimento di Matematica e Informatica Catania A.A. 2009-2010 Mario Di Raimondo (DMI) Programmazione
DettagliProva in itinere 7 Giugno 2016 Università di Salerno
Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2015-2016 Prova in itinere 7 Giugno 2016 Università di Salerno 1. Codice comportamentale. Durante questo esame si deve lavorare da soli. Non si puó consultare
DettagliEsercizi di Verifica Aprile 2005 Università disalerno
Laboratorio di Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2004-2005 Esercizi di Verifica Aprile 2005 Università disalerno Nome e Cognome: Matricola: Classe 1 Classe 2 p-p p-d 1 2 3 4 5 6 7 tot /10
DettagliIl file system. dell 11. -Revisione. l 11 Aprile 2005
Struttura interna dei sistemi operativi unix-like Il file system -Revisione dell 11 l 11 Aprile 2005 File System Il file system è il componente del sistema operativo che realizza i servizi di gestione
DettagliSystem call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
DettagliLa sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);
int pipe(int fd[2]); Le pipe sono canali di comunicazione unidirezionali che costituiscono un primo strumento di comunicazione (con diverse limitazioni), basato sullo scambio di messaggi, tra processi
DettagliEsercitazione di Lab. di Sistemi Operativi a.a. 2012/2013. - I processi Unix -
Esercitazione di Lab. di Sistemi Operativi a.a. 2012/2013 - I processi Unix - 1 Sommario Gestione dei processi: Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait Esercizi: fork fork
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
DettagliLaboratorio di Sistemi Operativi. System Call
Laboratorio di Sistemi Operativi System Call Renzo Davoli Alberto Montresor Copyright 2001-2005 Renzo Davoli, Alberto Montresor Permission is granted to copy, distribute and/or modify this document under
DettagliFile. Gestione memoria - 19/01/2003 1/11
File L informazione memorizzata in RAM non soddisfa alcuni requisiti: volume elevato (eventualmente > VM) persistenza / stabilità (rispetto a processi / crash / power out) condivisione / accesso simultaneo
DettagliGestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi
DettagliFile e puntatori a file
File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di
DettagliI File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.
I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un
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
DettagliProgrammazione di sistema in Linux: System Call per le IPC (InterProcessCommunication) E. Mumolo
Programmazione di sistema in Linux: System Call per le IPC (InterProcessCommunication) E. Mumolo Tipi di IPC PIPE FIFO Shared Memory shm_open() + mmap(), shm_unlink(), munmap() Semafori sem_open(), sem_close(),
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
DettagliGestione dei processi
Gestione dei processi Dormire unsigned int sleep(unsigned int); Attende un numero specificato di secondi a meno che non si verifichi un segnale Restituisce 0 se l'attesa è terminata senza interruzioni,
DettagliLibrerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
Dettagli