ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX"

Transcript

1 ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi al Politecnico di Torino negli anni scorsi. Si è cercato di scegliere esercizi che privilegiassero l utilizzo delle system calls Unix, a discapito di quelli che, invece, fossero più basati sul corretto utilizzo della programmazione in C, utilizzando notevoli porzioni di testo tramite funzioni e istruzioni già viste nel corso di Fondamenti di Informatica.

2 Funzioni di Libreria C di Unix!"Duplicazione di un processo chiamante Int figlio Figlio=fork() La funzione fork() genera un processo figlio avente le stesse caratteristiche del padre, è cioè una funzione che stabilisce relazioni di tipo gerarchico. Il figlio eredita tutte le caratteristiche del padre, pur restandone distinto e potendo evolversi indipendentemente. Il risultato delle funzione fork() è il descrittore del figlio, pertanto, se tale valore è pari a 0, vuol dire che il processo figlio è stato creato correttamente (in valore minore di 0 vuole dire che la fork ha fallito l esecuzione) e, utilizzando la seguente sequenza di istruzioni If(figlio==0).... posso specificare una sequenza di istruzioni che deve eseguire solo il figlio Nello stesso modo, posso indicare il processo padre come segue: If(figlio==0) Codice relativo al figlio Codice relativo al padre Ho ovviamente supposto che la fork abbia fornito risultato positivo, altrimenti la non funziona correttamente, comprendendo fra le parentesi graffe anche l erronea esecuzione della fork (figlio <0) Dopo la fork() persistono due processi: il padre ed il figlio. Si ricorda che, qualora debba eseguire due fork, perché, ad esempio, il padre genera 2 figli, non posso eseguire le due fork una dopo l altra, altrimenti perdo il descrittore del processo padre che ha generato al fork.!"apertura di files già presenti su memoria di massa Int fd, flags Char *nome Fd=open(nome,flags) nome rappresenta il nome del file, flags rappresenta la modalità di apertura dello stesso, cioè R(read), W(write) e R/W(read write) e fd rappresenta il descrittore del file. Si ricorda che, come è prassi nel linguaggio C, il valore restituito dalla funzione open in fd vale 0 se il file viene aperto correttamente.

3 !"Creazione di un file int fd, perm char *nome fd=creat(nome,perm) perm rappresenta le modalità di protezione con cui viene creato un file. Normalmente il parametro formale perm viene passato tramite un numero intero, definito nella sezione #define PERM.. Affinché il programma associ correttamente a tale intero bisogna includere la libreria standard <fcntl.h> Si ricorda che, come è prassi nel linguaggio C, il valore restituito dalla funzione in fd vale 0 se il file viene creato correttamente.!"lettura di un file letto=read(fd,buf,n) int fd, n, letto char *buf fd rappresenta il descrittore del file (ovviamente già aperto o, eventualmente, creato), n è il numero di byte da leggere, mentre buf rappresenta l area di memoria su cui depositare il file. Se indichiamo al posto di fd il numero intero 0, vuol dire che la funzione legge dallo standard I/O, cioè dalla tastiera. Si ricorda che, come è prassi nel linguaggio C, il valore restituito dalla funzione rappresenta il numero di caratteri letti (quindi deve essere pari ad n).!"chiusura di un file int fd, fine fine=close(fd) Tale funzione restituisce valore 0 se il file, identificato da fd, viene chiuso correttamente. Qualora restituisca un valore <0 vuol dire che il file era già stato chiuso.!"scrittura di un file scritto=write(fd,buf,n) int fd, n, scritto char *buf tale funzione è ovviamente la duale di quella di lettura, preleva n dati da buf e li scrive sul file descritto da fd. Lo standard I/O, cioè il video o la stampante, viene indicato con il numero intero 1. Si ricorda che, come è prassi nel linguaggio C, il valore restituito dalla funzione rappresenta il numero di caratteri scritti (quindi deve essere pari ad n).!"comunicazione fra processi: la pipe ret=pipe(canale) int ret, canale[2]

