Sistemi operativi - Concetti ed esempi -Settima edizione

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

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

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

Monitor [Hoare 74] Uso del monitor

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

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

Monitor. Introduzione. Struttura di un TDA Monitor

Sincronizzazione dei processi

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

Il monitor. Sistemi Operativi T AA

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

Sincronizzazione dei processi

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

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

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

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Architettura degli Elaboratori 2

Capitolo 7: Sincronizzazione

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

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

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

Sistemi Operativi Esercizi Sincronizzazione

Il costrutto monitor [Hoare 74]

Il monitor. Costrutti linguistici per la sincronizzazione

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Le risorse. Alcune definizioni

SISTEMI OPERATIVI. Sincronizzazione dei processi. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Il costrutto monitor [Hoare 74]

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche

Chiamata di procedura remota

ESERCIZIO SincrAmbGlob-1

Sincronizzazione tra processi

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 2007/8 - Corso di Sistemi Concorrenti e Distribuiti 1. Premesse 1.

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

Esercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)

Java Virtual Machine

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

SOLUZIONE. ESERCIZIO PRODUTTORE CONSUMATORE (semafori)

Sommario. G. Piscitelli

Iterazione (introduzione)

Esercizi Esercizi Università di Salerno

Il semaforo. Strumento linguistico di basso livello per risolvere problemi di sincronizzazione.

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

Il semaforo. Strumento linguistico di basso livello per risolvere problemi di sincronizzazione.

Sincronizzazione Le sezioni scritiche

Sistemi operativi Sincronizzazione fra processi

Sistemi Operativi Sincronizzazione tra Processi

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 8 problema 2 5 problema 3 7 problema 4 10 totale 30

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

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

CAPITOLO 3 : I PROCESSI

Reti e problematiche di Rete

Corso di Sistemi Operativi

SCD. Comunicazione tra processi. Comunicazione tra processi. Premesse 2. Variabili condivise 1. Premesse 1. Un modello di comunicazione sceglie tra

SOLUZIONE. <l auto arriva all ingresso I> while PostiDisponibili == 0

Sistemi Operativi A Parte III - Sincronizzazione

Semafori. Semafori classici con i thread POSIX 2

Il costrutto monitor

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Esercizi sulla sincronizzazione

Le strutture di controllo in C++

Sistemi Operativi. Lezione 7-bis Esercizi

Meccanismi di sincronizzazione: Semafori e Monitor

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Esercizio monitor con pthreads

Il costrutto monitor

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

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

Elementi di Architettura e Sistemi Operativi

CAPITOLO 24 I MONITOR

Sushi bar problem. The Little Book of Semaphores by Allen B. Downey

Sistemi Operativi e Laboratorio, Prova del 15/01/2014

Istruzioni Condizionali

Corso di Programmazione Concorrente. I Monitor. Valter Crescenzi

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

Algoritmi di Ricerca. Esempi di programmi Java

CdL MAGISTRALE in INFORMATICA A.A corso di SISTEMI DISTRIBUITI. I Processi. buffering gestione failure indirizzamento processi naming

Decima Esercitazione. Accesso a risorse condivise tramite Monitor Java

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

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

Strutture Dinamiche. Fondamenti di Informatica

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

DTI / ISIN / Titolo principale della presentazione. La cena dei filosofi. Amos Brocco, Ricercatore, DTI / ISIN. 14 maggio 2012

UNIVERSITÀ DEGLI STUDI DI BERGAMO

SISTEMI OPERATIVI. Sincronizzazione in Java (Semafori e barriere) Patrizia Scandurra (MODULO DI INFORMATICA II) LABORATORIO

Corso di Linguaggi di Programmazione

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Esercizio sul Monitor. Ponte con utenti grassi e magri 11 Novembre 2013

LinuxThreads. LinuxThreads: monitor & variabili condizione

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

Algoritmi di Ricerca. Esempi di programmi Java

Corso di Programmazione Concorrente Produttori / Consumatori. Valter Crescenzi

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Algoritmi di Ricerca. Esempi di programmi Java

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Fondamenti di Informatica

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Transcript:

Capitolo 6: Sincronizzazione dei processi Capitolo 6: Sincronizzazione dei processi Introduzione Problema della sezione critica Soluzione di Peterson Hardware per la sincronizzazione Semafori Problemi tipici di sincronizzazione Monitor Esempi di sincronizzazione Transazioni atomiche 6.2 Silberschatz, Galvin e Gagne 2006

Processo produttore /* produce un elemento in appena_prodotto */ while (contatore == DIM_BUFFER) ; // non fa niente buffer [inserisci] = appena_prodotto; inserisci = (inserisci + 1) % DIM_BUFFER; contatore++; 6.3 Silberschatz, Galvin e Gagne 2006 Processo consumatore while (contatore == 0) ; // non fa niente da_consumare = buffer[preleva]; preleva = (preleva + 1) % DIM_BUFFER; contatore--; /* Consuma un elemento in da_consumare */ 6.4 Silberschatz, Galvin e Gagne 2006

