Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Sistemi Operativi Programmazione di Sistema e Concorrente"

Transcript

1 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

2 Argomenti della lezione Struttura del file system UNIX System calls System calls per la gestione dei files ANSI C - Input/Output System calls vs. chiamate a libreria Corso di Sistemi Operativi - Esercitazioni (Lez.3) 2

3 Files in UNIX 4 tipi di files: Regolari o ordinari Directory Pipe e Fifo Speciali rappresentano un device (block device o character device) non contengono dati, ma solo un puntatore al device è visto dal file system come una semplice sequenza di bytes (stream) può essere indicato con più di un nome, anche in directory diverse i nomi multipli sono detti link (hard link) e sono tutti equivalenti per il S.O. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 3

4 Struttura di un file E rappresentato da un inode, che contiene: attributi del file 15 puntatori a blocchi di dati contenuto del file I primi 12 puntano direttamente a blocchi Gli altri tre puntano a blocchi indiretti (single indirect block, double indirect block pointer, triple indirect block) Tutti gli inodes sono memorizzati in un array del file system detto i-list, di dimensione fissata L accesso ad uno specifico inode in una i-list (link) avviene attraverso un i-number (short int) Ogni file di un file system ha un i-number L inode di una directory contiene la lista dei files (inode) in essa contenuti (cambiano gli attributi) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 4

5 Attributi di un inode {-,d,b,c,p} UID (2/4 byte) GID (2/4 byte) date links_count rwx rwx rwx Sticky (1 bit) tipologia di file: normale, directory, block-device, character-device, pipe identificatori del proprietario e del suo gruppo ora dell ultima modifica e dell ultimo accesso al file contatore del numero di hard link al file permessi di accesso per proprietario, gruppo, altri (codifica ottale) per le directory rimuove la possibilità di cancellare files Corso di Sistemi Operativi - Esercitazioni (Lez.3) 5

6 Struttura di un inode Corso di Sistemi Operativi - Esercitazioni (Lez.3) 6

7 Accesso ad un inode Una system call indica il file a cui si vuole accedere tramite un file descriptor (int 0) Il file descriptor è utilizzato dal kernel per indicizzare una tabella di file aperti per il processo corrente Ogni entry della tabella contiene un puntatore ad una file structure (vnode) Essa, a sua volta, punta ad un inode Poiché la tabella dei files aperti ha una lunghezza fissa (impostabile solo al boot) c è un limite imposto al # di files aperti contemporaneamente nel sistema Corso di Sistemi Operativi - Esercitazioni (Lez.3) 7

8 Blocchi di controllo del file system blocchi di dati vnode inode read(4, ) 4 sync i-list tabella dei files aperti (locale al processo) tabella dei file structure (globale) i-list caricata in RAM spazio utente spazio di sistema spazio su disco Corso di Sistemi Operativi - Esercitazioni (Lez.3) 8

9 File table entry, vnode e inode Entry della tabella dei files: ce n è una per ogni file descriptor. Contiene informazioni come il puntatore al vnode del file corrispondente, e la posizione corrente del cursore di lettura/scrittura (file pointer) vnode: ce n è uno per ogni file fisico correntemente aperto: contiene un puntatore all inode del file (i-number), la dimensione del file, il numero di entry della tabella dei files che vi fanno riferimento, etc. inode: ce n è uno per ogni file su disco nella lista caricata in memoria vi sono campi aggiuntivi, fra cui il numero di file structures che vi puntano Corso di Sistemi Operativi - Esercitazioni (Lez.3) 9

10 System calls

11 Generalità Una system call è l unico modo di accedere al kernel del S.O. al fine di effettuare una operazione privilegiata o specifica per l hardware/sistema (in codice assembly) Ad ogni system call è associato un numero univoco In Linux (RedHat 8.0) sono definite 243 system calls (<asm/unistd.h>) #define NR_syscallname syscallnum Es: #define NR_open 5 Nel Darwin di MacOsX (<sys/syscall.h>) definite 363 syscalls Corso di Sistemi Operativi - Esercitazioni (Lez.3) 11