4 L uso delle pipe consente di sincronizzare due processi in relazione gerarchica fra loro, creando un meccanismo di comunicazione accessibile in lettura da una parte e in scrittura dall altra. La sincronizzazione è garantita dal fatto che la pipe si blocca in lettura se è vuota, mentre si blocca in scrittura se è piena. Canale[0] identifica che la pipe è aperta in lettura, quindi un processo può leggere dalla pipe. Canale[1] identifica che la pipe è aperta in scrittura, quindi un processo può scrivere sulla pipe. In altre parole canale[0] e canale[1] rappresentano 2 file, sincronizzati dalla pipe, di cui uno accessibile solo in lettura, l altro solo in scrittura.!"segnali di sincronizzazione signal (tiposegnale,func) pause() La funzione signal predispone il sistema alla ricezione di un segnale di tipo tiposegnale, fornendone la risposta tramite la funzione func. Qualora arrivi un segnale, il processo risponde tramite la func. I segnali di Unix sono contenuti nella libreria standard <signal.h>. La funzione pause() sospende il processo in attesa dell arrivo di un segnale. kill (identificatore,tiposegnale) La funzione kill consente ad un processo di inviare al processo identificato da identificatore un segnale di tipo tiposegnale. Si ricorda l uso delle funzioni di libreria identificatore=getpid(), con cui un processo può conoscere il suo descrittore e la funzione identificatore=getppid(), con cui un processo può conoscere il descrittore del processo padre.!"uscita da un processo Int status void=exit(status) Il processo termina e comunica attraverso il parametro status la sua terminazione (0 tutto OK, -1 terminazione erronea) La terminazione di un processo può servire per comunicare il parametro ad un altro processo che è in attesa della stessa.!"attesa della terminazione di un processo Int status, fd fd=wait(&status) Nel parametro fd viene restituito il descrittore del file che è terminato, poiché ha comunicato al processo chiamante il suo stato di terminazione (status) La funzione wait è sospensiva e predispone il processo chiamante all attesa della terminazione di un altro processo. Quest ultimo, tramite la funzione exit(status), può comunicare la sua terminazione e sbloccare il processo chiamante.

5 Esercizio 1: Si scriva un programma C per ambiente Unix tale che venga emulata una struttura di processi organizzati master-slave; si supponga di dover gestire 3 slave. Ogni slave deve mandare un segnale di tipo SIGUSR1 al master; tale messaggio può essere mandato solo previa autorizzazione del master mediante un segnale di tipo SIGUSR2. Quando il master ha ricevuto tutti e tre i messaggi, uccide gli slave con un messaggio di tipo SIGKILL. La logica del programma è la seguente: a) Ogni slave deve inviare la master un segnale di tipo sigusr1(sincronizzazione) b) Tale messaggio può essere inviato solo dopo che il master ha autorizzato lo slave tramite un segnale di tipo sigusr2 (sincronizzazione) c) Quando il master ha ricevuto tutti e tre i messaggi, uccide (cioè fa terminare ) i tre processi slave (da lui generati!!!), tramite un segnale di di tipo sigkill #include <stdio.h> #include <signal.h> void func1(void); void func2(void); void func1() \*predisposizione di risposta al segnale inviato dallo slave*\ printf( ho ricevuto un messaggio dallo slave \n ); void func2() \*predisposizione di risposta al segnale inviato dal master*\ printf( ho ricevuto un messaggio dal master \n ); main() Int pid1, pid2, pid3 pid1=fork(); \* il processo chiamante genera il primo slave *\ If(pid1==0) \* se primo slave *\ signal (sigusr2,func2); \*se arriva un segnale di tipo sigusr2, rispondo con *\ \* func2 *\ pause (); \*attendo un segnale*\ kill (getppid(),sigusr1); \*invio un segnale sigusr2 al padre *\ pause() \*attendo un segnale*\ pid2=fork(); \* il processo chiamante genera il secondo slave *\ If(pid2==0) \* se secondo slave *\ signal (sigusr2,func2); pause (); kill (getppid(),sigusr1); pause()