Algoritmo per il processo P i flag[i] = true; turno = j; while ( flag[j] && turno = = j); sezione critica flag[i] = false; sezione non critica 6.5 Silberschatz, Galvin e Gagne 2006 Istruzione TestAndSet boolean TestAndSet (boolean *obiettivo) { boolean valore = *obiettivo; *obiettivo = true; return valore: 6.6 Silberschatz, Galvin e Gagne 2006

Realizzazione di mutua esclusione tramite TestAndSet() while ( TestAndSet (&lock )) ; /* non fa niente // sezione critica lock = false; // sezione non critica 6.7 Silberschatz, Galvin e Gagne 2006 Definizione di Swap() void Swap (boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp; 6.8 Silberschatz, Galvin e Gagne 2006

Realizzazione di mutua esclusione con Swap() chiave = true; while ( chiave = = true) Swap (&lock, &chiave ); // sezione critica lock = false; // sezione non critica 6.9 Silberschatz, Galvin e Gagne 2006 Semafori come generale strumento di sincronizzazione Semafori contatore valore numerico illimitato Semafori binari valore è 0 o 1 Detti anche lock mutex Garantiscono la mutua esclusione Semaforo S; // inizializzato a 1 wait (S); sezione critica signal (S); 6.10 Silberschatz, Galvin e Gagne 2006

Uso dei semafori senza attesa attiva Uso di wait(): Uso di signal(): wait (S){ valore--; if (valore < 0) { aggiungi questo processo a S->lista; block(); signal (S){ valore++; if (valore <= 0) { togli un processo P da S->lista; wakeup(p); 6.11 Silberschatz, Galvin e Gagne 2006 Produttori e consumatori con memoria limitata (Cont.) Struttura generale del processo produttore // produce un elemento wait (vuote); wait (mutex); // inserisce un elemento nel buffer signal (mutex); signal (piene); 6.12 Silberschatz, Galvin e Gagne 2006

Produttori e consumatori con memoria limitata (Cont.) Struttura generale del processo consumatore wait (piene); wait (mutex); // rimuovi un elemento dal buffer signal (mutex); signal (vuote); // consuma l elemento 6.13 Silberschatz, Galvin e Gagne 2006 Problema dei lettori-scrittori (Cont.) Struttura generale di un processo scrittore: wait (scrittura) ; // esegui l operazione di scrittura signal (scrittura) ; 6.14 Silberschatz, Galvin e Gagne 2006

Problema dei lettori-scrittori (Cont.) Struttura generale di un processo lettore wait (mutex) ; numlettori ++ ; if (numlettori = = 1) wait (scrittura) ; signal (mutex) // esegui l operazione di lettura wait (mutex) ; numlettori - - ; if (numlettori == 0) signal (scrittura) ; signal (mutex) ; 6.15 Silberschatz, Galvin e Gagne 2006 Problema dei cinque filosofi 6.16 Silberschatz, Galvin e Gagne 2006

Problema dei cinque filosofi Struttura del filosofoi: While (true) { wait ( bacchetta[i] ); wait (bacchetta[ (i + 1) % 5] ); // mangia signal (bacchetta[i] ); signal (bacchetta[ (i + 1) % 5] ); // pensa 6.17 Silberschatz, Galvin e Gagne 2006 Sintassi di un monitor monitor nome_monitor { // dichiarazioni di variabili condivise procedure P1 ( ) {. procedure Pn ( ) { Codice d inizializzazione (.) { 6.18 Silberschatz, Galvin e Gagne 2006

Schema di un monitor 6.19 Silberschatz, Galvin e Gagne 2006 Monitor con variabili condition 6.20 Silberschatz, Galvin e Gagne 2006

Soluzione al problema dei cinque filosofi monitor FC { enum {pensa, affamato, mangia) stato [5] ; condition auto [5]; prende (int i) { stato[i] = affamato; verifica(i); if (stato[i]!= mangia) auto [i].wait; posa (int i) { stato[i] = pensa; // verifica i commensali di destra e sinistra verifica((i + 4) % 5); verifica((i + 1) % 5); 6.21 Silberschatz, Galvin e Gagne 2006 Soluzione al problema dei cinque filosofi (Cont.) verifica (int i) { if ( (stato[(i + 4) % 5]!= mangia) && (stato[i] == affamato) && (stato[(i + 1) % 5]!= mangia) ) { stato[i] = mangia ; auto[i].signal () ; codice di inizializzazione() { for (int i = 0; i < 5; i++) stato[i] = pensa; 6.22 Silberschatz, Galvin e Gagne 2006

Soluzione al problema dei cinque filosofi (Cont.) Ciascuno dei filosofi I invoca le operazioni pickup() e putdown() nella sequenza: fc.prende (i) mangia fc.posa (i) 6.23 Silberschatz, Galvin e Gagne 2006 Realizzazione di un monitor Per ciascuna variabile condizionale x, abbiamo: semaphore x-sem; // (initially = 0) int x-count = 0; L operazione x.wait è realizzabile come: x-contatore++; if (prossimo-contatore > 0) signal(prossimo); else signal(mutex); wait(x-sem); x-contatore--; 6.24 Silberschatz, Galvin e Gagne 2006

Realizzazione di monitor L operazione x.signal è realizzabile come: if (x-contatore > 0) { prossimo-contatore++; signal(x-sem ); wait(prossimo); prossimo-contatore--; 6.25 Silberschatz, Galvin e Gagne 2006 Sequenza d esecuzione 1: T 0 poi T 1 6.26 Silberschatz, Galvin e Gagne 2006

Sequenza d esecuzione 2: sequenza d esecuzione concorrente serializzabile 6.27 Silberschatz, Galvin e Gagne 2006 Sequenza d esecuzione 3 con il protocollo basato sulla marcatura temporale 6.28 Silberschatz, Galvin e Gagne 2006

Fine del Capitolo 6