12 Implementazione 2 possibili invocazioni dirette: metodo syscall(syscallnum, args ) macro _syscalln definite in <asm/unistd.h> (sconsigliato); Fornite al programmatore attraverso delle funzioni interfaccia (stub), definite in genere nella libreria libc, con lo stesso nome della syscall; Entrambe memorizzano gli argomenti nei registri (limite max), cambiano il modo user in modo kernel (nell 80x86 interrupt 0x80), facendo sì che il kernel esegua il vero e proprio codice della syscall. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 12

13 Esempio Chiusura di un file Chiamata alla funzione in libc: #include <unistd.h> close(filedescriptor); Chiamata tramite macro: #include <unistd.h> _syscall1(int, close, int, filedescriptor); Chiamata diretta: #include <syscall.h> extern int syscall(int, ); syscall(sys_close, filedescriptor); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 13

14 Argomenti e valori di ritorno Il numero di argomenti può variare da 0 a 6, a seconda della system call invocata Valori di ritorno: ß 0 (o +), se la chiamata va a buon fine; ß -1, se vi sono stati degli errori (assegnano lo specifico codice di errore nella variabile globale errno, definita in <errno.h>) dichiarazione: extern int errno Con la funzione: include <stdio.h> void perror (char *str); si ottiene una descrizione dell errore nel formato: str: messaggio-di-errore \n Corso di Sistemi Operativi - Esercitazioni (Lez.3) 14

15 Principali system calls Classe System Call Gestione di file creat() open() close() read() write() lseek() dup() link() unlink() stat() fstat() chmod() chown() umask() ioctl() Gestione di processi fork() alarm() execx() signal() wait() kill() getpid() getppid() exit() Comunicazione fra processi msgget() msgrcv() msgctl() pipe() msgsnd() mkfifo() semget() semop() semctl() shmget() shmctl() shmat() Corso di Sistemi Operativi - Esercitazioni (Lez.3) 15

16 System calls per la gestione files in Unix

17 Descrittori speciali ed eredità di descrittori 0 standard input 1 standard output 2 standard error In <unistd.h>: aperti per default alla creazione di un processo i relativi file possono essere chiusi #define STDIN_FILENO 0 /* standard input file descriptor */ #define STDOUT_FILENO 1 /* standard output file descriptor */ #define STDERR_FILENO 2 /* standard error file descriptor */ Corso di Sistemi Operativi - Esercitazioni (Lez.3) 17

18 Creazione di file int creat(char *file_name, int mode) invoca la creazione di un file; se il file esiste già, rimuove il contenuto del file preesistente, coservando però i suoi diritti di accesso *file_name: puntatore alla stringa di caratteri che definisce il pathname del file da creare mode: specifica i permessi di accesso al file da creare il descrittore di file per l accesso al file creato (-1 se errore) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 18

19 creat(): errori parte del path della stringa *file_name non è una directory o non esiste la stringa *file_name corrisponde ad una directory esistente non si hanno permessi di accesso ad una delle directory specificate nel path *file_name è un puntatore nullo o punta a un indirizzo di memoria non valido per il processo è già stato raggiunto il # max di file che si possono aprire contemporaneamente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 19

20 creat(): esempio Creazione di un file di nome pippo, nella directory corrente, con permessi di lettura-scrittura per tutti gli utenti #include <stdio.h> void main() { } if(creat("pippo",0666) == -1) { printf("errore in chiamata creat\n"); exit(1); } Corso di Sistemi Operativi - Esercitazioni (Lez.3) 20