6 pid3=fork() \* genero il terzo slave *\ If(pid3==0) \* se terzo slave*\ signal (sigusr2,func2); pause (); kill (getppid(),sigusr1); pause() \*processo padre (master)*\ signal (sigusr1,func1) \*predispongo la risposta al sigusr1*\ kill (pid1,sigusr2) \*invio sigusr2 al primo slave*\ pause() \*resto in attesa di una risposta*\ signal (sigusr1,func1) \*predispongo la risposta al sigusr1*\ kill (pid2,sigusr2) \*invio sigusr2 al secondo slave*\ pause() \*resto in attesa di una risposta*\ signal (sigusr1,func1) \*predispongo la risposta al sigusr1*\ kill (pid3,sigusr2) \*invio sigusr2 al terzo slave*\ pause() \*resto in attesa di una risposta*\ kill (pid1, sigkill); \*uccido il primo slave*\ kill (pid2, sigkill); \*uccido il secondo slave*\ kill (pid3, sigkill); \*uccido il terzo slave*\ Exit(0); \*termino regolarmente*\

7 Esercizio 2 La logica del programma è la seguente: a) Il processo 1 deve leggere 5 caratteri da tastiera b) Deve mettere (scrivere) tali caratteri nella mailbox (mail2.txt) c) Deve avvisare il processo 2 tramite un segnale di tipo sigusr1 Il processo 2 deve a) Leggere la posta b) Invertire l ordine dei caratteri c) Inserire la stringa invertita nella mailbox mail1.txt #include <signal.h> #include <stdio.h> #include <fcntl.h> #define PERM 0766 void func (void) void func() printf( ho inserito un messaggio nella mailbox\n ); main() int fd1,fd2,pid,buf1[5],buf2[5],i,j,status; fd1=creat( mail1.txt,perm); \* creo i file su cui depositare i dati*\ fd2=creat( mail2.txt,perm); Pid=fork(); \*genero il figlio*\ If(pid==0) \*il processo figlio*\ read(0,buf1,5); \*legge 5 caratteri da tastiera (0) e li deposita sul *\ \* buf1*\ write (fd2,buf1,5); \*scrive tali caratteri sul file mail2.txt *\ kill(getppid(),sigusr1); \*invio un segnale di sincronizzazione la padre *\ close(fd2) \* chiudo il file mail2.txt *\ wait(&status)); \*il processo resta in attesa della terminazione *\ \* del secondo*\

8 Else \* padre*\ signal (sigusr1,func); \*predispongo la risposta al segnale*\ pause(); \*resto in attesa di un segnale*\ fd2=open ( mail2.txt,o_rdonly); \*apro il file mail2.txt in sola lettura*\ read (fd2,buf1,5); \* leggo il contenuto e lo deposito su buf1*\ j=4; for(i=0,i<5,i++) buf2[j]=buf1[i]; \* inverto i caratteri inserendoli in buf2*\ j=j-1; close(fd2); \* chiudo il flie*\ write (fd1,buf2,5); \* scrivo sulla mail1.txt*\ close (fd1); \* chiudo il file mail1.txt *\ exit(0); \*esco e comunico la terminazione regolare (0) *\

