Reti e problematiche di Rete

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Reti e problematiche di Rete"

Transcript

1 Reti e problematiche di Rete I Processi Concorrenti Enrico Cavalli Anno Accademico I problemi con i processi concorrenti 1

2 I processi concorrenti La concorrenza tra processi avviene secon diverse modalità. Si parla infatti di competizione nell accesso alle risorse come nel caso di due amici che litigano per la restituzione di un prestito e di cooperazione nell evoluzione dei processi come nel caso della produzione dei celini paga degli stipendi eseguiti da due processi, uno dei quali effettua il calcolo della paga e l altro la stampa La cooperazione tra processi può avvenire con la condivisione di risorse, per esempio mediante la condivisione di un area della memoria centrale per processi concorrenti su un singolo calcolatore, oppure tramite comunicazione, con lo scambio di messaggi, come avviene ai processi che interagiscono in un sistema distribuito. La competizione nell accesso alle risorse può portare allo stallo dei processi mentre la cooperazione tra processi concorrenti può causare l inconsistenza dei dati elaborati. I problemi di concorrenza tra processi si presentano sia con i processi di sistema che con i processi degli utenti. La concorrenza è importante sia per la comprensione dei sistemi operativi sia nello sviluppo di applicazioni con linguaggi che supportano il multi threading. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 3 I processi concorrenti P 0 P 1 Dati Clienti Dato Buffer Estratto Conto La produzione degli estratti conto con due processi cooperanti /* * P 0 esegue P 1 esegue * */ ProduceDatiCliente; LeggeDatiDaBuffer; ScriveDatiNelBuffer; StampaEstrattoConto; while (EsistonoClienti); while (EsistonoClienti); ProduceDatiCliente; eseguito da P 0 ScriveDatiNelBuffer; eseguito da P 0 LeggeDatiDaBuffer; eseguito da P 1 StampaEstrattoConto; eseguito da P 1 while (EsistonoClienti); Il comportamento desiderato Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 4 2

3 I processi concorrenti L elaborazione concorrente può portare a malfunzionamenti per: accesso concorrente alle informazioni e differente velocità di esecuzione dei processi Dati 0 Buffer Cliente B Cliente A NumeroConto Sal Dati1 Cliente A typedef struct { int NumeroConto; uble Sal; } contocorrente; contocorrente Dati0, Dati1, Buffer; /* * Per effetto dell accesso concorrente può succedere che * */ Buffer.NumeroConto = Dati0.NumeroConto; eseguito da P 0 Dati1.NumeroConto = Buffer.NumeroConto; eseguito da P 1 Dati1.Sal = Buffer.Sal; eseguito da P 1 Buffer.Sal = Dati0.Sal; eseguito da P 0 Dati 0 Buffer Cliente B Cliente B NumeroConto Sal Dati1 Cliente? Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 5 I processi concorrenti La differente velocità di esecuzione dei processi può portare alla perdita di informazioni o alla duplicazione delle informazioni. Se P 0 è più veloce di P 1 può succedere che P 0 pone nel buffer i dati di C prima che P 1 ha letto quelli di B, che non saranno mai stampati. Se P 1 è più veloce di P 0, può accadere che P 1, po avere stampato i dati di A, acceda al buffer prima che P 0 lo abbia aggiornato con i dati di B. In tale caso P 1 stamperebbe i dati di A due volte. I due problemi principali della programmazione concorrente sono: - Accesso concorrente alle informazioni - Sincronizzazione dei processi Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 6 3

4 I processi concorrenti Per risolvere il problema dell accesso concorrente alle informazioni bisogna impedire che mentre P 0 modifica il buffer, P 1 lo acceda per leggerlo. In pratica questo significa che le due procedure ScriveDatiNelBuffer, LeggeDatiDaBuffer devono essere eseguite in mutua esclusione: Le porzioni di codice P 0, P 1,.., P n, sono eseguite in mutua esclusione se l esecuzione di P i può iniziare solo se nessuna P j, i j, è in esecuzione. Le attività dei due processi devono anche essere sincronizzate per evitare che un estratto conto non sia stampato o che sia stampato più volte: P 0 può scrivere nel buffer solo se il buffer è vuoto. In pratica: P 0 può scrivere nel buffer solo po che P 1 lo ha letto svuotanlo. P 1 può leggere il buffer solo se il buffer è pieno. In pratica: P 1 può leggere il buffer solamente po che P 0 ha scritto nel buffer riempienlo. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 7 I processi concorrenti /* * Processo P 0 Processo P 1 * */ ProduceDatiCliente; AttendiBufferPieno; AttendiBufferVuoto; LeggeDatiDaBuffer; ScriveDatiNelBuffer; BufferVuoto; BufferPieno; StampaEstrattoConto; while(esistonoclienti); while(esistonoclienti); /* * Programma EstrattoConto * */ typedef enum {vuoto,pieno} stato; stato StatoBuffer; contocorrente Buffer; par P0(); P1(); par void P0(); void P1(); P StatoBuffer = vuoto; 0 e P 1 sono eseguite in parallelo par P0(); P1(); par Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 8 4

5 I processi concorrenti /* * Processo P 0 * */ void P0() ProduceDatiCliente; while (StatoBuffer == pieno) endwhile; attende: buffer == vuoto ScriveDatiNelBuffer; StatoBuffer = pieno; buffer vale pieno while (EsistonoClienti); /* Soluzione ottenuta con: * Processo P 1 - Attesa attiva * Processi forzati alla stessa velocità */ void P1() while (StatoBuffer == vuoto) endwhile; attende: buffer == pieno LeggeDatiDaBuffer; StatoBuffer = vuoto; buffer vale vuoto StampaEstrattoConto; while (EsistonoClienti); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 9 Accesso alle regioni critiche /* * Conteggio dei posti liberi * */ LOAD R1,Posti Posti = Posti - 1; SUB R1,UNO STORE R1,Posti Esecuzione concorrente di due processi che eseguono: Posti = Posti - 1; P 0 : Posti-- P 1 : Posti-- 50 Istruzioni Processo R1 Posti LOAD R1,posti P schedulato P 1, salvato R1(50) LOAD R1,posti P SUB R1,uno P STORE R1,posti P riprende P 0, ripristinato R1(50) SUB R1,uno P STORE R1,Posti P Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 10 5