21 Apertura di un file int open(char *file_name, int option_flags [, int mode]) invoca l apertura di un file esistente è anche possibile invocare la creazione del file *file_name: puntatore alla stringa di caratteri che definisce il pathname del file da aprire option_flags: specifica la modalita di apertura (read, write etc.) mode: specifica i permessi di accesso al file in caso di creazione contestuale all apertura un descrittore per l accesso al file (-1 in caso di fallimento) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 21

22 Valori per option_flags L option_flags è espresso come combinazione (in bitwise or ) di 1 o più di questi valori, definiti in <fcntl.h>: O_RDONLY: apertura del file in sola lettura; O_WRONLY: apertura del file in sola scrittura; O_RDWR: apertura in lettura e scrittura; O_APPEND: apertura del file con puntatore alla fine del file; ogni scrittura sul file sarà effettuata a partire dalla fine del file; O_CREAT : crea il file con modalità d'accesso specificate da mode solo se esso non esiste; O_TRUNC : elimina il contenuto del file se esso già esiste; O_EXCL : (exclusive) serve a garantire che il file sia stato effettivamente creato dal processo che effettua la chiamata. N.B.: open( pippo, O_WRONLY O_TRUNC O_CREAT, 0660) creat( pippo, 0660) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 22

23 open(): errori parte del path della stringa *file_name non è una directory o non esiste non si hanno permessi di accesso ad una delle directory specificate nel path il file indicato non esiste e O_CREAT non è presente nella specifica di option_flags; il file indicato esiste già e in option_flags sono specificati O_CREAT e O_EXCL; il file indicato è un file di testo condiviso che è attualmente in uso; *file_name è un puntatore nullo o punta a un indirizzo di memoria non valido per il processo è già stato raggiunto il # max di file che si possono aprire contemporaneamente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 23

24 Chiusura di un file int close(int descriptor) invoca la chiusura di un file e l eventuale svuotamento del buffer descriptor: descrittore del file da chiudere -1 in caso di fallimento descriptor non corrisponde ad un canale di input/output aperto il S.O. chiude automaticamente i file ancora aperti alla terminazione di un processo Corso di Sistemi Operativi - Esercitazioni (Lez.3) 24

25 Lettura: read() int read(int descriptor, char *buffer* buffer,, unsigned size) invoca la lettura di un dato numero di caratteri (byte) da un file descriptor: descrittore relativo al file (aperto) da cui leggere *buffer: puntatore all area di memoria buffer dove memorizzare i byte letti size: quantità di byte da leggere un intero 0 indicante il numero di byte effettivamente letti (-1 se fail) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 25

26 read(): errori descriptor non corrisponde ad un canale di input/output aperto descriptor corrisponde ad un canale non aperto in lettura il buffer indicato, avente dimensione size non è contenuto interamente all interno dello spazio di indirizzamento del processo se il # di bytes letti > della dimensione del buffer, i caratteri in eccesso vengono scritti nell area di memoria esterna al buffer: se interna al processo errore non segnalato Corso di Sistemi Operativi - Esercitazioni (Lez.3) 26

27 Scrittura: write() int write(int int descriptor, char *buffer* buffer,, unsigned size) invoca la scrittura di un certo numero di caratteri su file descriptor: descrittore relativo al file su cui scrivere buffer: puntatore al buffer dal quale vengono prelevati i caratteri che si vogliono scrivere size: quantità di byte da scrivere il numero di byte effettivamente scritti (-1 in caso di fallimento) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 27

28 write(): errori descriptor non corrisponde ad un canale di input/output aperto descriptor corrisponde ad un canale non aperto in scrittura il buffer indicato, avente dimensione size non è contenuto interamente all interno dello spazio di indirizzamento del processo se il # di bytes scritti > della dimensione del buffer, vengono scritti su file anche i bytes contenuti nell area di memoria esterna al buffer la scrittura di X caratteri su un file esistente appena aperto, sostituisce i primi X caratteri di tale file, non effettua troncamento Corso di Sistemi Operativi - Esercitazioni (Lez.3) 28