9 Esercizio 3: Si scriva un programma C per ambiente Unix tale che venga realizzata una struttura padre-figlio. Il processo padre, ogni 5 secondi, manda un segnale di tipo sigusr1 al figlio e poi si sospende in attesa di una risposta dal figlio stesso. Il figlio, ricevuto il segnale, legge un carattere da tastiera. Se il carattere è q o Q il figlio invierà al recesso padre un messaggio di tipo sigkill e poi terminerà, altrimenti, manda al padre un messaggio di tipo sigusr2 che lo sblocca. La logica del programma è la seguente: il padre: ogni 5 secondi invia un segnale di tipo sigusr2 e attende una risposta dal figlio il figlio: a) Resta in attesa del segnale; b) legge da tastiera un carattere; c) se il carattere è q o Q uccide il padre e poi termina, altrimenti gli invia un segnale che lo sblocca #include <signal.h> #include <stdio.h> #define timeout 5 void func1 (void) void func1() printf( ho ricevuto un messaggio\n ); main() int pid, status,buf[1] status =1; pid=fork(); if(pid!=0) do while (status=1) \* genero il figlio*\ \* processo padre*\ kill (pid=0, sigusr1); sleep (timeout); wait (&status); signal(sigusr1,func1); pause(); read (0,buf,1); if((buf== q )//(buf== Q )) kill(getppid,sigkill); exit(-1);

10 exit(0);

11 Esercizio 4 #define PERM 0600 #include<fcntl.h> main() int I, j, pid, canale[2], tab[10], status, fd pipe (canale); \* genero la pipe *\ pid=fork(); \* genero il processo figlio *\ if(pid!=0) \* processo padre*\ close (canale[0]); \* chiudo la pipe in lettura*\ i=3; for (j=0,j<10,j++) \* genero la tabellina del 3*\ tab[j]=i; i=i+3; write(canale[1],tab,10]; \* scrivo sulla pipe *\ wait(&status); \* attendo la terminazione del figlio*\ \* processo figlio *\ close(canale[1]); \* chiudo la pipe in scrittura*\ fd=creat( tab_3.txt,perm); \*creo il file *\ read (canale[0],tab,10); \* leggo la pipe *\ write (fd,tab,10); \*scrivo sul file *\ close(fd); \* chiudo il file *\ exit(0); \* comunico la terminazione *\

12 Esercizio 5 main() int I, j, pid, canale1[2], canale2[2], tab[10], somma [1], status, valore, pipe (canale1); \* genero la prima pipe *\ pipe (canale2); \* genero la seconda pipe *\ pid=fork(); \* genero il processo figlio *\ if(pid>0) for (i=0;i<10,i++) \* processo padre*\ valore =rand(); \*genero il valore casuale*\ tab[i]=valore; \*scrivo il valore su tab[i] *\ \* chiudo la pipe1 in lettura*\ \* chiudo la pipe2 in scrittura*\ close (canale1[0]); close (canale2[1]); write(canale1[1],tab,10); \* scrivo sulla pipe 1 *\ wait(&status); \* attendo la terminazione del figlio*\ read(canale2[0],somma,1); \* leggo dalla pipe 2 la somma*\ exit(0); \*processo figlio *\ close (canale1[1]); close (canale2[0]); somma[0]=0; read(canale1[0],tab,10); for (j=0;j<10,j++) write (canale2[1],somma,1]); exit(0); somma[0]=somma[0]+tab[j]; \* chiudo la pipe1 in scrittura*\ \* chiudo la pipe2 in lettura*\ \*inizializzo la somma*\ \* leggo dalla pipe 1 la tabella*\ \*genero la somma*\ \*scrivo la somma sulla pipe2*\ \* comunico la terminazione*\