6 Corse critiche Per risolvere il problema delle corse critiche servono due istruzioni speciali: EntraSezioneCritica; EsciSezioneCritica; da inserire immediatamente prima e po la sezione critica che ne garantiscono l esecuzione in mutua esclusione. /* * Processo P 0 Processo P 1 * */ ArrivaSpettatore; ArrivaSpettatore; EntraSezioneCritica; EntraSezioneCritica; Posti = Posti - 1; Posti = Posti - 1; EsciSezioneCritica; EsciSezioneCritica; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 11 Corse critiche /* * Programma ContaPostiLiberi * */ int Posti; typedef enum {P0, P1} turno; turno Processo; void P0(); void P1(); Posti = 400; Processo = P0; par P0(); P1(); par Soluzione corretta ma non accettabile operativamente perché... /* * Processo P 0 Processo P 1 * */ void P0() void P1() ArrivaSpettatore; ArrivaSpettatore; while(processo==p1) endwhile; while(processo==p0) endwhile; Posti = Posti - 1; Posti = Posti - 1; Processo = P1; Processo = P0; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 12 6

7 La mutua esclusione in software La mutua esclusione in software Una buona soluzione al problema della mutua esclusione richiede che siano rispettate certe condizioni: - la mutua esclusione fra i processi deve essere garantita; - un processo fuori dalla sezione critica non deve impedire né ritardare l accesso alla sezione critica da parte degli altri processi che vi vogliono accedere; - non si possono fare ipotesi sulla velocità relativa dei diversi processi; - i processi rimangono nella loro sezione critica per un tempo limitato; - non ci deve essere stallo nè ritar indefinito. Consideriamo diversi approcci alla soluzione del problema della mutua esclusione Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 14 7

8 Mutua esclusione in software /* * * Programma MutuaEsclusione1 * * */ boolean Occupata; void P0(); void P1(); La mutua esclusione non è garantita Occupata = false; par P0(); P1(); par // void P0() void P1() while (Occupata) endwhile; while (Occupata) endwhile; Occupata = true; Occupata = true; <Sezione Critica> <Sezione Critica> Occupata = false; Occupata = false; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 15 Mutua esclusione in software /* * * Programma MutuaEsclusione2 * * */ boolean VoglioEntrare[2]; void P0(); void P1(); C è pericolo di VoglioEntrare[0] = VoglioEntrare[1] = false; stallo par P0(); P1(); par // void P0() void P1() VoglioEntrare[0] = true; VoglioEntrare[1] = true; while (VoglioEntrare[1]) while (VoglioEntrare[0]) endwhile; endwhile; <Sezione Critica> <Sezione Critica> VoglioEntrare[0] = false; VoglioEntrare[1] = false; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 16 8

9 Mutua esclusione in software /* * * Programma MutuaEsclusione3 * * */ boolean VoglioEntrare[2]; void P0(); void P1(); C è pericolo di VoglioEntrare[0] = VoglioEntrare[1] = false; ritar indefinito par P0(); P1(); par // void P0() void P1() VoglioEntrare[0] = true; VoglioEntrare[1] = true; while (VoglioEntrare[1]) while (VoglioEntrare[0]) VoglioEntrare[0]=false; VoglioEntrare[1]=false; AspettaCasuale(); AspettaCasuale(); VoglioEntrare[0]=true; VoglioEntrare[1]=true; endwhile; endwhile; <Sezione Critica> <Sezione Critica> VoglioEntrare[0] = false; VoglioEntrare[1] = false; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 17 Mutua esclusione in software Nel 1965 l olandese Dekker ha proposto un algoritmo per risolvere via software il problema della mutua esclusione. L algoritmo di Dekker è piuttosto complicato e difficile da comprendere. Solo nel 1981 Peterson ha proposto una nuova soluzione molto più semplice di quella proposta da Dekker. Il fatto che ci siano voluti ben 16 anni per scoprire un nuovo semplice algoritmo per risolvere via software il problema della mutua esclusione lascia comprendere come siano difficili da risolvere i problemi che si incontrano con i processi concorrenti. L algoritmo di Peterson, che combina le idee di ContaPostiLiberi e MutuaEsclusione2 è, per così dire, un algoritmo basato sulla gentilezza perché, in caso di accesso contemporaneo alla sezione critica, entrambi i processi ceno il passo all altro. Si noti che anche l algoritmo di Peterson, semplice ed elegante, fa uso del ciclo di attesa attiva e, di conseguenza, non è molto efficiente. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 18 9

10 Mutua esclusione in software /* * * AlgoritmoDiPeterson * * */ boolean VoglioEntrare[2]; Se P int Turno; 0 è nella propria sezione void P0(); void P1(); VoglioEntrare[0] = VoglioEntrare[1] = false; critica allora non Turno = 1; può esserlo P 1 par P0(); P1(); par // void P0() void P1() VoglioEntrare[0] = true; VoglioEntrare[1] = true; Turno = 1; Turno = 0; while (VoglioEntrare[1] AND while (VoglioEntrare[0] AND Turno==1) endwhile; Turno==0) endwhile; <Sezione Critica> <Sezione Critica> VoglioEntrare[0] = false; VoglioEntrare[1] = false; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 19 Supporti Hardware per la programmazione concorrente 10

11 Supporti hardware La ragione del fallimento della mutua esclusione nel programma MutuaEsclusione1 è vuto al fatto che le coppia di istruzioni: while (Occupata) endwhile; Occupata = true; non è eseguita in mo atomico. Se fosse possibile eseguire quella coppia di istruzione in mo atomico MutuaEsclusione1 funzionerebbe correttamente. Ci sono due modi per eseguire le due istruzioni atomicamente: - disabilitare le interruzioni prima di eseguire le istruzioni che devono essere eseguite in mo atomico e riabilitarle subito po. La tecnica della disabilitazione delle interruzioni è fortemente sconsigliata per tre ragioni: è pericoloso autorizzare un processo a disabilitare le interruzioni; il calcolatore funziona in mo inefficiente perché il sistema operativo non può attuare le proprie politiche di ottimizzazione; non funziona nei sistemi multi processore (e questo taglia la testa al toro) - usare istruzioni macchina (se ci sono) che controllano il valore di un dato e lo modificano nella medesima istruzione Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 21 L istruzione TSL In molti processori è presente l istruzione macchina TSL, acronimo di Test and Set Lock: TSL Registro, Blocco che trasferisce in un registro il contenuto della parola di memoria Blocco e, nella medesima istruzione, memorizza in Blocco un valore intero diverso da zero: il comportamento di TSL può essere descritto come quello della funzione TestSet che: restituisce il valore del proprio argomento X (1) e assegna a X il valore true (2) TestSet(X): true 2 1 X /* * * TestSet * * */ boolean TestSet(boolean &X) Boolean SalvaX; SalvaX = X; X = true; return SalvaX; X Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 22 11

12 Mutua esclusione con TSL /* * * MutuaEsclusioneTestSet * * */ boolean Blocco; Blocco = false; par P0(); P1(); par // void P0() void P1() while (TestSet(Blocco)) endwhile; while (TestSet(Blocco)) endwhile; <Sezione Critica> <Sezione Critica> Blocco = false; Blocco = false; La soluzione è generalizzabile a N processi concorrenti e opera correttamente sia in ambiente mono che multi processore. Purtroppo usa un ciclo di attesa attiva: sarebbe meglio sospendere un processo e poi svegliarlo Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 23 Attesa / risveglio: I Semafori 12

