1 / 7

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita. Linguaggi costrutti memoria comune. Programmazione Concorrente e Distribuita. Concurrent Pascal (75-77) linguaggio soprattutto didattico tre tipi di moduli: processi classi monitor Modula e Modula 2 (77-82)

chars
Download Presentation

Programmazione Concorrente e Distribuita

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune

  2. Programmazione Concorrente e Distribuita • 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 Linguaggi e concorrenza

  3. Programmazione Concorrente e Distribuita • 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 Linguaggi e concorrenza

  4. 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’ accederead 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 Linguaggi e concorrenza

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

  6. Monitor in Java In Java non esiste un costrutto predefinito monitor ma e’ possibile costruireun 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) Linguaggi e concorrenza

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

More Related