29 Un esempio di applicazione: il comando cpcat Scrivere un programma che, attraverso la sintassi: cpcat file_sorg file_dest effettua una copia di file_sorg nominandola file_dest Se il file destinazione già esiste il sistema deve darne notifica all utente Se il file destinazione non viene specificato il sistema deve mostrare il file sullo standard output Corso di Sistemi Operativi - Esercitazioni (Lez.3) 29

30 Esempio Cosa accade eseguendo il seguente frammento di codice? #include<fcntl.h> int main() { int fd1, fd2; fd1 = open("file1", O_WRONLY O_CREAT O_TRUNC, 0644); fd2 = open("file1", O_WRONLY); write(fd1, Pippo", strlen( Pippo")); write(fd2, Ugo", strlen( Ugo")); } close(fd1); close(fd2); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 30

31 Posizionamento: lseek() int lseek(int descriptor, long offset, int option) modifica il valore del file pointer descriptor: descrittore relativo al file di cui spostare il pointer offset: numero di caratteri di cui viene spostato il file pointer option: indica il punto da cui calcolare lo spostamento SEEK_SET (=0): spostamento a partire da inizio file; SEEK_CUR (=1): spostamento a partire dal valore corrente del file pointer; SEEK_END (=2): spostamento a partire dalla fine del file; nuovo valore del file pointer (# di caratteri dall inizio del file), -1 se fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.3) 31

32 lseek() descriptor non corrisponde a nessun canale di input/output aperto; option ha un valore non ammesso il nuovo file pointer avrebbe un valore negativo Esempi: lseek(fd, 10, 0); /* Sposta di 10 byte dall inizio */ lseek(fd, 20, 1); /* Sposta di 20 byte in avanti */ lseek(fd, -10, 1); /* Sposta di 10 byte indietro */ lseek(fd, -10, 2); /* Sposta a 10 byte dalla fine */ lseek(fd, -10, 0); /* Errore (file pointer immutato) */ Corso di Sistemi Operativi - Esercitazioni (Lez.3) 32

33 Aliasing di file: link() int link(char *path_name, char *alias_name); invoca la creazione di un alias *path_name: puntatore alla stringa di caratteri che definisce il file di cui si vuole creare un alias *alias_name: puntatore alla stringa di caratteri che definisce il nome dell alias 0 in caso di successo, -1 se fallisce Corso di Sistemi Operativi - Esercitazioni (Lez.3) 33

34 link(): errori un componente del path_name: non è una directory non esiste supera i limiti *alias_name punta ad una stringa di caratteri che identifica un alias già esistente alias di directory possono essere creati solo dal superuser: *path_name punta ad una directory ed il processo non è un processo di superutente la directory di destinazione per l alias non è accessibile in scrittura Corso di Sistemi Operativi - Esercitazioni (Lez.3) 34

35 unlink() int unlink(char *alias_name); int unlink(char *alias_name); rimuove l alias indicato, e decrementa il contatore di riferimenti al corrispondente file (campo links_count dell inode) se links_count = 0 il file viene eliminato *path_name: puntatore alla stringa di caratteri che definisce il file di cui si vuole creare un alias *alias_name: puntatore alla stringa di caratteri che definisce il nome dell alias 0 in caso di successo, -1 se fallisce *alias_name identifica un alias inesistente l alias risiede in un file system a sola lettura Corso di Sistemi Operativi - Esercitazioni (Lez.3) 35

36 link() + unlink() = rinomina #include <stdio.h> main(int argc, char *argv[]) { if (argc!= 3) { fprintf(stderr, uso: %s vecchionome nuovonome\n, argv[0]); exit(1); } } if (link(argv[1], argv[2] == -1) { perror( errore in link ); exit(1); } if (unlink(argv[1]) == -1) { perror( errore in unlink ); exit(1); } Se la chiamata link fallisce allora esegue perror ed esce, altrimenti crea il link Se la chiamata unlink fallisce esegue perror ed esce, altrimenti elimina il vecchio link Corso di Sistemi Operativi - Esercitazioni (Lez.3) 36

37 Duplicazione di un descrittore In UNIX è possibile duplicare un descrittore di file esistente. Il nuovo descrittore: afferisce allo stesso file associato al descrittore originario; eredita lo stesso file pointer del canale originario; eredita la stessa modalità di accesso al file del canale originario Corso di Sistemi Operativi - Esercitazioni (Lez.3) 37

38 dup() int dup(int descriptor); int dup(int descriptor); invoca la duplicazione di un descrittore di file descriptor: descrittore di file che si vuole duplicare un intero positivo corrispondente al nuovo descrittore di file (-1 se errore) è il più piccolo indice libero della tavola dei files aperti descriptor non identifica un canale di I/O aperto è già stato raggiunto il # max di file apribili contemporaneamente dal processo Corso di Sistemi Operativi - Esercitazioni (Lez.3) 38

39 Esercizio Scrivere un programma che, dato un file HTML in ingresso, scriva (su STDOUT o su file) tutto il testo non contenuto in tag HTML < >. Si utilizzi il codice del programma CPCAT, modificandolo opportunamente. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 39

40 ANSI C Input e Output

41 Standard ANSI L ANSI ha definito una libreria di funzioni standard per il linguaggio C (ANSI-C) che riguardano: input/output, gestione delle stringhe, routines matematiche, ; I programmi che limitano la loro interazione con il sistema alle facilities fornite da tale libreria sono portabili su sistemi diversi; Le funzioni offerte da tale libreria sono dichiarate in diversi headers: <stdio.h>, <string.h>, <ctype.h>, <math.h>, ANSI C Standard Library Sistema UNIX Sistema Windows Sistema MAC Corso di Sistemi Operativi - Esercitazioni (Lez.3) 41

42 Standard Input e Output Stream di testo: sequenza di linee terminate da un carattere di newline Se il sistema non opera in questo modo, la libreria fa ciò che è necessario per far sembrare che lo faccia Ogni sorgente che utilizza una delle funzioni di Input/Output offerte dalla libreria deve includere l header stdio.h: #include <stdio.h> stdin, stdout, stderr per i 3 stream di default Corso di Sistemi Operativi - Esercitazioni (Lez.3) 42

43 putchar() e getchar() int putchar(int ch) Manda il carattere ch allo stdout Il carattere inviato o la costante EOF se vi sono degli errori EOF è definita in <stdio.h> (solitamente -1) int getchar(void) Legge un carattere dallo stdin e lo restituisce Se non vi sono più caratteri da leggere restituisce EOF Corso di Sistemi Operativi - Esercitazioni (Lez.3) 43

44 Esempio Questo programma converte l input in minuscolo: #include <stdio.h> #include <ctype.h> Contiene la dichiarazione di tolower() main() /* lower: converte l input in minuscolo */ { int c; while ((c = getchar())!= EOF) putchar(tolower(c)); return (0); } Corso di Sistemi Operativi - Esercitazioni (Lez.3) 44

45 Output formattato: printf() int printf(char *format, arg1, ); int sprintf(char *string, char *format, arg1, ); Stampa su schermo (o su stringa) una stringa formattata, costituita da due tipi di oggetti: caratteri ordinari: vengono stampati così come sono; specifiche di conversione: ognuna di esse definisce la conversione e la stampa del successivo argomento passato alla funzione Il numero di caratteri stampati Specifiche di conversione: %[-][min_width][.][precision][h/l][conver_char] Esempio: printf ( var1 = %d; var2 = %s,var1, s1); Stampa: var1 = 5; var2 = ciao, Ritorna: 21 Corso di Sistemi Operativi - Esercitazioni (Lez.3) 45

46 Caratteri di conversione Carat. d,i o x,x u c s f e,e g,g p Tipo arg. int int int int int char * double double double void * Stampato come Numero decimale Numero ottale unsigned (senza 0 iniziale) Numero esadecimale unsigned (senza 0x o 0X) Numero decimale unsigned Singolo carattere Stringa fino al carattere \0 o precision caratteri [-]m.dddddd, il numero di d è dato dalla precision [-]m.dddddd[e/e][+/-]xx %e o %E se l esponente è < di -4 o precision, altrimenti %f puntatore (rappresentazione dipendente dall implementazione) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 46

47 Input formattato: scanf() int scanf(char *format, arg1, ); int sscanf(char *string, char *format, arg1, ); Legge caratteri dallo stdin, interpretandoli in base alle specifiche di format, e le memorizza nei successivi argomenti (devono essere puntatori) Si ferma al termine di format, o quando uno degli input non soddisfa la specifica Il numero di variabili lette (ed assegnate) La stringa di formato può contenere: spazi e tabulazioni (non ignorati) caratteri ordinari (non %), che si aspettano di ricevere dallo stream di input specifiche di conversione: %[*][max_width][h/l/l][conver_char] Corso di Sistemi Operativi - Esercitazioni (Lez.3) 47

48 Esempio Programma che riconosce date nei formati: GG Mese Anno (20 Marzo 2003) GG/MM/AA (20/03/03) int giorno, mese, anno; char nomemese[20]; while (getline(linea, sizeof(linea), stdin) > 0) { if (sscanf(linea, %d %s %d, &giorno, nomemese, &anno) == 3) printf( Valido: %s\n, linea); else if (sscanf(linea, %d/%d/%d, &giorno, &mese, &anno) == 3) printf( Valido: %s\n, linea); else printf( Non valido: %s\n, linea); } Corso di Sistemi Operativi - Esercitazioni (Lez.3) 48

49 Manipolazione di stringhe Funzioni definite in <string.h>: strcat(s,t): concatena t alla fine di s strncat(s,t,n): concatena n caratteri di t alla fine di s strcmp(s,t): confronto, ritorna un numero negativo, nullo o positivo se s<t, s==t, s>t strncmp(s,t,n): confronta solo i primi n caratteri strcpy(s,t): copia t in s strncpy(s,t,n): copia al più n caratteri di t in s strlen(s): ritorna la lunghezza di s strchr(s,c): ritorna il puntatore alla prima occorrenza di c in s, o NULL se non presente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 49

50 Accesso ai file E possibile aprire ulteriori streams, oltre ai 3 standard forniti dal sistema, invocando: FILE *fopen(char* filename, char* mode); filename: stringa contenente il nome del file da aprire; mode: stringa che indica il tipo di accesso al file ( r lettura, w scrittura, a append, b binario) Fa un opportuna richiesta al S.O. e ritorna un puntatore da utilizzare nelle successive operazioni di lettura/scrittura Se il file indicato non esiste: se si accede in modo w o a il file viene creato; se si accede in modo r la funzione ritorna NULL; Corso di Sistemi Operativi - Esercitazioni (Lez.3) 50

51 Struttura FILE Il puntatore punta alla struttura FILE (definita in <stdio.h>), che contiene informazioni sul file aperto, tra cui: posizione del buffer posizione del carattere corrente nel buffer modalità di apertura file eventuali errori occorsi Anche stdin, stdout e stderr sono dei puntatori a FILE: sono assegnati dal S.O. all avvio di un programma e sono costanti Corso di Sistemi Operativi - Esercitazioni (Lez.3) 51

52 getc(), putc(), fscanf(), fprintf() int putc(int c, FILE *fp); int getc(file *fp); int fprintf(file *fp, char *format, ); int fscanf(file *fp, char *format, ); Sono le generalizzazioni a stream non standard di putchar(), getchar(), printf() e scanf(); Ridefinizione: #define getchar() #define putchar(c) getc(stdin) putc((c), stdout) #define printf(format, ) fprintf(stdout, format, ) #define scanf(format, ) fscanf(stdin, format, ) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 52

53 Chiusura di un file int fclose(file *fp); int fclose(file *fp); Rompe la connessione fra il puntatore ed il file creata con fopen(); Stesse considerazioni delle corrispondenti system calls: Limite massimo al numero di files aperti contemporaneamente chiudere i files non più utilizzati Scarica il buffer delle chiamate putc e getc E invocato automaticamente per ogni file aperto alla terminazione (normale) di un programma Corso di Sistemi Operativi - Esercitazioni (Lez.3) 53

54 System call vs Funzioni di libreria System calls Standard Posix (UNIX) Codice in kernel space Prestazioni (?) Funzioni: memoria input/output processi comunicazione sincronizzazione gestione eventi asincroni utilities Funzioni di libreria Standard ANSI (C) Codice in process space Portabilità Funzioni: memoria input/output gestione eventi asincroni utilities In UNIX implementate tramite system calls Corso di Sistemi Operativi - Esercitazioni (Lez.3) 54

55 Esercizio Realizzare il programma cpcat visto precedentemente, utilizzando esclusivamente funzioni standard ANSI C Corso di Sistemi Operativi - Esercitazioni (Lez.3) 55

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

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

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012

Esercitazione 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)