13 I semafori I semafori sono variabili pensate per gestire i meccanismi di collaborazione tra processi concorrenti. Un processo può fermarsi in attesa di ricevere un segnale inviato da un altro processo. Per inviare e ricevere segnali un processo dispone delle due primitive Wait e Signal: Signal: invia un segnale a un semaforo che lo riceve e lo memorizza Wait: ricevere i segnali inviati a un semaforo: se il segnale non è stato inviato il processo è sospeso in attesa della trasmissione; se invece il segnale è già stato trasmesso il processo lo riceve e prosegue nella esecuzione. I semafori possono essere pensati come oggetti composti da una variabile intera e una coda di processi. Sono creati assegnan un valore opportuno alla variabile intera e possono essere manipolati con le sole primitive Wait e Signal che non sono interrompibili. typedef struct {int Count; CodaDiProcessi Coda;} semaforo; semaforo S (=1); S.Count=1 S.Coda è vuota La variabile intera S.Count conta i segnali inviati al semaforo S; la coda S.Coda è inizialmente vuota Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 25 I semafori S -3 S.Count = -3 Tre processi in S.Coda P2 P1 P0 Una Wait eseguita da un processo P sul semaforo S decrementa S.Count e, se il valore decrementato è minore di 0, blocca P e lo inserisce nella coda associata al semaforo S. L esecuzione di Signal su un semaforo S incrementa S.Count e, se S.Coda non è vuota, sveglia uno dei processi in attesa nella coda associata a S. Si dice che Wait consuma i segnali inviati a un semaforo, mentre Signal invia segnali a un semaforo. Count tiene conto del numero di segnali inviati a un semaforo e del loro utilizzo Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 26 13

14 I semafori /* * * Wait * * */ void Wait(semaforo &S) S.Count = S.Count - 1; if (S.Count < 0 ) InserisciProcesso(S.Coda); BloccaProcesso; endif; /* * * Signal * * */ void Signal(semaforo &S) processo P; if (S.Count < 0) P = EstraiProcesso(S.Coda); AttivaProcesso(P); endif; S.Count = S.Count + 1; Usa un segnale inviato al semaforo Se non ci sono segnali da usare, il processo P che ha attivato la Wait è fermato e inserito in S.Coda Se la coda non è vuota, attiva un processo Conta i segnali inviati al semaforo Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 27 I semafori P: Wait(S) P: Wait(S) P Q: Signal(S) Q: Signal(S) La figura mostra che la variabile Count di un semaforo S: Per Count 0 indica il numero di segnali di sveglia che sono stati inviati a S con Signal(S) e non sono stati ancora ricevuti con Wait(S); Quan Count < 0 indica quanti sono i processi nella coda di S, in attesa di ricevere un segnale di sveglia. Con i semafori si risolvono i problemi di mutua esclusione e sincronizzazione Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 28 14

15 Mutua esclusione con i semafori L accesso in mutua esclusione a una porzione di codice si ottiene usan un semaforo S inizializato a 1 e facen precedere la regione critica con Wait(S) e segnalan l uscita dalla regione critica con Signal(S) /* * * MutuaEsclusione con i semafori * * */ Mutua Esclusione: il semaforo Mutex(Count=1); semaforo è inizializzato a 1 void P0(); void P1(); par P0(); P1(); par /* */ void P0() void P1() Wait(Mutex); EntraCritica Wait (Mutex) Wait(Mutex); SezioneCritica; SezioneCritica; Signal(Mutex); EsciCritica Signal (Mutex) Signal(Mutex); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 29 Mutua esclusione con i semafori Se P 0 è il primo processo che riesce a eseguire Wait(Mutex)... 1 P 0 0 Wait(Mutex) Se anche P 1 cerca di accedere alla sezione critica... 0 P 1 Wait(Mutex) -1 P 1 Quan P 0 lascia la sezione critica P 1 è svegliato e prosegue P 0 Signal(Mutex) P 1 0 Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 30 15

16 Sincronizzazione con i semafori Per sincronizzare due processi su un evento si usa un semaforo S inizializzato a 0. Il processo che rileva l evento esegue Signal(S) e l altro processo si sincronizza sull evento con Wait(S). /* * * Sincronizzazione con i semafori * * */ Sincronizzazione: il semaforo è semaforo S(Count=0); inizializzato a 0 void P0(); void P1(); S.Count= 0; par P0(); P1(); par /* */ void P0() void P1() AzioniPreEvento; Wait(S); AzioniDopoEvento; Wait: per sincronizzarsi sull evento Signal: per rilevare l evento RilevaEvento; Signal(S); AltreOperazioni; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 31 Implementazione dei semafori /* * * Implementazione di Wait(S) * * */ void Wait(semaforo &S) while (TestSet(Occupata)) endwhile; S.Count = S.Count 1; if (S.Count < 0) BloccaProcesso; InserisciProcesso(S.Coda); endif; Occupata = false; /* * * Implementazione di Signal(S) * * */ void Signal(semaforo &S) while (TestSet(Occupata)) endwhile; if (S.Count < 0) P = EstraiProcesso(S.Coda); AttivaProcesso(P); endif; S.Count = S.Count + 1; Occupata = false; boolean Occupata BloccaProcesso Realizzata richieden i servizi del sistema operativo per operare il cambiamento di stato del processo AttivaProcesso Realizzata richieden i servizi del sistema operativo per operare il cambiamento di stato del processo Realizzate nel nucleo. In alternativa... Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 32 16

17 Problemi caratteristici con i semafori Il problema del produttore consumatore Produttore Dati Consumatore Buffer il produttore deve essere sicuro di riempire un buffer vuoto; il consumatore deve essere sicuro di svuotare un buffer pieno. /* * * Programma ProduttoreConsumatore * * */ semaforo Prelevato(Count=1); semaforo Depositato(Count=0); string Buffer; void Produttore(); void Consumatore(); par Produttore; Consumatore; par Count = 1: Via libera al produttore Count = 0: Blocca il consumatore Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 34 17

18 Il problema del produttore consumatore /* * Produttore: si sincronizza sull evento Prelevato e rileva * l evento Depositato * Consumatore: si sincronizza sull evento Depositato e rileva * l evento Prelevato * */ Prelevato.Count = 1: Via libera al produttore Depositato.Count = 0: Blocca il consumatore void Produttore() string Dato; void Consumatore() string Dato; Produce(Dato); Wait( Depositato ); Wait( Prelevato ); Dato = Buffer; Buffer = Dato; Signal( Prelevato ); Signal( Depositato ); Consuma(Dato); while (CiSonoDati); while (CiSonoDati); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 35 Produttore consumatore con un buffer circolare string Buffer[10]; Produttore NextIn=(NextIn+1)% N; NextIn xxxxxx xxxxxx xxxxxx xxxxxx Buffer NextOut NextOut=(NextOut+1)% N; Consumatore /* * * Programma BufferCircolare * * */ const N =...; string Buffer[N]; int NextIn(=0), NextOut(=0); semaforo Pieno(Count=N) semaforo Vuoto(Count=0); void Produttore(); void Consumatore(); par Produttore(); Consumatore(); par Pieno permette di inserire N dati nel buffer prima di fermare il produttore Vuoto blocca subito il consumatore Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 36 18

