La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune.

Presentazioni simili


Presentazione sul tema: "Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune."— Transcript della presentazione:

1 Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune

2 PCD Linguaggi e concorrenza2 Programmazione Concorrente e Distribuita Concurrent Pascal (75-77)  Concurrent Pascal (75-77) linguaggio soprattutto didattico tre tipi di moduli: processi classi monitor  Modula e Modula 2 (77-82) linguaggio per applicazioni in tempo reale modulare creazione dinamica di processi monitor (interface module) coroutine

3 PCD Linguaggi e concorrenza3 Programmazione Concorrente e Distribuita Mesa (77)  Mesa (77) linguaggio per pprogrammazione di sistemi creazione dinamica di processi (fork) coroutine monitor  Edison (83) linguaggio per applicazioni in tempo reale processi (cobegin/coend) regioni critiche condizionali

4 PCD Linguaggi e concorrenza4 Programmazione Concorrente e Distribuita Costrutti monitor in linguaggi di programmazione  Ada La programmazione dei monitor e’ semplificata con l’uso di oggetti protetti Si puo’ accedere ad un oggetto protetto sono eseguite tramite entry e procedure. Tutte saranno garantite in M.E. in M.E. Non esistono condition ma barriere (del tipo when B) Le barriere si possono usare solo nelle entry Le barriere devono dipendere solo da variabili condivise I processi che si bloccano su una barriera vengono memorizzati in una coda FIFO (ricordando anche la condizione B) Il processo che lascia l’oggetto protetto testa la condizione dei processi bloccati

5 PCD Linguaggi e concorrenza5 Problema Lettori Scrittori in Ada con oggetti protetti protected RW is entry StartRead; entry StartRead; procedure EndRead; procedure EndRead; entry Startwrite; entry Startwrite; procedure EndWrite; procedure EndWrite;private Readers: Natural :=0; Readers: Natural :=0; Writing: Boolean := false; Writing: Boolean := false; end RW; protected body RW is entry StartRead entry StartRead when not Writing is when not Writing is begin begin Readers := Readers + 1; Readers := Readers + 1; end StartRead; end StartRead; procedure EndRead is begin begin Readers := Readers - 1; Readers := Readers - 1; end EndRead; end EndRead; entry StartWrite when not Writing and Readers = 0 is when not Writing and Readers = 0 is begin begin Writing := true; Writing := true; end StartWrite; end StartWrite; procedure EndWrite is procedure EndWrite is begin begin Writing := false; Writing := false; end EndWrite; end EndWrite; end RW; end RW;

6 PCD Linguaggi e concorrenza6 Monitor in Java In Java non esiste un costrutto predefinito monitor ma e’ possibile costruire un oggetto analogo al costrutto monitor, utilizzando:  metodi synchronized  wait (blocca il processo rilasciando il lock)  notify (analogo allo statement signal del monitor)  notifyAll (sveglia tutti I processi bloccati sul monitor)

7 PCD Linguaggi e concorrenza7 Monitor in Java class RWMonitor { volatile int readers = 0; volatile int readers = 0; volatile boolean writing = false; volatile boolean writing = false; synchronized void StartRead() { while (writing) while (writing) try { try { wait(); wait(); } catch(InterruptedException e) {} } catch(InterruptedException e) {} readers = readers + 1; readers = readers + 1; notifyAll(); notifyAll(); } synchronized void EndRead() { readers = readers - 1; readers = readers - 1; if (readers == 0) notifyAll(); if (readers == 0) notifyAll(); } synchronized void StartWrite() { while(writing || (readers != 0)) while(writing || (readers != 0)) try { try { wait(); wait(); }catch (InterruptedException e) {} }catch (InterruptedException e) {} writing = true; writing = true; } synchronized void EndWrite() { synchronized void EndWrite() { writing = false; writing = false; notifyAll(); notifyAll(); }}


Scaricare ppt "Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune."

Presentazioni simili


Annunci Google