Dettagli

Introduzione al C. Stream e disk file

Introduzione 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:

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

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

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

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

Architettura degli elaboratori Docente:

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

Dettagli

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

I 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

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

I 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. 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

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

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

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

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Gestione 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

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno. Tipo File Per memorizzare un dato su un supporto magnetico come un hard disk o un nastro, o più in generale su un'unità di memoria di massa viene utilizzata un tipo di dato chiamato file. Un file può essere

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

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

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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:

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

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

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

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

Dettagli

I SISTEMI OPERATIVI (1)

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

Dettagli

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice

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

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

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

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

Dettagli

LP1 Lezione 13: i File in C. Maurizio Tucci

LP1 Lezione 13: i File in C. Maurizio Tucci LP1 Lezione 13: i File in C Maurizio Tucci mtucci@unisa.it 1 Il File: Dichiarazione Memorizzare dati in maniera non volatile In C (libreria ) è definito un tipo FILE che astrae il concetto di sequenza

Dettagli

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII Gestione dei files DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

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

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

CREAZIONE PROCESSI IN UNIX 20

CREAZIONE PROCESSI IN UNIX 20 CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.

Dettagli

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007 Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)

Dettagli

MATLAB: FILES. Informatica B/C - A.A. 2013/2014

MATLAB: FILES. Informatica B/C - A.A. 2013/2014 MATLAB: FILES Informatica B/C - A.A. 2013/2014 I FILE Contenitori di informazione: sequenze di byte associate ad un nome Sono memorizzati su memoria di massa (non-volatile) Possono continuare ad esistere