13 Esercizio 6 Si scriva un programma C per ambiente Unix in cui il padre crea due processi figli. Il primo figlio legge 5 caratteri da tastiera e li passa al secondo, che, al termine, invia la fratello un messaggio di avvenuta ricezione. Il padre aspetta la terminazione dei figli e segnala l ordine con cui terminano. #include <signal.h> #include <stdio.h> void func1 (void) void func1() printf( ho ricevuto un messaggio\n ); main() int figlio1, figlio2, figlio, canale[2], tab[5], status pipe (canale1); \* genero la pipe *\ figlio1=fork(); \* genero il primo processo figlio *\ if(figlio1<0) printf( fork fallita\n ); \*segnalo l errore sulla fork*\ exit(-1); if(figlio1==0) \*primo figlio*\ close(canale[0]); \* chiudo la pipe1 in lettura*\ read(0,tab,5); \*leggo 5 caratteri da tastiera (0) e li *\ \*deposito su tab*\ write (canale[0];),buf1,5); \*scrivo sulla pipe*\ signal(sigusr1,func1); \*predispongo la ricezione del *\ \*segnale*\ pause(); \*resto in attesa*\ exit(0); \*esco regolarmente*\ \*codice del padre*\ figlio2=fork(); \* genero il secondo processo figlio *\ if(figlio2<0) printf( fork fallita\n ); \*segnalo l errore sulla fork*\ exit(-1); if (figlio2==0) \*secondo figlio*\ close(canale[1]); \* chiudo la pipe1 in scrittura*\ read(canale[0],tab,5); \*leggo 5 caratteri dalla pipe e li *\ \*deposito su tab*\ kill(figlio1,sigusr1); \*invio il segnale al primo figlio*\

14 exit(0); \* padre*\ figlio=wait(&status); \*aspetto la terminazione*\ if(figlio==figlio1) \ha terminato il primo figlio*\ printf( ha terminato il primo figlio\n ); if (figlio==figlio2) printf( ha terminato il secondo figlio\n ); wait(&status); printf(ha terminato anche l altro figlio\n );

15 Esercizio 7 La logica del programma è la seguente: a) il padre legge 2 numeri da tastiera b) passa il primo numero al figlio che calcola il fattoriale. c) Il figlio restituisce il risultato al padre, che gli passa il secondo numero d) Mentre il figlio calcola il fattoriale il padre scrive il primo risultato sul file fattorial.txt, creato con permessi e) Il figlio passa il secondo risultato al padre che lo scrive sul file fattorial.txt. #define PERM 0666 #include <stdio.h> main() int figlio, canale1[2], canale2[2], num1[1], num2[1], fat1[1], fat2[1], fd, i pipe (canale1); \* genero la prima pipe *\ pipe (canale2); \* genero la seconda pipe *\ figlio=fork(); \* genero il primo processo figlio *\ if(figlio<0) printf( fork fallita\n ); \*segnalo l errore sulla fork*\ exit(-1); if(figlio>0) \processo padre*\ close (canale1[0]); \* chiudo la pipe1 in lettura*\ close (canale2[1]); \* chiudo la pipe2 in scrittura*\ read (0,num1,1) \leggo da tastiera il primo numero*\ read (0,num2,1) \leggo da tastiera il secondo numero*\ write(canale1[1],num1,1); \* scrivo sulla pipe 1 il primo numero*\ read(canale2[0],fat1,1); \* leggo dalla pipe 2 il primo risultato*\ write(canale1[1],num2,1); \* scrivo sulla pipe 1 il secondo numero*\ fd=creat ( fattorial.txt,perm); \creo il file su cui depositare i dati*\ write(fd,fat1,1); \*scrivo il primo risultato *\ read(canale2[0],fat2,1); \* leggo dalla pipe 2 il secondo risultato*\ write(fd,fat2,1); \*scrivo il secondo risultato *\ close(fd) \*chiudo il file aperto*\ exit(0) \*termino regolarmente*\ \*figlio*\ close (canale2[0]); \* chiudo la pipe2 in lettura*\ close (canale1[1]); \* chiudo la pipe1 in scrittura*\

16 read (canale1[0],num1,1) \leggo da pipe1 il primo numero*\ fat1[0]=num1[0] \*calcolo il primo fattoriale *\ for(i=1,i<num1[0], i++) fat1[0]=fat1[0]*(num1[0]-i); write(canale2[1],fat1,1); \* scrivo sulla pipe 2 il primo fattoriale*\ read (canale1[0],num2,1) \leggo da pipe1 il secondo numero*\ fat2[0]=num2[0] \*calcolo il secondo fattoriale *\ for(i=1,i<num2[0], i++) fat2[0]=fat2[0]*(num2[0]-i); write(canale2[1],fat2,1); \* scrivo sulla pipe 2 il secondo fattoriale*\ exit(0) \*termino regolarmente*\

