Condivisione. Sistemi Operativi Giuseppe Prencipe. Es.: produttore -- consumatore. Es.: produttore -- consumatore. Es.: produttore -- consumatore

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Condivisione. Sistemi Operativi Giuseppe Prencipe. Es.: produttore -- consumatore. Es.: produttore -- consumatore. Es.: produttore -- consumatore"

Transcript

1 Sistemi Operativi Giuseppe Prencipe Sincronizzazione dei Processi Condivisione I processi di un SO possono cooperare Tipicamente condividono dati e file Si rendono necessari meccanismi che garantiscano la coerenza dei dati, quando vengono utilizzati da diversi processi 1 2 Es.: produttore -- consumatore while (1) { while (((inserisci+1)%dim_vettore == preleva); vettore[inserisci]=appena_prodotto; inserisci=(inserisci+1)%dim_vettore; Supponiamo di voler utilizzare un while (1) { contatore while (inserisci==preleva); condiviso...???? da_consumare=vettore[preleva]; preleva=(preleva+1)%dim_vettore; 3 Es.: produttore -- consumatore while (1) { while (contatore==dim_vettore); vettore[inserisci]=appena_prodotto; inserisci=(inserisci+1)%dim_vettore; contatore++; while (1) { while (contatore==0); da_consumare=vettore[preleva]; preleva=(preleva+1)%dim_vettore; contatore--; Problemi???? Cosa succede se contatore++ e contatore-- sono eseguite concorr.? Qual è il valore finale di contatore? 4 Es.: produttore -- consumatore Come sono codificate a livello macchina le due istruzioni? contatore++: registro1:=contatore; registro1:=registro1+1; contatore:=registro1; contatore--: registro2:=contatore; registro2:=registro2-1; contatore:=registro2; Quali sono i possibili valori finali di contatore (interleaving!!)? Es.: produttore -- consumatore Inizio: contatore = 5. Una possibile sequenza di interleaving è: produttore: registro1 = contatore (registro1 = 5) produttore: registro1 = registro1 + 1 (registro1 = 6) consumatore: registro2 = contatore (registro = 5) consumatore: registro2 = registro2 1 (registro2 = 4) produttore: counter = registro1 (contatore = 6) consumatore: counter = registro2 (contatore = 4) Il valore di contatore può essere 4 o 6, ma quello corretto è 5! Necessario sincronizzare e coordinare i processi!!!! 5 6 1

2 Sezione critica Sezione critica: segmento di codice in cui un processo agisce su dati condivisi Deve essere eseguito in mutua esclusione Tipicamente si hanno Sezione d ingresso: il processo chiede il permesso di poter eseguire la Sezione critica Sezione d uscita Sezione non critica 7 Sezione critica Mutua esclusione con sezioni critiche 8 Sezione critica Il problema della si risolve tramite un protocollo che i processi usano per cooperare Deve soddisfare 3 requisiti Mutua esclusione Progresso: la scelta del processo da far entrare in SC non può essere rimandata indefinitamente e nessun processo fuori dalla propria sezione critica può bloccare altri processi Attesa limitata: un processo attende un tempo limitato tra quando richiede di entrare in SC e quando il permesso gli viene accordato 9 Sezione critica Normale assunzione: le istruzioni di base del linguaggio macchina (load, store, ecc.) sono eseguite in modo atomico La struttura generale di un tipico processo è sezione d ingresso sezione d uscita while (1); 10 2 processi: Algoritmo 1 Variabile turno inizializzata a 0 (o a 1) Mutua esclusione? Progresso? Problema: non si ricordano info sufficienti sullo stato di un processo... P0 while (turno!= 0); turno = 1; while(1); 11 2 processi: Algoritmo 2 Vettore bool pronto[2] inizializzato a [F,F] Mutua esclusione? Progresso? Problema: dipende dalla temporizzazion e dei due processi... P0 pronto[0] = T; while (pronto[1]); pronto[0] = F; while(1); 12 2

3 2 processi: Algoritmo 2...e invertendo le istruzioni? Mutua esclusione? while (pronto[1]); Progresso? pronto[0] = T; P0 pronto[0] = F; while(1); 13 2 processi: Algoritmo 3 (Peterson) Usiamo sia turno che pronto[2]... Mutua esclusione? pronto[0] = T; Progresso? turno = 1; while (pronto[1] && Attesa limitata? P0 turno == 1); pronto[0] = F; while(1); 14 Implementazione alg. Peterson Più processi (algoritmo del fornaio) Per n processi Prima di entrare nella SC, un processo riceve un numero. Il possessore del numero più piccolo entra in SC Se processi P i e P j ricevono lo stesso numero, se i < j, allora P i viene servito prima; altrimenti P j I numeri vengono generati sequenzialmente e in ordine crescente: 1,2,3,3,3,3,4, Algoritmo del fornaio Notazione: < ordine lessicografico (a,b) < (c,d) se a < c o if a = c e b < d max(a 0,, a n-1 ) è un numero k tale che: k a i per i = 0,, n 1 Dati comuni boolean choosing[n]; int number[n]; Strutture dati inizializzate a false e 0 rispettivamente Algoritmo del fornaio Processo P i choosing[i] = true; number[i] = max(number[0], number[1],,number[n 1])+1; choosing[i] = false; for (j = 0; j < n; j++) { while (choosing[j]); while ((number[j]!= 0) && ((number[j],j) < (number[i],i)); number[i] = 0; while (1);

4 Algoritmo del fornaio Per provarne la correttezza, bisogna dimostrare: Se P i si trova in SC e P k ha già scelto il proprio numero, allora (number[i],i) < (number[k],k) (Es. 7.3 sul libro di testo) Mutua esclusione Progresso Attesa limitata 19 Architetture di sincronizzazione Molto spesso si utilizzano caratteristiche dell hardware per risolvere più semplicemente il problema della SC Es.: Se P i entra in SC, disabilita gli interrupt Non va bene, specie in sistemi multi-processore (sprechi di tempo per trasmettere la richiesta di disabilitazione a tutte le CPU) Alternativa: istruzioni per leggere e modificare il contenuto di una parola di memoria in modo atomico boolean TestAndSet(boolean &target) { boolean rv = target; target = true; return rv; Atomica: se due T&S eseguite su CPU diverse, vengono eseguite sequenzialmente (ordine arbitrario) 20 Mutua Esclusione con Test-and-Set Dato condiviso boolean lock = false; Process P i while (TestAndSet(lock)) ; lock = false; while (1); 21 Sincronizzazione Hardware swap atomico di due variabili void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; 22 Mutua Esclusione con swap Dato condiviso boolean lock=false; Processo P i : key = true; while (key == true) { Swap(lock,key); critical section lock = false; remainder section Attesa limitata? 23 Mutua Esclusione con Test-and-Set e attesa limitata Dati condivisi: boolean waiting[n] = {false, lock = false; Processo P i : int j; boolean key; waiting[i] = true; key = true; while (waiting[i] && key) key=testandset (lock); waiting[i] = false; j = i+1 % n; while ((j!= i) && (not waiting[j])) {j=j+1 % n; if (j=i) lock=false; else waiting[j]= false; while (1); 24 4

5 Semafori Un altro strumento di sincronizzazione è il semaforo Semaforo S variabile intera Si accede solo tramite due operzioni atomiche wait (S): while S 0 do no-op; S--; signal (S): S++; Originariamente chiamate P (proberen -- verificare) e V (verhogen -- incrementare) Sezione critica di n processi Dato condiviso: semaphore mutex; /* mutex = 1 */ Processo P i : wait(mutex); signal(mutex); while (1); Attesa attiva (busy waiting) Sia P i nella sua SC Sia P k nella sua sezione d ingresso P k attende di entrare nella sua SC, e si trova nel ciclo della sezione d ingresso Questa è attesa attiva: spreco di cicli CPU Utili in sistemi con più CPU, in quanto non vengono effettuati cambi di contesto (va bene solo per attese brevi) Si presenta in tutte le soluzioni viste per il problema della SC 27 Implementazione dei semafori Un processo che esegue una wait e deve attendere, si blocca (va in una coda associata al semaforo) Quando viene eseguita una signal, si riattiva uno dei processi interessati Si definisce il semaforo come un record typedef struct { int value; struct process *L; /* lista di processi */ semaphore; Ci sono due operazioni: block sospende il processo che la invoca wakeup(p) riattiva l esecuzione del processo bloccato P block e wakeup(p) sono chiamate di sistema 28 Implementazione Le operazioni sui semafori ora sono wait(s): S.value--; if (S.value < 0) { aggiungi questo processo a S.L; block; signal(s): S.value++; if (S.value <= 0) { rimuovi un processo P da S.L; wakeup(p); 29 Implementazione wait e signal devono essere eseguite in modo atomico Con una sola CPU è sufficiente disabilitare le interruzioni Con più CPU, si possono usare una delle soluzioni al problema della sezione critica viste in precedenza (vedendo wait e signal come sezioni critiche) 30 5

6 Semafori come strumento di sincronizzazione generale Eseguire B in P j solo dopo che A è stato eseguito in P i Si usa un semaforo flag inizializzato a 0 P i M A signal(flag) P j M wait(flag) B 31 Stallo e attesa indefinita (deadlock e starvation) Deadlock 2 o più processi aspettano indefinitamente un evento che può essere causato solo da uno sei processi in attesa Siano S e Q due semafori inizializzati a 1 P 0 P 1 wait(s) critical section wait(q) critical section wait(q) Q.L = {P 0 wait(s) S.L = {P 1 M M signal(s) Stallo signal(q) Starvation attesa indefinita. Un processo può non venire mai rimosso dalla coda di un semaforo (ex. LIFO) 32 Due tipi di semafori Semaforo contatore il suo valore intero varia in un dominio logicamente non limitato Semaforo binario il suo valore intero può essere solo 0 o 1 Si può implementare un semaforo contatore con semafori binari Implementare un semaforo cont. con semaforo binario Sia S il semaforo contatore da realizzare Strutture dati: binary-semaphore S1, S2; int C: Inizializzazione: S1 = 1 S2 = 0 C = valore iniziale di S Implementare S Esercizio: provate a scrivere wait(s) e signal(s) in termini di S1 e S2 Implementare S wait wait(s1); C--; if (C < 0) { signal(s1); wait(s2); signal(s1); 35 signal wait(s1); C ++; if (C <= 0) signal(s2); else signal(s1); 36 6

7 Classici problemi di sincronizzazione Produttori e consumatori con memoria limitata Problema dei lettori e degli scrittori Problema dei filosofi a cena Prod e consum con memoria limitata Dati condivisi semaphore full, empty, mutex; Inizio: Le soluzioni presentate utilizzano semafori 37 full = 0, empty = n, mutex = 1 38 Produttore (con memoria limitata) produci elemento nextp wait(empty); wait(mutex); aggiungi nextp al buffer signal(mutex); signal(full); while (1); Consumatore (con memoria limitata) wait(full) wait(mutex); metti un elem dal buffer in nextc signal(mutex); signal(empty); consuma l elem in nextc while (1); Problema dei lettori e degli scrittori Si consideri un insieme di dati (ad es. Un file) condivisi fra vari processi concorrenti Alcuni processi possono richiedere solo la lettura, altri posso richiederne un aggiornamento (lettura+scrittura) Questi due tipi di processi sono distinti (lettori e scrittori) Due lettori possono accedere contemporaneamente ai dati, ma non uno scrittore e un altro processo!

8 Problema dei lettori e degli scrittori Ne esistono diverse varianti, tutte basate su vari tipi di priorità esistenti fra lettori e scrittori La prima: nessun lettore attenda, a meno che uno scrittore abbia già ottenuto il permesso di scrivere (cioè: nessun lettore attende altri lettori solo perchè uno scrittore attende) La seconda: uno scrittore, quando pronto, esegue la scrittora al più presto Le soluzioni a questi due problemi possono portare a attesa indefinita (primo caso: scrittori/ secondo caso: lettori). Quindi sono state proposte altre varianti Qui vediamo la soluzione al primo problema 43 Problema dei lettori e degli scrittori Dati condivisi: semaphore mutex, wrt; int readcount; /* wrt è comune a tutti i processi */ Inizio: mutex = 1, wrt = 1, readcount = 0 44 Scrittore wait(wrt); writing is performed signal(wrt); 45 Lettore Cosa succede quando uno scrittore è in SC e n lettori attendono di entrarvi? wait(mutex); readcount++; if (readcount == 1) wait(wrt); signal(mutex); reading is performed wait(mutex); readcount--; if (readcount == 0) signal(wrt); signal(mutex): 46 Problema dei filosofi a cena 5 filosofi a cena (processi) Filosofi mangiano/pensano Mangiare: 2 forchette (risorse) Prendi una forchetta alla volta Prevenire deadlock Dati condivisi: semaphore chopstick[5]; Inizio: tutti I valori a

9 Filosofi a cena Filosofo i: Stallo? Mutua esclusione? wait(chopstick[i]) wait(chopstick[(i+1) % 5]) eat signal(chopstick[i]); signal(chopstick[(i+1) % 5]); think while (1); Filosofi a cena (no stallo) = {0; Filosofi a cena (no stallo) cont. Regioni critiche con semafori -- problemi Invertire la posizione di wait e signal signal(mutex); no mutua esclusione wait(mutex); Due wait wait (mutex); deadlock wait (mutex); No signal wait (mutex); deadlock Starvation? Regione critica condizionale Per evitare questi problemi, sono stati introdotti costrutti di linguaggio ad alto livello Regione critica condizionale v: shared T; region v when (B) do S; Mentre si esegue S nessun altro processo può accedere a v. B è una condizione booleana Se B è vera, allora l acceso a v è consentito (in mutua esclusione) 53 Regione critica condizionale Produttore consumatore struct vettore { elemento gruppo[n] int contatore, inserisci, preleva; Produttore region vettore when (contatore<n) { gruppo[inserisci]=appena_prodotto; inserisci=(inserisci+1)%n; contatore++;; Consumatore region vettore when (contatore>0) { da_consumare=gruppo[preleva]; preleva=(preleva+1)%n; contatore--;; 54 9

10 Regione critica condizionale Il compilatore utilizza le seguenti variabili Semaphore mutex,primo_ritardo,secondo_ritardo; Inizio: 1,0,0 int primo_contatore, secondo_contatore; Inizio: 0,0 La mutua esclusione è garantita da mutex Se B è falsa, il processo attende su primo_ritardo. Prima di rivalutare B, il processo viene spostato su secondo_ritardo I contatori contano il numero di processi sui due semafori Realizzazione riportata in Fig Monitor Altro costrutto di sincronizzazione ad alto livello È caratterizzato da opertaori definiti dal programmatore È costituito da dichiarazioni di variabili, e di corpi di procedure o funzioni che realizzano gli operatori Monitor monitor nome_monitor { dich di variabili condivise procedure body P1(...) { procedure body P2(...) {... procedure body Pn(...) { {codice di inizializzazione Monitor Il monitor assicura che al suo interno sia attivo un solo processo alla volta (mutua esclusione) Per poter esprimere tutti gli schemi di sincronizzazione, sono necessarie le variabili condition condition x, y; Le operazioni eseguibili su variabili condition sono wait e signal x.wait() il processo che la invoca rimane sospeso fino a che un altro processo non invoca x.signal() se non ci sono processi in attesa di una signal, non succede nulla (a differenza della signal nei semafori) Monitor Produtore/consumatore con Monitor Problema: P invoca x.signal, e Q viene sbloccato da questa istruzione Quali fra P e Q deve proseguire? Se Q P deve attendere Se P Q deve attendere Ragionevole, dato che P è già in esecuzione. Ma sarà sempre valida la condizione attesa da Q quando Q andrà in esecuzione?

11 Filosofi a cena con monitor monitor fc { enum {pensa, affamato, mangia stato[5]; condition auto[5]; void prende(int i) { stato[i]=affamato; verifica(i); if (stato[i]!=mangia) auto[i].wait(); void pensa(int i) { stato[i]=pensa; verifica((i+4)%5); verifica((i+1)%5); void verifica(int i) { filosofo(i): fc.prende(i);... mangia... fc.posa(i) if ((stato[(i+4)%5]=!mangia)&&(stato[i]==affamato)&&(stato[(i+1)%5]!=mangia)){ stato[i]=mangia; auto[i].signal(); void init(){ for (int i=0;i<5;i++) stato[i]=pensa; 61 Monitor con semafori A ogni monitor si associa un semaforo mutex inizializzato a 1 wait(mutex) prima di entrare nel monitor e signal(mutex) all uscita Dato che un processo che esegue una signal (condition) deve attendere che il processo svegliato si metta in attesa o lasci il monitor si usa un semaforo prossimo (inizializzato a zero), su cui i processo che esguono signal si autosospendono prossimo_contatore conta i processi sospesi su prossimo Provate Monitor con semafori Ogni procedura F di un monitor diventa: wait (mutex)... corpo di F... if(prossimo_contatore > 0) signal(prossimo); else signal(mutex); Monitor con semafori Variabili condition Per ogni variabile condition x, si usa un semaforo x_sem e un contatore x_contatore (inizializzati a zero) Monitor con semafori x.wait: x_contatore++; if(prossimo_contatore > 0) signal(prossimo); else signal(mutex); wait(x_sem); x_contatore--; x.signal: if(x_contatore > 0) { prossimo_contatore++; signal(x_sem); wait(prossimo); prossimo_contatore++; 65 Monitor attesa condizionale Quando più processi sono sospesi su una condizione x, quando viene eseguita la x.signal, quale processo viene riattivato? Si ordinano i processi con coda FIFO Costrutto attesa condizionale x.wait(c), dove c è detto numero di priorità, e si memorizza col nome del processo sospeso Quando si esegue x.signal, si riprende il processo cui è associato il numero di priorità più basso 66 11

12 Monitor Java fornisce i monitor thread user-level ME nell esecuzione dei metodi synchronized di una stessa classe non ci sono variabili di condizione wait(), notify() simili a block(), wakeup() è possibile svegliare tutti i processi in attesa Vediamo di nuovo il problema del produttore e del consumatore 67 Per oggi basta!!!! 68 12

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 3 e 4

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 3 e 4 Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 3 e 4 Sincronizzazione dei Processi (2 a parte) Problemi classici di sincronizzazione

Dettagli

Esercitazioni 3 e 4. Sincronizzazione dei Processi (2 a parte)

Esercitazioni 3 e 4. Sincronizzazione dei Processi (2 a parte) Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 3 e 4 Sincronizzazione dei Processi (2 a parte) Problemi classici di sincronizzazione

Dettagli

6. Sincronizzazione dei Processi. Esempio: Produttore- Consumatore con n elementi. Esempio: Produttore- Consumatore con n elementi

6. Sincronizzazione dei Processi. Esempio: Produttore- Consumatore con n elementi. Esempio: Produttore- Consumatore con n elementi 1 6. Sincronizzazione dei Processi Importante: l accesso concorrente a dati condivisi può produrre dati inconsistenti processi cooperanti attraverso la condivisione di dati devono agire in modo ordinato,

Dettagli

Sistemi operativi - Concetti ed esempi -Settima edizione

Sistemi operativi - Concetti ed esempi -Settima edizione Capitolo 6: Sincronizzazione dei processi Capitolo 6: Sincronizzazione dei processi Introduzione Problema della sezione critica Soluzione di Peterson Hardware per la sincronizzazione Semafori Problemi

Dettagli

Sincronizzazione dei processi. Capitolo 5 -- Silberschatz

Sincronizzazione dei processi. Capitolo 5 -- Silberschatz Sincronizzazione dei processi Capitolo 5 -- Silberschatz Processi cooperanti Nei moderni SO, i processi vengono eseguiti concorrentemente Possono essere interrotti in qualunque momento nel corso della

Dettagli

Sistemi operativi. Lez. 9: primitive per la concorrenza i semafori

Sistemi operativi. Lez. 9: primitive per la concorrenza i semafori Sistemi operativi Lez. 9: primitive per la concorrenza i semafori Disabilitazione interrupt Due processi possono trovarsi in sezione critica simultaneamente solo perché chi vi è entrato per primo è stato

Dettagli

7. Sincronizzazione dei Processi. Esempio: Produttore- Consumatore con n elementi. Esempio: Produttore- Consumatore con n elementi

7. Sincronizzazione dei Processi. Esempio: Produttore- Consumatore con n elementi. Esempio: Produttore- Consumatore con n elementi 1 7. Sincronizzazione dei Processi Importante: l accesso concorrente a dati condivisi può produrre dati inconsistenti processi cooperanti attraverso la condivisione di dati devono agire in modo ordinato,

Dettagli

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate

Dettagli

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune a) Uso di una risorsa condivisa Siano P 1, P 2, P 3,, P k i processi che condividono l uso di una risorsa comune

Dettagli

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive) SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a

Dettagli

Processi e Thread. Meccanismi di IPC (1)

Processi e Thread. Meccanismi di IPC (1) Processi e Thread Meccanismi di IPC (1) 1 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per comunicare e sincronizzarsi : scambiare dati utilizzare

Dettagli

Sistemi Operativi. 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione

Dettagli

6. Sincronizzazione dei Processi. 6.1 introduzione. 6.1 Esempio: Produttore - Consumatore con n elementi

6. Sincronizzazione dei Processi. 6.1 introduzione. 6.1 Esempio: Produttore - Consumatore con n elementi 1 6. Sincronizzazione dei Processi Introduzione Il Problema della Sezione Critica Sincronizzazione via hardware Semafori Problemi Classici di Sincronizzazione 6.1 introduzione 2 Più processi possono cooperare

Dettagli

Sincronizzazione. Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Produttore-Consumatore Produttore e consumatore con memoria limitata Utilizza

Dettagli

SEMAFORI. Semaforo. s--; Il valore di un semaforo s è legato al numero delle operazioni wait e signal eseguite su di esso dalla relazione:

SEMAFORI. Semaforo. s--; Il valore di un semaforo s è legato al numero delle operazioni wait e signal eseguite su di esso dalla relazione: Semaforo SEMAFORI Una variabile di tipo semaforico viene definita come una variabile intera non negativa, cui è possibile accedere solo tramite le due operazioni wait e signal definite nel seguente modo:

Dettagli

Sistemi operativi Sincronizzazione fra processi

Sistemi operativi Sincronizzazione fra processi Sistemi operativi 2003-2004 Sincronizzazione fra processi Introduzione I processi devono poter comunicare tra loro in modo strutturato e preciso Per passarsi informazioni Per non interferire con gli altri

Dettagli

Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi.

Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi. Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni

Dettagli

Monitor [Hoare 74] Uso del monitor

Monitor [Hoare 74] Uso del monitor Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni

Dettagli

Sommario. G. Piscitelli

Sommario. G. Piscitelli Sommario Sincronizzazione Inconsistenza di dati condivisi: i rischi dell'interleaving nei processi concorrenti La race condition Il problema della "sezione critica" dei processi concorrenti e la soluzione

Dettagli

Obie0vi SINCRONIZZAZIONE DEI PROCESSI

Obie0vi SINCRONIZZAZIONE DEI PROCESSI SISTEMI OPERATIVI SINCRONIZZAZIONE DEI PROCESSI Obie0vi» Introduzione al problema della sezione cri

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

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

Dettagli

Meccanismi di sincronizzazione: Semafori e Monitor

Meccanismi di sincronizzazione: Semafori e Monitor Meccanismi di sincronizzazione: Semafori e Monitor 1 Introduzione Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura

Dettagli

SISTEMI OPERATIVI. Semafori. Semafori

SISTEMI OPERATIVI. Semafori. Semafori SISTEMI OPERATIVI 04.a Semafori Semafori Approfondimento sulla mutua escluone Manipolazione di risorse mutex Strategie di soluzione Lock e Un Primitive semaforiche 1 Approfondimento sulla mutua escluone

Dettagli

Sincronizzazione Soluzioni hardware

Sincronizzazione Soluzioni hardware Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzionihardware al problemadellasc possono essere classificate

Dettagli

Mutua Esclusione A" B"

Mutua Esclusione A B Mutua Esclusione Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le operazioni con le quali i

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

Architettura degli Elaboratori 2

Architettura degli Elaboratori 2 Architettura degli Elaboratori 2 Esercitazioni 2 Grafo di allocazione delle risorse Comunicazione tra processi A. Memo - 2004 Grafo di allocazione delle risorse è uno strumento grafico utile per l individuazione

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Thread POSIX nel sistema Linux (parte

Dettagli

Mutua Esclusione A B. Esempi di mutua esclusione

Mutua Esclusione A B. Esempi di mutua esclusione Mutua Esclusione Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le operazioni con le quali i

Dettagli

Mutua Esclusione. Esempi di mutua esclusione

Mutua Esclusione. Esempi di mutua esclusione Mutua Esclusione Esempi di mutua esclusione Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le

Dettagli

Sistemi Operativi. IPC: Inter-Process Communication

Sistemi Operativi. IPC: Inter-Process Communication Sistemi Operativi IPC: Inter-Process Communication A.A. 2018-2019 Competizione per le risorse (Race Condition) Regioni critiche 1. No two processes may be simultaneously inside their critical regions 2.

Dettagli

Architettura degli Elaboratori 2. Concetti preliminari (1) Concetti preliminari (2) Concetti preliminari (3) Grafo di allocazione delle risorse

Architettura degli Elaboratori 2. Concetti preliminari (1) Concetti preliminari (2) Concetti preliminari (3) Grafo di allocazione delle risorse Architettura degli Elaboratori 2 Esercitazione 2 Scheduling: grafo di allocazione delle risorse Synchronization: comunicazione tra processi A. Memo - 2005 Concetti preliminari () L esecuzione dei programmi

Dettagli

Il monitor. Sistemi Operativi T AA

Il monitor. Sistemi Operativi T AA Il monitor Sistemi Operativi T AA 2011-2012 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (public o entry) ad una struttura dati comune a più

Dettagli

Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni.

Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni. Monitor Costrutto sintattico che associa un insieme di procedure ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni permesse su quella struttura.

Dettagli

Introduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale

Introduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale Introduzione Meccanismi di sincronizzazione: Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura di programmi

Dettagli

Sincronizzazione. Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Produttore-Consumatore Produttoree consumatorecon memorialimitata Utilizzaun

Dettagli

Sincronizzazione dei processi

Sincronizzazione dei processi Sincronizzazione dei processi Sincronizzazione dei processi Introduzione Il problema della sezione critica Hardware di sincronizzazione Semafori Problemi classici di sincronizzazione Monitor Esempi di

Dettagli

Sistemi operativi. Lez. 6: primitive per la concorrenza e semafori

Sistemi operativi. Lez. 6: primitive per la concorrenza e semafori Sistemi operativi Lez. 6: primitive per la concorrenza e semafori Supporto alla concorrenza L algoritmo di Peterson consente una soluzione del problema della concorrenza che non richiede alcun presupposto

Dettagli

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A Nome: Cognome: Matricola: corso: fila: posto: Esercizio 1 (5 punti) Si consideri un processore che dispone dei registri speciali PC (program counter) e PS (program status), dello stack pointer SP e dei

Dettagli

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore è uno dei problemi più comuni di concorrenza tra processi. Il problema presenta uno o più

Dettagli

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore Il primo approccio alla risoluzione del problema del produttore/consumatore considera un buffer infinito presentato

Dettagli

Chiamata di procedura remota

Chiamata di procedura remota Con gli strumenti gia` visti, si puo` realizzare come segue: lato chiamante: send asincrona immediatamente seguita da una receive lato chiamato: una receive seguita, al termine dell azione richiesta, da

Dettagli

Mutua Esclusione Il problema della mutua esclusione non si sovrappongano nel tempo Nessun vincolo è imposto sull ordine

Mutua Esclusione Il problema della mutua esclusione non si sovrappongano nel tempo Nessun vincolo è imposto sull ordine Mutua Esclusione Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le operazioni con le quali i

Dettagli

Chiamata di procedura remota

Chiamata di procedura remota Chiamata di procedura remota Meccanismo di comunicazione e sincronizzazione tra processi in cui un processo che richiede un servizio ad un altro processo rimane sospeso fino al completamento del servizio

Dettagli

Indice. Modelli di comunicazione tra processi (IPC) Strumenti di programmazione per IPC

Indice. Modelli di comunicazione tra processi (IPC) Strumenti di programmazione per IPC Indice Modelli di comunicazione tra processi (IPC) Strumenti di programmazione per IPC Interazione tra processi Interferenza e Mutua Esclusione Problemi di IPC: Produttore-Consumatore Modelli di IPC Processo:

Dettagli

Il monitor. Sistemi Operativi T AA

Il monitor. Sistemi Operativi T AA Il monitor Sistemi Operativi T AA 2009-2010 1 Costrutti linguistici per la sincronizzazione I semafori costituiscono un meccanismo molto potente per la sincronizzazione dei processi. Tuttavia, il loro

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

Comunicazione e sincronizzazione tra processi Indice. Comunicazione e sincronizzazione. Esempio 1. Monitor - 1. Monitor - 2. Monitor - 3.

Comunicazione e sincronizzazione tra processi Indice. Comunicazione e sincronizzazione. Esempio 1. Monitor - 1. Monitor - 2. Monitor - 3. tra processi tra processi Indice Meccanismi. Monitor. Scambio di messaggi.3 Barriere Problemi classici 3 Stallo Monitor - La soluzione mediante semafori è di uso difficile e rischioso Un posizionamento

Dettagli

Cooperazione tra Processi

Cooperazione tra Processi Cooperazione tra Processi Principi Il problema della sezione critica: le race condition Supporto hardware Semafori Monitor Scambio di messaggi Barriere Cos è la concorrenza? È un tema centrale nella progettazione

Dettagli

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione Soluzioni basate su primitive di sincronizzazione Le primitive di sincronizzazione piú comuni sono: Lock (mutex) - realizzati in

Dettagli

Sincronizzazione tra processi

Sincronizzazione tra processi Sincronizzazione tra processi Sommario Introduzione Problema della sezione critica Consistenza dei dati Soluzioni basate su attesa attiva (busy waiting) Metodi software Metodi hardware Semafori Primitive

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

Sincronizzazione dei processi

Sincronizzazione dei processi Sincronizzazione dei processi Sincronizzazione dei processi Background Il problema della sezione critica Hardware di sincronizzazione Semafori Problemi classici di sincronizzazione Monitor 6.2 Background

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

Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette

Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette 1 3 processi fumatori 1 processo tabaccaio Ogni fumatore esegue ripetutamente un ciclo in cui prepara una sigaretta e poi la fuma Per preparare la sigaretta un fumatore ha bisogno di 3 ingredienti (risorse):

Dettagli

Le risorse. Alcune definizioni

Le risorse. Alcune definizioni Le risorse Dicesi risorsa un qualunque oggetto, fisico o logico, di cui un processo necessita per portare a termine la sua evoluzione. Poiché un processo evolve eseguendo istruzioni (procedure), una risorsa

Dettagli

Sistemi operativi. Lez. 6/7: primitive per la concorrenza e semafori

Sistemi operativi. Lez. 6/7: primitive per la concorrenza e semafori Sistemi operativi Lez. 6/7: primitive per la concorrenza e semafori Supporto alla concorrenza L algoritmo di Peterson consente una soluzione del problema della concorrenza che non richiede alcun presupposto

Dettagli

Sincronizzazione. Soluzioni software Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Soluzioni software Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Soluzioni software Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Specifiche Le soluzioni software al problema della si basano sull utilizzo di variabili

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T5 C2 Produttore-consumatore 1 Prerequisiti Concetto di semaforo Risorsa permanente o consumabile Sincronizzazione Significato e uso di wait() e signal() 2 1 Introduzione Ci

Dettagli

Sistemi Operativi. Lezione 7-bis Esercizi

Sistemi Operativi. Lezione 7-bis Esercizi Sistemi Operativi Lezione 7-bis Esercizi Esercizio Problema dei lettori e scrittori Un insieme di processi condivide un file dal quale alcuni possono solo leggere i dati, altri solo scriverli Più lettori

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 9 Giovedì 10-11-2016 Semafori un semaforo s è una struttura dati gestita

Dettagli

Algoritmo di Dekker. Algoritmo di Peterson

Algoritmo di Dekker. Algoritmo di Peterson shared int turn = P; shared boolean needp = false; shared boolean needq = false; cobegin P // Q coend Riassunto Utile Concorrenza Algoritmo di Dekker process P { needp = true; while (needq) if (turn ==

Dettagli

Sistemi Operativi. Lez. 6: Problemi classici della programmazione concorrente

Sistemi Operativi. Lez. 6: Problemi classici della programmazione concorrente Sistemi Operativi Lez. 6: Problemi classici della programmazione concorrente Produttore e consumatore Uno dei problemi classici della programmazione concorrente è il problema del produttore consumatore.

Dettagli

Il monitor. Costrutti linguistici per la sincronizzazione

Il monitor. Costrutti linguistici per la sincronizzazione Il monitor 1 Costrutti linguistici per la sincronizzazione I semafori costituiscono un meccanismo molto potente per la sincronizzazione dei processi. Tuttavia, il suo uso può risultare troppo a basso livello.

Dettagli

Sincronizzazione Le sezioni scritiche

Sincronizzazione Le sezioni scritiche Sincronizzazione Le sezioni scritiche Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Ambiente di sviluppo Concorrenza e sincronizzazione Programmazione concorrente (tramite

Dettagli

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito A

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito A Nome: Cognome: Matricola: corso: fila: posto: sercizio 1 (5 punti) Uno spool di stampa di un sistema multithread che gestisce due stampanti fisiche, è organizzato con un thread gestore che gestisce le

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 14 Giovedì 22-11-2018 Scheduling in UNIX Poiché UNIX è un sistema multiutente

Dettagli

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito B

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito B Nome: Cognome: Matricola: corso: fila: posto: sercizio 1 (5 punti) Un sistema con 5 processi (A,, C,, ) e risorse dei tipi R1, R2, R3, R4, rispettivamente di molteplicità [7, 7, 3, 6], utilizza l algoritmo

Dettagli

Concetto di processo

Concetto di processo Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica Lucidi delle esercitazioni di (Corsi A e B) A.A. 2002/2003 1 Concetto di processo Nei primi sistemi di calcolo era consentita

Dettagli

Nona Esercitazione. Thread e memoria condivisa Sincronizzazione tramite semafori

Nona Esercitazione. Thread e memoria condivisa Sincronizzazione tramite semafori Nona Esercitazione Thread e memoria condivisa Sincronizzazione tramite semafori Agenda Esercizio 1 DA SVOLGERE Sincronizzazione avanzata produttore consumatore tramite semafori Esercizio 2 DA SVOLGERE

Dettagli

6 Il Sistema Operativo Indice (segue) 6.4 La gestione dei processi Sincronizzazione tra processi - 1

6 Il Sistema Operativo Indice (segue) 6.4 La gestione dei processi Sincronizzazione tra processi - 1 6 Il Sistema Operativo Indice (segue) Sincronizzazione e comunicazione tra processi (Inter-Process Communication) Situazioni catastrofiche (deadlock) Il Sistema Operativo Architettura degli elaboratori

Dettagli

Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente

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

Dettagli

MUTUA ESCLUSIONE. Esempi di mutua esclusione

MUTUA ESCLUSIONE. Esempi di mutua esclusione MUTUA ESCLUSIONE Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le operazioni con le quali i

Dettagli

Sincronizzazione tra processi 2. Sincronizzazione tra processi 1. Sincronizzazione tra processi 4. Sincronizzazione tra processi 3

Sincronizzazione tra processi 2. Sincronizzazione tra processi 1. Sincronizzazione tra processi 4. Sincronizzazione tra processi 3 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo di ordinamento reciproco In realtà, molti processi condividono risorse e informazioni funzionali La condivisione richiede l

Dettagli

Sincronizzazione tra processi 2. Sincronizzazione tra processi 1. Sincronizzazione tra processi 4. Sincronizzazione tra processi 3

Sincronizzazione tra processi 2. Sincronizzazione tra processi 1. Sincronizzazione tra processi 4. Sincronizzazione tra processi 3 Sincronizzazione tra processi 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo di ordinamento reciproco In realtà molti processi condividono risorse e informazioni funzionali

Dettagli

istruzioni eseguite in ordine predeterminabile in base al codice del programma e dei valori dei dati in ingresso

istruzioni eseguite in ordine predeterminabile in base al codice del programma e dei valori dei dati in ingresso Programmazione Concorrente sequenze critiche e mutua esclusione istruzioni atomiche deadlock sincronizzazione e semafori settembre 2009 programmazione concorrente 1 modello di esecuzione sequenziale istruzioni

Dettagli

Sincronizzazione tra processi 1

Sincronizzazione tra processi 1 Sincronizzazione tra processi 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo di ordinamento reciproco In realtà molti processi condividono risorse e informazioni funzionali

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 8 Martedì 8-11-2016 1 Algoritmi di scheduling basati sulle priorità Assegnano

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Maggio 2013 Programmazione concorrente:

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P3 Programmazione concorrente 2/12/2015 programmazione concorrente 1 modello di esecuzione sequenziale istruzioni eseguite in ordine predeterminabile in base

Dettagli

ESERCIZIO SincrAmbGlob-1

ESERCIZIO SincrAmbGlob-1 ESERCIZI DI SINCRONIZZAZIONE TRA THREAD CON SEMAFORI ESERCIZIO SincrAmbGlob-1 Si consideri un sistema nel quale è definito il semaforo sem1 e i thread P1, P2 e P3. Al tempo t il semaforo sem1 ha la seguente

Dettagli

Corso di Laurea in Ingegneria Informatica. Sistemi Operativi (Corsi A e B)

Corso di Laurea in Ingegneria Informatica. Sistemi Operativi (Corsi A e B) Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica Lucidi delle esercitazioni di (Corsi A e B) A.A. 2002/2003 1 Concetto di processo Nei primi sistemi di calcolo era consentita

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.2 Produttore-consumatore 1 Prerequisiti Elementi di programmazione concorrente Mutua esclusione Produttore-consumatore 2 1 Introduzione In questa Unità vediamo

Dettagli

Esercizio Sincronizzazione Thread

Esercizio Sincronizzazione Thread Esercitazione di oratorio 17/10/2007 Esercizio Il laboratorio di Informatica del Polo Marzotto e utilizzato da tre tipi di utenti, studenti, tesisti e professori ed ogni utente deve fare una richiesta

Dettagli

Modello a memoria comune

Modello a memoria comune Modello a memoria comune 1 Interazione nel modello a Memoria Comune Se la macchina concorrente e` organizzata secondo il modello a memoria comune: PROCESSO=THREAD Comunicazione attraverso dati/risorse

Dettagli

Architettura degli elaboratori 2 - T. Vardanega 1

Architettura degli elaboratori 2 - T. Vardanega 1 " % &'( &( È ) Architettura degli elaboratori - T. Vardanega Pagina Architettura degli elaboratori - T. Vardanega Pagina define N / posizioni del contenitore / typedef int semaforo; / P decrementa, V incrementa,

Dettagli

TECN.PROG.SIST.INF. Programmazione concorrente. Roberta Gerboni

TECN.PROG.SIST.INF. Programmazione concorrente. Roberta Gerboni Roberta Gerboni Concorrenza tra processi Multiprogramming più processi presenti in memoria, ma unico processore (parallelismo apparente) Multiprocessing più processori che operano in parallelo (parallelismo

Dettagli

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a.

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a. Multitheading Corso di Laurea in Informatica Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione a.a. 1999/2000 Matteo Baldoni 1 Thread multipli all interno di un Task thread PC

Dettagli

Sistemi Operativi e Laboratorio, Prova del 9/9/2016

Sistemi Operativi e Laboratorio, Prova del 9/9/2016 Nome: Cognome: Matricola: corso: fila: posto: Esercizio 1 (4 punti) In un sistema che gestisce la memoria con paginazione, sono presenti i processi A, B e C. Lo stato di occupazione della memoria al tempo

Dettagli

Nona Esercitazione. Thread e memoria condivisa Sincronizzazione tramite semafori

Nona Esercitazione. Thread e memoria condivisa Sincronizzazione tramite semafori Nona Esercitazione Thread e memoria condivisa Sincronizzazione tramite semafori Agenda Esercizio 1 DA SVOLGERE Sincronizzazione avanzata produttore consumatore tramite semafori Esercizio 2 DA SVOLGERE

Dettagli

SCD. Comunicazione tra processi. Comunicazione tra processi. UniPD - SCD 2008/9 - Sistemi Concorrenti e Distribuiti 1. Premesse 1. Esempio.

SCD. Comunicazione tra processi. Comunicazione tra processi. UniPD - SCD 2008/9 - Sistemi Concorrenti e Distribuiti 1. Premesse 1. Esempio. Anno accademico 2008/9 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Premesse 1 I processi di un sistema concorrente sono raramente indipendenti l uno dall altro

Dettagli

SCD. Comunicazione tra processi. Comunicazione tra processi. UniPD - SCD 2007/8 - Corso di Sistemi Concorrenti e Distribuiti 1. Premesse 1.

SCD. Comunicazione tra processi. Comunicazione tra processi. UniPD - SCD 2007/8 - Corso di Sistemi Concorrenti e Distribuiti 1. Premesse 1. Anno accademico 2007/8 Corso di Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD I processi di un sistema concorrente sono raramente indipendenti l uno dall altro

Dettagli

i. Diagramma di GANTT relativo all esecuzione dei quattro processi:

i. Diagramma di GANTT relativo all esecuzione dei quattro processi: 1. (a) Si descriva il meccanismo attraverso cui i programmi richiamano i servizi del Sistema Operativo. Si faccia qualche esempio. (b) Si descriva il funzionanmento di un server web basato su thread multipli.

Dettagli

Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7.

Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7. Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7. Modulo 1 - Architettura del calcolatore Unità 1 - Architettura e funzionamento dei sistemi di elaborazione Lezione 1 - Macchina

Dettagli

SISTEMI OPERATIVI 13 giugno 2013 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 13 giugno 2013 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 13 giugno 2013 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli

Anno Scolastico 2018/2019 SETTE ANTONIO LOSITO ANTONIO TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TEL.

Anno Scolastico 2018/2019 SETTE ANTONIO LOSITO ANTONIO TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TEL. Anno Scolastico 2018/2019 PROGRAMMA DIDATTICO CONSUNTIVO CLASSE 4EI Docenti SETTE ANTONIO LOSITO ANTONIO Disciplina TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TEL. Unità di lavoro 1: Moduli

Dettagli

Sistemi Operativi e Laboratorio, Prova del 5/4/2016

Sistemi Operativi e Laboratorio, Prova del 5/4/2016 Nome: Cognome: Matricola: fila: posto: corso: Esercizio 1 (5 punti) Si consideri un processore che dispone dei registri speciali PC (program counter) e PS (program status), dello stack pointer SP e dei

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 7 Maggio 2007 Outline Java e C# 1 Java

Dettagli