Dettagli

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Concetto di FILE Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file

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 dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

Sistemi Operativi: Programmazione di Sistema

Sistemi Operativi: Programmazione di Sistema Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2011/2012 Prof. Luca Ferrari e-mail: ferrari@dsi.unifi.it telefono: 055 4237454

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 6 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Interazione tra Processi I processi concorrenti possono interagire

Dettagli

Program m azione di Sistem a 2

Program 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

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

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca

Dettagli

Gestione dei processi

Gestione 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,

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

LabVIEW parte II. Ing. Gianfranco Miele  November 3, 2010 Ing. Gianfranco Miele (g.miele@unicas.it) http://www.docente.unicas.it/gianfranco_miele November 3, 2010 Le stringhe Una stringa è una sequenza di caratteri Ogni carattere ha una corrispondente codifica

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Shell BASH. Variabili Redirezione

Shell BASH. Variabili Redirezione Shell BASH Variabili Redirezione Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command

Dettagli

Quinta Esercitazione. Principali primitive di accesso ai File

Quinta Esercitazione. Principali primitive di accesso ai File Esempio: processi padre e figlio condividono di file aperti PRIMA della creazione Quinta Esercitazione Gestione File-System Segnali processo padre fork() Sistema tabella dei file attivi i-node Eugenio

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

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

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