17 Esercizio 8 #include <stdio.h> const K 6 const X 0.5 int fatt(int ) int potenza (int,int) main() int figlio1, figlio2, canale1[2], canale2[2], somma1[3], somma2[3], i, j, somma[1] pipe (canale1); \* genero la prima pipe *\ pipe (canale2); \* genero la seconda pipe *\ figlio1=fork(); \* genero il primo processo figlio *\ if(figlio1<0) printf( fork fallita\n ); \*segnalo l errore sulla fork*\ exit(-1); if(figlio1==0) \primo figlio*\ close(canale1[0]); \*chiudo pipe1 in lettura*\ j=1 for(i=0, i<(k/2), i++) \*calcolo i primi tre termini della somma*\ somma1[i]=(potenza(x,(2*j-1)))/fatt((2*j-1)); write(canale1[1],somma1,1); j=j+2 exit(0); figlio2=fork(); if(figlio2<0) printf( fork fallita\n ); \*scrivo sulla pipe1*\ \*processo padre\* \*genero il secondo figlio*\ \*segnalo l errore sulla fork*\

18 exit(-1); if(figlio 2==0) \*secondo figlio *\ close(canale2[0]); \*chiudo pipe2 in lettura*\ j=2 for(i=0, i<(k/2), i++) \*calcolo i secondi tre termini della somma*\ somma2[i]=-(potenza(x,(2*j-1)))/fatt((2*j-1)); write(canale2[1],somma2,1); \*scrivo sulla pipe2*\ j=j+2 exit(0); \*padre*\ close(canale1[1]); \*chiudo pipe1 in scrittura*\ close(canale2[1]); \*chiudo pipe2 in scrittura*\ read (canale1[1],somma1,3); read (canale2[1],somma2,3); somma =0; for(i=0,i<3,i++) somma[0] =somma[0] +somma1[i]; for(i=0,i<3,i++) somma[0] =somma[0] +somma2[i]; write(1,somma,1); exit(0); int fatt(int n) if(n==0) fatt=1; fatt=n*fatt(n-1); return fatt int potenza(int base, int esponente) if(esponente==0) potenza=1; potenza=base*potenza(base, esponente-1); return potenza

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,

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

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

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

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

I/O su Socket TCP: read()

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

Dettagli

Laboratorio di Sistemi Operativi

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

Dettagli

Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI Fabio Buttussi La programmazione di sistema Il kernel è la parte di Unix che corrisponde al sistema operativo

Dettagli

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

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

Dettagli

IPC System V. Code di messaggi

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

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

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

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

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

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

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

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

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Sistemi Operativi L-A. Esercizi 14 Giugno 2007. Esercizio monitor

Sistemi Operativi L-A. Esercizi 14 Giugno 2007. Esercizio monitor Sistemi Operativi L-A Esercizi 14 Giugno 2007 Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione

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

Inter-Process Communication

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

Dettagli

RICERCA DI UN ELEMENTO

RICERCA DI UN ELEMENTO RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

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

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Programmazione multiprocesso

Programmazione multiprocesso DTI / ISIN / Titolo principale della presentazione 1 Programmazione multiprocesso Amos Brocco, Ricercatore, DTI / ISIN 20 febbraio 2012 2 Processi Cos'è un processo? Un programma in esecuzione Spazio di

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

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread Terza Esercitazione Unix System Call Exec Java Introduzione Thread Stefano Monti smonti@deis.unibo.it Unix - Esercizio 1 Scrivere un programma C con la seguente interfaccia:./compilaedesegui

Dettagli

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL

Dettagli