19 Produttore consumatore con un buffer circolare Pieno.Count = N via libera N volte al produttore Vuoto.Count = 0 blocca subito il consumatore NextIn = NextOut = 0 /* */ void Produttore() void Consumatore() string Dato; string Dato; Produce(Dato); Wait(Vuoto); Wait(Pieno); Dato = Buffer[NextOut]; Buffer[NextIn] = Dato; NextOut = (NextOut+1) % N; NextIn = (NextIn+1) % N; Signal(Pieno); Signal(Vuoto); Consuma(Dato); while (CiSonoDati); while (CiSonoDati); Le corse critiche si possono avere solo se NextIn = NextOut cioè in caso di buffer vuoto oppure di buffer pieno. Supponiamo che il buffer sia pieno, per esempio perché il consumatore è fermo: allora Pieno.Count = 0 e il produttore non può accedere alla sezione critica. Se invece il buffer è vuoto si ha: Vuoto.Count = 0 e il consumatore si ferma prima di accedere alla sezione critica per effetto di Wait(Vuoto). Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 37 Produttore consumatore con un buffer circolare /* Attenzione: se ci sono più consumatori e/o più produttori * * Programma ProduttoriConsumatori l accesso al buffer e l aggiornamento dei puntatori devono * * avvenire in mutua esclusione. Si introduce il semafori Mutex */ inizializzato con Mutex.Count = 1 const N =...; string Buffer[N]; int NextIn, NextOut; semaforo Pieno(Count=N), Vuoto(Count=0), Mutex(Count=1); void Produttore(1); void Produttore(2);... void Consumatore(1);... par Produttore(1); Produttore(2);.. ; Consumatore(1); Consumatore(2);.. ; par /* */ void Produttore(i) void Consumatore(i) string Dato; string Dato; Produce(Dato); Wait(Vuoto); Wait(Pieno); Wait(Mutex); Wait(Mutex); Dato = Buffer[NextOut]; Buffer[NextIn] = Dato; NextOut = (NextOut+1)%N; NextIn = (NextIn+1)%N; Signal(Mutex); Signal(Mutex); Signal(Pieno); Signal(Vuoto); Consuma(Dato); while (CiSonoDati); while (CiSonoDati); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 38 19

20 Il problema dei lettori e degli scrittori Scrittore Scrittore Scrittore Area Dati Lettore Lettore Un insieme di processi acceno a dati condivisi, un file o il record di un file, per esempio. I processi scrittori, inseriscono nuovi dati e/o modificano quelli esistenti, mentre i processi lettori si limitano a leggere i dati, senza modificarli. - La scrittura dei dati può essere fatta da un solo processo per volta - La lettura dei dati può essere effettuata da più lettori a condizione che non ci siano processi scrittori che stanno modifican i dati - Quan uno scrittore accede ai dati nessun lettore o scrittore può accedervi Sono regole abbastanza naturali e sono lo standard nell accesso ai dati di un database Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 39 Il problema dei lettori e degli scrittori /* * * Programma LettoriScrittori * * */ int Lettori; semaforo Scrivi(Count=1); semaforo Mutex(Count=1); Lettori = 0; par Lettore(); Lettore(); Scrittore(); par /* */ void Lettore() Wait(Mutex); Lettori==1: il primo lettore Lettori++; if(lettori==1)wait(scrivi);endif; Signal(Mutex); LeggeDati; Wait(Mutex); Lettori==0: non ci sono più lettori Lettori--; if(lettori==0)signal(scrivi);endif; Signal(Mutex); Lettori: contatore dei lettori Scrivi: le operazioni di scrittura devono avvenire in mutua esclusione Mutex: mutua esclusione nei conteggi void Scrittore() Wait(Scrivi); ScriveDati; Signal(Scrivi); Priorità ai lettori Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 40 20

21 Il problema del barbiere che rme Il negozio, gestito da un solo barbiere, è tato di una poltrona da barbiere, ma ci sono un certo numero di sedie per i clienti in attesa. In assenza di clienti il barbiere si accomoda sulla sedia di lavoro e rme, diversamente il barbiere li serve in ordine di arrivo. I clienti entrano nel negozio e, se ci sono posti a sedere liberi si accomodano, diversamente lasciano immediatamente il negozio /* * * Programma NegozioDelBarbiere * * */ const MaxClienti =...; NumClienti: conta i clienti in attesa int NumClienti; Cliente: riconosce la presenza di clienti semaforo Mutex(Count=1); semaforo Barbiere(Count=1); Barbiere: rileva la disponibilità del barbiere semaforo Cliente(Count=0); Mutex: mutua esclusione conteggio clienti NumClienti = 0; par Barbiere(); Cliente(); Cliente();... Cliente(); par Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 41 Il problema del barbiere che rme void Cliente() EntraNelNegozio; Wait(Mutex); if (NumClienti < MaxClienti) NumClienti++; Se Signal(Mutex); Signal(Cliente); Wait(Barbiere); AccedeAlTaglio; else Signal(Mutex); endif; EsceDalNegozio; NumClienti MaxClienti il cliente lascia il negozio void Barbiere() AperturaNegozio; Wait(Cliente); Wait(Mutex); NumClienti--; Signal(Mutex); TaglioCapelli; Signal(Barbiere); Anche in questo problema c è una ppia sincronizzazione tra cliente e barbiere. Il cliente deve segnalare il proprio arrivo e attendere che il barbiere sia libero. Il barbiere deve segnalare la propria disponibilità e attendere che ci sia un cliente Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 42 21

22 Costrutti linguistici per la concorrenza Esigenza di costrutti del linguaggio semaforo Mutex(Count=1); int Posti(=0); /* */ void P(int J) Mutua Esclusione: Semaforo inizializzato a 1... Wait(Mutex); Wait: in ingresso alla sezione critica Posti = Posti + 1; Signal: in uscita dalla sezione critica Signal(Mutex);... Cosa succede se erroneamente: 1. Si inizializza Mutex a 0 2. Si omette Signal in uscita dalla sezione critica 3. Si omette Wait in ingresso alla sezione critica 4. Si scambiano Wait con Signal Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 44 22