Problema: calcolare il massimo tra K numeri

Problema: calcolare il massimo tra K numeri Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal

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

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell Lab. di Sistemi Operativi - Esercitazione - Comandi Shell 1 - Esercizi Comandi Unix - 2 Esercizio n 0 0a) creare una cartella EsercitazioneLSO-1 nella directory di lavoro 0b) creare un file testo chiamato

Dettagli

La sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);

La 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

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 VINCENZO MARRA Indice Esercizio 1 1 Leggere stringhe e caratteri 1 Esercizio 2 2

Dettagli

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla

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 File System Il gestore del file system è quel componente del Sistema Operativo che realizza i servizi

Dettagli

TUTORATO di LINGUAGGI I

TUTORATO di LINGUAGGI I TUTORATO di LINGUAGGI I Enrico Vianello TUTORATO di LINGUAGGI I contatti utili LE LEZIONI SI TERRANNO: VENERDI 12.30-14.30 PER INFORMAZIONI e DOMANDE: enrico.vianello@student.unife.it IL MATERIALE UTILIZZATO

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 4 ISC Esercizi per il recupero del debito formativo: Facendo esclusivamente uso delle istruzioni del linguaggio macchina mnemonico del microprocessore INTEL 8086 viste

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA 28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

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

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n').

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n'). 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