Esercizio 2. Client e server comunicano attraverso socket TCP

Esercizio 2. Client e server comunicano attraverso socket TCP Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si

Dettagli

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

Esercitazione 3. Corso di Fondamenti di Informatica

Esercitazione 3. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 3 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

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

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

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Elementi di Architettura e Sistemi Operativi

Elementi di Architettura e Sistemi Operativi Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 15 Giugno 2015 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 4 problema 2 6 problema

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

ARTeS iscrizione Albi e Registri Terzo Settore della Regione Lazio Guida alle procedure di iscrizione. Rev. 0 del 2 maggio 2012

ARTeS iscrizione Albi e Registri Terzo Settore della Regione Lazio Guida alle procedure di iscrizione. Rev. 0 del 2 maggio 2012 ARTeS iscrizione Albi e Registri Terzo Settore della Regione Lazio Guida alle procedure di iscrizione Rev. 0 del 2 maggio 2012 1 Il sistema informativo A.R.Te.S. È operativa dal 2 maggio la nuova procedura

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Esercizio 1. Esercizio 1

Esercizio 1. Esercizio 1 Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli scontrini emessi. In particolare, tramite una struttura dati di nome scontrino, il registratore di cassa tiene

Dettagli

Esempio produttori consumatori. Primitive asincrone

Esempio produttori consumatori. Primitive asincrone Primitive asincrone Send non bloccante: il processo mittente, non appena inviato il messaggio, prosegue la sua esecuzione. Il supporto a tempo di esecuzione deve fornire un meccanismo di accodamento dei

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

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

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dell ambiente di sviluppo, compilazione ed esecuzione 1 Introduzione Java è un linguaggio

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

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

Dettagli

Allocazione dinamica della memoria - riepilogo

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

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Linguaggio C - Stringhe

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

Dettagli

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

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

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Software di base. Corso di Fondamenti di Informatica

Software di base. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Software di base Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Matlab: Gestione avanzata dei file

Matlab: Gestione avanzata dei file Matlab: Gestione avanzata dei file Informatica B File 2 Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare ad esistere indipendentemente dalla vita del programma

Dettagli

System call fcntl e record locking

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

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Sistemi Operativi Teledidattico

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

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

I file di dati. Unità didattica D1 1

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

Dettagli

Lab 11 Gestione file di testo"

Lab 11 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 11 Gestione file di testo" Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome

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

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO Pag. 1 di 17 VERIFICHE E APPROVAZIONI VERSIONE V01 REDAZIONE CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA PRATESI STATO DELLE VARIAZIONI VERSIONE PARAGRAFO O DESCRIZIONE

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005)

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Descrizione dell esercitazione L esercitazione consiste nell implementare un semplice gestore di aste attraverso il quale gli utenti

Dettagli

Il descrittore di processo (PCB)

Il descrittore di processo (PCB) Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Guida all utilizzo del forum di direzionebandacs.altervista.org

Guida all utilizzo del forum di direzionebandacs.altervista.org Guida all utilizzo del forum di direzionebandacs.altervista.org Il forum è la parte del sito su cui si basa l interattività e quindi lo scambio di messaggi e materiale tra gli utenti. E composto da 2 sezioni

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA Esercizio sulla gestione di file in Unix Sistemi Operativi T AA 2011-2012 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra

Dettagli

2.7 La cartella Preparazioni e CD Quiz Casa

2.7 La cartella Preparazioni e CD Quiz Casa 2.7 La cartella Preparazioni e CD Quiz Casa SIDA CD Quiz Casa è il cd che permette al candidato di esercitarsi a casa sui quiz ministeriali e personalizzati. L autoscuola può consegnare il cd al candidato

Dettagli

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link: MANUALE UTENTE OTRS è il sistema di ticketing per la gestione delle richieste tecniche e di supporto ai clienti e partner di Delta Progetti 2000. La nuova versione 3.2.10 introduce una grafica più intuitiva

Dettagli