23 I monitor Il monitor è un costrutto del linguaggio di programmazione con il quale si definisce un modulo software che contiene al proprio interno dati e procedure per manipolarli e codice per inizializzarli, oltre a speciali variabili dette variabili condizione. monitor NomeMonitor VariabiliDelMonitor; condition VariabiliCondizione; Variabili e Variabili Condizione del monitor /* */ void ProceduraMonitor1(.. )... void ProceduraMonitor2(.. )... Procedure di monitor... void ProceduraMonitorN(.. )... /* */ InizializzazioneVariabiliModulo; Inizializzazioni Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 45 I monitor Variabili e procedure di monitor sono caratterizzate da: - Le variabili del monitor sono accessibili solo attraverso le procedure di monitor - Le procedure di monitor sono eseguite in mutua esclusione - Una sola procedura può essere attiva in un dato momento - Un processo P è entrato nel monitor quan riesce a eseguire una procedura di monitor. - Se più processi cercano di entrare contemporaneamente nel monitor uno solo riesce ad accedere al monitor, l altro è inserito in una coda di attesa abbinata al monitor - Le variabili di condizione sono manipolabili solo con Wait(Variabile) per sospendere i processi su code abbinate alle variabili e Signal(Variabile) per riattivare i processi in attesa nella coda abbinata alla variabile - Per richiamare una procedura di monitor si usa la notazione: NomeMonitor.NomeProcedura(Parametri); I monitor sono stati implementati in alcuni linguaggi tra cui: Java, Concurrent C, Concorrent Pascal e Modula 2. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 46 23

24 I monitor A, B sono in attesa su C 1 M Dati del monitor A B C 1 X, Y, Z sono in attesa su C 2 Q, R, S sono in attesa di entrare nel monitor X Y Z C 2 P è nel monitor Procedura 1 Q R S Procedura 2 Procedura 3 Inizializzazioni P Il monitor è un tipo di dato astratto con due particolari caratteristiche: la presenza delle variabili condizione e il fatto che le procedure di monitor sono eseguite in mutua esclusione. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 47 Mutua esclusione con i monitor /* * * definizione del monitor Posti * * */ monitor Posti PostiLiberi: int PostiLiberi; variabile privata di Posti /* */ void AssegnaPosto(boolean &Ok) if (PostiLiberi > 0) PostiLiberi--; Ok = true; else Ok = false; AssegnaPosto: endif; procedura del monitor Posti /* */ PostiLiberi = 350; Inizializzazioni del monitor /* * * Il programma Prenotazioni * * */ monitor Posti; void Cassa(); par Cassa();... ; Cassa(); par La mutua esclusione si ottiene /* trasforman tutte le sezioni */ void Cassa() critiche in procedure di monitor boolean Eseguito; ArrivaSpettatore; Posti.AssegnaPosto(Eseguito); if (Eseguito)... else... endif; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 48 24

25 Sincronizzazione con i monitor Per risolvere problemi di sincronizzazione si usano le variabili condizione e le speciali operazioni Wait e Signal nel seguente mo: si introduce E, variabile condizione abbinata all evento la procedura che rileva l evento lo segnala con l operazione Signal(E) la procedura che si deve sincronizzare sull evento usa Wait(E) per sospendersi in attesa dell evento. Le operazioni Wait e Signal dei monitor differiscono dalle omonime operazioni sui semafori per l assenza del meccanismo di conteggio dei segnali inviati con Signal: Wait ferma sempre il processo che la esegue Signal(E) cerca sempre di riattivare un processo nella coda associata alla variabile condizione E. Se la coda associata a E è vuota, il segnale viene perso. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 49 Sincronizzazione con i monitor Produttore Produttore Dato Buffer Consumatore /* * * Il programma ProduttoreConsumatore * * */ monitor Buffer; void Produttore(); void Consumatore(); par Produttore(); Produttore(); Consumatore(); par /* */ void Produttore() void Consumatore() string Dato; string Dato; Produce(Dato); Buffer.Preleva(Dato); Buffer.Inserisci(Dato); Usa(Dato); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 50 25

26 Sincronizzazione con i monitor monitor Buffer string Serbatoio; boolean Pieno; condition Inserimenti, Prelievi; Inserisci: /* */ void Inserisci(string Dato) if (NOT Pieno) Serbatoio = Dato; Pieno = true; Signal(Prelievi); else Wait(Inserimenti); endif; /* */ void Preleva(String &Dato) if (Pieno) Dato = Serbatoio; Pieno = false; Signal(Inserimenti); else Wait(Prelievi); Preleva: endif; Se il buffer è pieno preleva un dato, diversamente fermati nella coda della /* condizione Prelievi */ Pieno = false; // monitor Buffer Se il buffer è vuoto deposita il dato diversamente fermati nella coda della condizione Inserimenti Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 51 Costrutti linguistici per sistemi distribuiti 26

27 Scambio di messaggi I problemi di concorrenza in ambienti distribuiti si possono risolvere mediante lo scambio di messaggi. Le primitive tipiche per realizzare lo scambio di messaggi sono Send e Receive: Send(Destinazione, Messaggio) Receive(Sorgente, Messaggio) Send invia un messaggio a un destinatario, mentre Receive serve a ricevere un messaggio da una determinata sorgente: P 0 invia un messaggio a un processo P 1, mentre P 1 riceve un messaggio da P 0. P 0 P 1 Send(P1,msg) Receive(P0,msg) Lo scambio di messaggi si può usare nei sistemi distribuiti e negli ambienti mono e multi processore a memoria condivisa. Il canale di comunicazione è una connessione fisica per i sistemi distribuiti, mentre è un area di memoria gestita dal sistema operativo per i sistemi a memoria condivisa. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 53 Messaggi e Mailbox Destinatario Mittente Tipo Messaggio Priorità Lunghezza Messaggio Dati di Controllo Messaggio Si è fatto riferimento all indirizzamento diretto nel quale mittente e destinatario sono specificati esplicitamente nelle primitive di comunicazione. Un approccio alternativo è quello dell indirizzamento indiretto secon il quale i messaggi sono inviati a una struttura dati condivisa da mittente e destinatario detta mailbox (casella postale) o porta. Questo approccio è particolarmente utile nelle situazioni ve il ricevente deve accettare tutti i messaggi che gli sono stati inviati anche se non conosce i processi mittenti. Questo avviene, per esempio, nel caso di un database server che deve rispondere alle richieste di tutti i processi client. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 54 27

28 Messaggi e Mailbox C 1 Send( Mailbox, Msg ) C 2 C 3 Receive( Mailbox, Msg ) S C 4 Mailbox I processi spediscono messaggi alle mailbox e li ricevono prelevanli dalla mailbox. La mailbox memorizza i messaggi in apposite code che sono gestite con diverse modalità, tenen conto, per esempio, della priorità dei messaggi inviati alla mailbox. Per esempio: quattro processi client richieno i servizi a un processo server S invian messaggi a una mailbox. Il processo server riceve i messaggi dalla mailbox, esamina le richieste e risponde in mo opportuno. Una mailbox contiene una quantità finita di messaggi: conveniamo che se un processo invia un messaggio a una mailbox piena si ferma in attesa che un processo rimuova un messaggio dalla mailbox. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 55 Send e Receive Deve essere prevista una qualche forma di sincronizzazione nella spedizione e ricezione dei messaggi. Per farlo bisogna definire il comportamento di Send e Receive al momento dell esecuzione. La Send è bloccante se il processo che la esegue si blocca fino a quan il messaggio è stato ricevuto (e ne ha avuto conferma tramite una sorta di ricevuta di ritorno ). La primitiva Send è invece non bloccante se il processo, po avere spedito un messaggio, prosegue nella normale esecuzione. Anche la Receive può essere bloccante oppure non bloccante. Si pensi a un processo P che esegue Receive(Q, msg). Nel caso di Receive bloccante, il processo P si ferma in attesa di ricevere il messaggio inviato da Q. Nel caso di Receive non bloccante, si hanno due possibilità: se il messaggio è già stato inviato P lo riceve e prosegue mentre, se Q non ha inviato il messaggio, P prosegue senza ricevere il messaggio. In questo caso, in genere, P emette un messaggio di errore. Il caso Send bloccante con Receive bloccante stabilisce una forma di sincronizzazione stretta tra mittente e ricevente e si parla di rendez-vous (incontro in francese) tra i due processi che rimangono bloccati fino a trasmissione del messaggio avvenuta. Il caso Send non bloccante con Receive bloccante è molto diffuso, per esempio, nei processi server ve bisogna rispondere rapidamente alle richieste dei processi client. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 56 28

29 Sincronizzazione con rendez-vous Nel caso di Send bloccante con Receive bloccante (rendez-vous) si stabilisce una forma di sincronizzazione stretta tra mittente e ricevente. In caso di rendez-vous due processi, per esempio un processo produttore e un processo consumatore, si possono sincronizzare nel seguente mo: /* * Sincronizzazione con Rendez-vous * */ void Produttore() void Consumatore() string Dato; string Dato; Produce(Dato); Receive(Produttore,Dato); Send(Consumatore,Dato); Consuma(Dato); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 57 Mutua Esclusione con lo scambio di messaggi Mostriamo come risolvere i problemi base della programmazione concorrente nel caso di Send non bloccante, Receive bloccante e uso di mailbox. Mutua Esclusione con /* lo scambio di messaggi * * MutuaEsclusione con lo scambio di messaggi * * */ mailbox Casella; void P0(); void P1(); Mutua Esclusione: Invio di Creazion box(Casella); un messaggio nella mailbox Send(Casella, ); per iniziare par P0(); P1(); par /* */ void P0() void P1() string Msg; string Msg; Receive(Casella,Msg); Receive(Casella,Msg); // SezioneCritica; EntraCritica Receive // SezioneCritica; Send(Casella,Msg); EsciCritica Send Send(Casella,Msg); AltroCodice; AltroCodice; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 58 29

30 Programmazione concorrente con lo scambio di messaggi Soluzione dei problemi base della programmazione concorrente con lo scambio di messaggi: Send non bloccante, Receive bloccante e uso di mailbox. Mutua Esclusione con lo scambio di messaggi Per implementare la mutua esclusione con i messaggi si usa una mailbox che contiene un solo messaggio. La porzione di codice che deve essere eseguita in mutua esclusione deve essere delimitata in entrata con una Receive bloccante e in uscita da una Send non bloccante inviate a quella casella. Sincronizzazione con lo scambio di messaggi Per sincronizzare processi con lo scambio di messaggi si procede nel seguente mo: il processo che rivela l evento invia un messaggio con Send non bloccante a una mailbox vuota, mentre il processo che si deve sincronizzare sull evento esegue una Receive bloccante su quella mailbox Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 59 Sincronizzazione con lo scambio di messaggi Sincronizzazione con lo scambio di messaggi /* * * Sincronizzazione con lo scambio di messaggi * * */ mailbox Casella; void P0(); void P1(); Creazion box(Casella); par P0(); P1(); par /* P0 rimane bloccato da */ Receive sino a quan P1 void P0() invia un messaggio void P1() string Msg(= ); string Msg(= ); AzioniPreEvento; RilevaEvento; Receive(Casella,Msg); Send(Casella,Msg); AzioniDopoEvento; AltreOperazioni; Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 60 30

31 Esempio: produttore - consumatore Doppia sincronizzazione /* * * Produttore-Consumatore con lo scambio di messaggi * * */ mailbox Consumato, Protto; string Msg; void Produttore(); void Consumatore(); CreaMailbox(Protto); CreaMailbox(Usato); Via libera al produttore Send(Usato, ); par Produttore(); Consumatore(); par Bloccato il consumatore /* */ void Produttore() string Dato; Produce(Dato); Receive(Usato,Msg); Msg = Dato; Send(Protto,Msg); void Consumatore() string Dato; Send: Rileva evento Receive(Protto, Msg); Dato = Msg; Receive: Si sincronizza Send(Usato,Msg); sull evento Consuma(Dato); Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 61 Domande(1) 1. I processi P0 e P1 sono eseguiti in parallelo e cooperano come indicato di seguito: /* * P0 esegue P1 esegue * */ ProduceDati; EntraCritica; EntraCritica; LeggeBuffer; ScriveBuffer; EsceCritica; EsceCritica; StampaDati; L accesso in mutua esclusione al buffer è garantito? La sincronizzazione è garantita? Cosa può accadere se il processo P0 è più veloce del processo P1? Cosa può accadere se il processo P0 è più lento del processo P1? 2. Quali delle seguenti affermazioni sono vere (V) e quali sono false (F) - I semafori sono speciali variabili pensate per implementare il meccanismo attesa risveglio fra processi concorrenti - I semafori sono rappresentabili come un intero e una coda di processi - I semafori sono una struttura normalmente programmabile - La primitiva Wait decrementa la variabile intera del semaforo - Se il contatore di un semaforo vale -5 allora ci sono 4 processi in coda sul semaforo - Se il contatore di un semaforo è >= 0 non ci sono processi in coda su quel semaforo Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 62 31

32 Domande(2) 3. Il valore di Count del semaforo S è 4. Un processo P esegue per tre volte Wait(S) e subito po il processo Q esegue due Wait(S). Quali sono lo stato di P e di Q? 4. Il valore di Count del semaforo S è 0. Un processo P esegue Wait(S) e poco po il processo Q esegue Signal(S). Quali sono lo stato di P e di Q? 5. Il valore di Count del semaforo S è -2 e il processo P è in attesa nella coda associata ad S. Un processo Q esegue Signal(S). Quali sono lo stato di P e di Q? 6. I processi P e Q competono per accedere a una sezione critica secon il seguente codice che usa il semaforo Mutex inizializzato a 1. /* * P Q * */ Wait(Mutex); Wait(Mutex); //SezioneCritica; //SezioneCritica; Signal(Mutex); Wait(Mutex); Commentate la soluzione. Commentate la soluzione nel caso di Mutex inizializzato a 0 ed a 2. Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 63 Domande(3) 7. Il processo P si deve sincronizzare con Q attraverso un evento rilevato da Q. Per farlo si usa un semaforo S e il seguente codice: /* * * P Q * * */ AzioniPreEvento; RilevaEvento; Wait(S); Signal(S); AzioniDopoEvento; AltreOperazioni; Commentate la soluzione nel caso si S inizializzato a 0 ed a Nel programma ProduttoreConsumatore si usano: Depositato(Count=0) e Prelevato(Count=1): void Produttore() void Consumatore() string Dato; string Dato; Produce(Dato); Wait( Depositato ); Wait( Prelevato ); Dato = Buffer; Buffer = Dato; Signal( Prelevato ); Signal( Depositato ); Consuma(Dato); while (CiSonoDati); while (CiSonoDati); Commentate la soluzione. Commentate la soluzione nel caso che i due semafori siano inizializzati come Depositato(Count=1) e Prelevato(Count=0). Nel programma ProduttoreConsumatore a cosa serve Signal(Prelevato)? Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 64 32

33 Domande(4) 9. Nel monitor M ci sono due procedure P e Q. Due processi eseguono contemporaneamente M.P e M.Q. Cosa succede? 10. Due processi P e Q si vogliono sincronizzare su un evento E rilevato da P usan la primitiva Send non bloccante, Receive bloccante e una mailbox di nome Casella. Per farlo: a. - P esegue Send(Casella, msg) Q esegue Send(Casella, msg) b. - P esegue Send(Casella, msg) Q esegue Receive(Casella, msg) c. - P esegue Receive(Casella, msg) Q esegue Receive(Casella, msg) d. - P esegue Receive(Casella, msg) Q esegue Send(Casella, msg) 11. Due processi P e Q devono accedere in mutua esclusione a una regione critica usan la primitiva Send non bloccante e Receive bloccante e una mailbox di nome Casella che contiene un solo messaggio. Per farlo entrambi i processi circondano la sezione critica: a. - Con Receive(Casella, msg) prima della regione critica Send(Casella, msg) po b. - Con Receive(Casella, msg) prima della regione critica Receive(Casella, msg) po c. - Con Send(Casella, msg) prima della regione critica Receive(Casella, msg) po d. - Con Send(Casella, msg) prima della regione critica Send(Casella, msg) po Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 65 Esercizi(1) 1. I processi P0 e P1, eseguiti in parallelo, sono composti da istruzioni che consideriamo indivisibili. /* * P0 esegue P1 esegue * */ A = A + 1; A = A * 3; A = A - 1; Se il valore iniziale di A è 3 quali sono i possibili valori di A po l esecuzione concorrente dei due processi P0 e P1 2. Modificare il programma ContaPostiLiberi (diapositiva 12) in mo che possa funzionare con più casse. Naturalmente la soluzione sarà soggetta alle medesime limitazioni del programma originale. 3. Nel programma ContaPostiLiberi si vogliono contare il numero di posti ancora liberi e quello dei posti occupati. Per farlo si usano due variabili Liberi e Occupati che devono essere aggiornate dai processi P0 e P1. Si progettino due possibili soluzioni al problema usan le speciali istruzioni EntraCritica ed EsciCritica. Una delle due soluzioni deve garantire che in ogni momento sia rispettato il vincolo di integrità: Liberi+Occupati = 500 e l altra che non garantisca questa condizione. 4. Mostrate come sincronizzare due processi con l istruzione TSL Reti e problematiche di rete - Enrico Cavalli - Università di Bergamo 66 33

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

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. Introduzione. Struttura di un TDA Monitor Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione

Dettagli

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

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

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

Sistemi Operativi Esercizi Sincronizzazione

Sistemi Operativi Esercizi Sincronizzazione Sistemi Operativi Esercizi Sincronizzazione Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Esercizi Sincronizzazione Sistemi Operativi - Claudio Palazzi 14 Semafori (1) Semafori: variabili intere contano

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

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

Il problema del produttore e del consumatore. Cooperazione tra processi

Il problema del produttore e del consumatore. Cooperazione tra processi Il problema del produttore e del consumatore Cooperazione tra processi Risorsa consumabile I processi disgiunti possono interferire tra loro a causa dell'uso di risorse permanenti, ma ognuno di essi ignora

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

CAPITOLO 24 I MONITOR

CAPITOLO 24 I MONITOR EFFETTO DELLE PRIMITIVE - signal E wait SUI SEMAFORI CAPITOLO 24 I MONITOR I semafori sono un mezzo efficace per la gestione della mutua esclusione in ambienti con processi concorrenti, ma spesso è difficile

Dettagli

CAPITOLO 27 SCAMBIO DI MESSAGGI

CAPITOLO 27 SCAMBIO DI MESSAGGI CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:

Dettagli

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

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

Dettagli

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

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Sistemi Operativi. Lezione 7 Comunicazione tra processi Lezione 7 Comunicazione tra processi Introduzione La soluzione sw al problema della mutua esclusione è abbastanza complessa Algoritmo di Peterson La soluzione hw mediante disabilitazione degli interrupt

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

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

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

Java threads (2) Programmazione Concorrente

Java threads (2) Programmazione Concorrente Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and

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

Capitolo 7: Sincronizzazione

Capitolo 7: Sincronizzazione Capitolo 7: Sincronizzazione Il problema della sincronizzazione. Il problema della sezione critica. Hardware per la sincronizzazione. Semafori. Problemi classici di sincronizzazione. Monitor (cenni). 7.1

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

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007 2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007 Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

LA SINCRONIZZAZIONE TRA PROCESSI

LA SINCRONIZZAZIONE TRA PROCESSI LA SINCRONIZZAZIONE TRA PROCESSI E' più complesso scrivere programmi concorrenti rispetto a programmi sequenziali in quanto non basta essere sicuri della correttezza dei singoli moduli ma è necessario

Dettagli

Ata_NiAg02. Modulo Gestione Agenti

Ata_NiAg02. Modulo Gestione Agenti Ata_NiAg02 Modulo Gestione Agenti Il software NiAg02 consente alle aziende che utilizzano il software gestionale ATA di gestire in maniera totalmente automatizzata l acquisizione ordini e/o clienti dalla

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

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, > Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego

Dettagli

CONTROLLO DI GESTIONE DELLO STUDIO

CONTROLLO DI GESTIONE DELLO STUDIO CONTROLLO DI GESTIONE DELLO STUDIO Con il controllo di gestione dello studio il commercialista può meglio controllare le attività svolte dai propri collaboratori dello studio nei confronti dei clienti

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

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

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

Dettagli

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone BASI DI DATI per la gestione dell informazione Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone Libro di Testo 22 Chianese, Moscato, Picariello e Sansone BASI DI DATI per la Gestione dell

Dettagli

Esecuzione concorrente di transazioni

Esecuzione concorrente di transazioni Esecuzione concorrente di transazioni A L B E R T O B E L U S S I P A R T E I I A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Tecniche applicate nei DBMS Le tecniche per il controllo della concorrenza che

Dettagli

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008 Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008 Si consideri una rete di sensori MicaZ con sistema operativo TinyOS, dove ogni nodo è identificato da un ID unico e dove è presente un solo

Dettagli

Introduzione ai Metodi Formali

Introduzione ai Metodi Formali Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

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

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 5 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II Lezione 5 Giovedì 19-03-2015 1 Intensità del traffico e perdita dei pacchetti La componente

Dettagli

MODELLO AD AMBIENTE GLOBALE

MODELLO AD AMBIENTE GLOBALE MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:

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

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi 1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi Il processo E' un programma in esecuzione Tipi di processo Stati di un processo 1 indipendenti

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

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

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

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento I protocolli del livello di applicazione Porte Nelle reti di calcolatori, le porte (traduzione impropria del termine port inglese, che in realtà significa porto) sono lo strumento utilizzato per permettere

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 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array 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

Dettagli

Procedura per la configurazione in rete di DMS.

Procedura per la configurazione in rete di DMS. Procedura per la configurazione in rete di DMS. Sommario PREMESSA... 2 Alcuni suggerimenti... 2 Utilizzo di NAS con funzione di server di rete - SCONSIGLIATO:... 2 Reti wireless... 2 Come DMS riconosce

Dettagli

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

CONDIZIONI GENERALI DI LAVORO PRESSO GLI STABILIMENTI AGUSTAWESTLAND ITALIA

CONDIZIONI GENERALI DI LAVORO PRESSO GLI STABILIMENTI AGUSTAWESTLAND ITALIA CONDIZIONI GENERALI DI LAVORO PRESSO GLI STABILIMENTI AGUSTAWESTLAND ITALIA 1. Nelle presenti Condizioni Generali, le parole elencate qui di seguito saranno da intendersi con i significati qui descritti:

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore

Dettagli

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

Dettagli

POSTA ELETTRONICA CERTIFICATA

POSTA ELETTRONICA CERTIFICATA POSTA ELETTRONICA CERTIFICATA White paper Lorenzo Braidi SOMMARIO Premessa...2 Gli attori...2...2 Mittente e destinatario...3 Il servizio...3 Processo standard...4 Processo a gestore unico...4 Eccezioni...4

Dettagli

Gestione dei servizi all utenza. 3. Autorizzazioni

Gestione dei servizi all utenza. 3. Autorizzazioni Istituto Centrale per il Catalogo Unico delle Biblioteche Italiane e per le Informazioni bibliografiche Manuali utente per SBN WEB Gestione dei servizi all utenza 3. Autorizzazioni 1 2 1. Introduzione

Dettagli

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Threading T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Caratteristiche principali dei thread Consentono di eseguire elaborazioni simultanee in un programma scritto in C#. Possono essere

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1 + Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

Funzioni di Trasferimento Movimenti

Funzioni di Trasferimento Movimenti Airone Gestione Rifiuti Funzioni di Trasferimento Movimenti Airone Funzione di Trasferimento Movimenti pag. 1 Indice INTRODUZIONE... 3 FUNZIONE DI TRASFERIMENTO MOVIMENTI... 3 Configurazione dell applicazione...4

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

NUOVI APPROCCI PER UN MANAGER ALLENATORE : IL PROCESSO DI COACHING

NUOVI APPROCCI PER UN MANAGER ALLENATORE : IL PROCESSO DI COACHING gno Inserto di Missione Impresa dedicato allo sviluppo pratico di progetti finalizzati ad aumentare la competitività delle imprese. NUOVI APPROCCI PER UN MANAGER ALLENATORE : IL PROCESSO DI COACHING COSA

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

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

Dettagli

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti La manutenzione come elemento di garanzia della sicurezza di macchine e impianti Alessandro Mazzeranghi, Rossano Rossetti MECQ S.r.l. Quanto è importante la manutenzione negli ambienti di lavoro? E cosa

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file. ESERCIZIO 1 Si consideri un hard disk formattato la cui memoria è suddivisa in 16 blocchi (numerati da 0 a 15). Si supponga che sull hard disk sia memorizzato un unico file, contenuto, nell ordine, nei

Dettagli

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

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

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

Dettagli

Manuale Debident. Per accedere al servizio, inserite il nome, il numero cliente e la password che vi è stata assegnata.

Manuale Debident. Per accedere al servizio, inserite il nome, il numero cliente e la password che vi è stata assegnata. Login: per accedere Per accedere al servizio, inserite il nome, il numero cliente e la password che vi è stata assegnata. Se avete dimenticato la password, ne potete richiedere una nuova online. Per motivi

Dettagli

Tecnologia di un Database Server (centralizzato) Introduzione generale

Tecnologia di un Database Server (centralizzato) Introduzione generale Introduzione Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Introduzione generale Angelo Montanari Dipartimento di Matematica e Informatica Università di

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

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

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it FIRESHOP.NET Gestione del taglia e colore www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione iniziale... 5 Gestione delle varianti... 6 Raggruppamento delle varianti... 8 Gestire le varianti

Dettagli

Limiti della gestione tradizionale degli archivi. Prof. Francesco Accarino IIS Altiero Spinelli

Limiti della gestione tradizionale degli archivi. Prof. Francesco Accarino IIS Altiero Spinelli Limiti della gestione tradizionale degli archivi IIS Altiero Spinelli Limiti degli archivi tradizionali La gestione tradizionale degli archivi presenta numerosi limiti Gli archivi non consentono un accesso

Dettagli

Cos è l ISC (Indicatore Sintetico del Conto Corrente) e cosa sono i Profili tipo d utilizzo

Cos è l ISC (Indicatore Sintetico del Conto Corrente) e cosa sono i Profili tipo d utilizzo Cos è l ISC (Indicatore Sintetico del Conto Corrente) e cosa sono i Profili tipo d utilizzo Come dice il nome, l ISC è un indicatore che riassume in un unica cifra il costo indicativo annuo di un conto

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Agostino Lorenzi Enrico Cavalli Andrea Colleoni TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Articolazione Informatica Classe 4 Questo volume è disponibile anche in versione

Dettagli