Dettagli

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Autore: Classe: Luciano VIVIANI QUARTA INFORMATICA (4IB) Anno scolastico: 2004/2005 Scuola: Itis Euganeo ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Questa dispensa non vuole essere un manuale di

Dettagli

File System I parte. File System

File System I parte. File System File System I parte File System Dati e Programmi sono organizzati mediante una struttura di files e directories: file: collezione di dati directory: collezione di file o di directory Il file system possiede

Dettagli

1.4: Il File System. File, directory, file system. Struttura e operazioni su file e directory. Implementazione delle directory

1.4: Il File System. File, directory, file system. Struttura e operazioni su file e directory. Implementazione delle directory 1.4: Il File System File, directory, file system Struttura e operazioni su file e directory Implementazione delle directory Struttura del file system Metodi di allocazione Gestione dello spazio libero

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

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA 28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente

Dettagli

File System. Capitolo Silberschatz

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

Dettagli

Esercizio sulla gestione di file in Unix

Esercizio sulla gestione di file in Unix Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante

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

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

Elementi base per la realizzazione dell unità di calcolo

Elementi base per la realizzazione dell unità di calcolo Elementi base per la realizzazione dell unità di calcolo Memoria istruzioni elemento di stato dove le istruzioni vengono memorizzate e recuperate tramite un indirizzo. ind. istruzione Memoria istruzioni

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO 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

Dettagli

Programmazione di Sistema 3

Programmazione di Sistema 3 Programmazione di Sistema 3 Gestione dei Processi Paolo Baldan Università Ca Foscari Venezia Corso di Laurea in Informatica Parte di questo materiale è rielaborato dalle slide del Corso di Laboratorio

Dettagli

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione.

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione. C6. REALIZZAZIONE DEL FILE SYSTEM Struttura del file system Un file è analizzabile da diversi punti di vista. Dal punto di vista del sistema è un contenitore di dati collegati tra di loro, mentre dal punto

Dettagli

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni WINDOWS95 1. Avviare Windows95 Avviare Windows95 non è un problema: parte automaticamente all accensione del computer. 2. Barra delle applicazioni 1 La barra delle applicazioni permette di richiamare le

Dettagli

Definizione di metodi

Definizione di metodi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe

Dettagli

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06. SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli