La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

9.07.20062.2.3.2 G. Cantone1 Corso di Programmazione a oggetti Programmazione concorrente Costrutti e meccanismi di alto livello a supporto della programmazione.

Presentazioni simili


Presentazione sul tema: "9.07.20062.2.3.2 G. Cantone1 Corso di Programmazione a oggetti Programmazione concorrente Costrutti e meccanismi di alto livello a supporto della programmazione."— Transcript della presentazione:

1 G. Cantone1 Corso di Programmazione a oggetti Programmazione concorrente Costrutti e meccanismi di alto livello a supporto della programmazione concorrente in ambiente globale Tipi di Monitor

2 G. Cantone2 Monitor Regione ATTESA MUTEX m (1) enter ATTIV O P exit && P=m.look()!=NULL / P==m.get(); exit m.cont==1 /m.cont=0; m.cont==0; exit && m.look() ==NULL /m.cont=1; Precondizione /Postcondizione

3 G. Cantone3 Monitor Regione Critica Condizionale ATTESA MUTEX m(1) c1.signal/while (c1.cont>0 ) {m.put(c1.get()); c1.cont--;} enter ATTIV O P ATTESA SYNC s (exit || wait ) &&m.look() !=NULL/ P==m.get(); c1.wait enter && m.cont==1; m.cont==0; Molte postcondizioni non riportate exit BLOCCAT O COND c1 cl.waitc1.signal

4 G. Cantone4 Monitor tipo Regione Critica Condizionale Un processo già in attesa su condizione, una volta passato in esecuzione, dovrà valutare nuovamente la condizione di avanzamento (un altro processo, già in attesa sul semaforo di ingresso o ivi ricollocato, entrando per primo nel monitor, potrebbe alterare lo stato del monitor medesimo): while(! ) cond.wait;

5 G. Cantone5 Monitor Java: notifyAll() Corrisponde a un monitor tipo Regione Critica Condizionale con un solo stato di attesa. Vi è ununica condizione di attesa, implicita. È una classe Java che include almeno un metodo synchronized. Tutti metodi synchronized operano in mutua esclusione. Con il segnalamento notifyAll(), TUTTI i processi in attesa vengono rimessi in ingresso del monitor.

6 G. Cantone6 Monitor/Implementazione/Casi reali Monitor Java notifyAll ATTESA MUTEX m(1) notifyAll/while (ai.cont>0 ) {m.put(ai.get()); ai.cont--;} enter synchronized ATTIV O P BLOCCAT O Attesa interna ai (exit || wait ) &&m.look() !=NULL/ P==m.get(); wait enter && m.cont==1; m.cont==0; Molte postcondizioni non riportate exit c.notifyAll

7 G. Cantone7 Monitor Java Con il segnalamento notify(), UN processo, scelto a caso fra quelli eventualmente in attesa, viene rimesso in ingresso del monitor.

8 G. Cantone8 Monitor Java: notify() ATTESA MUTEX m(1) notify/ai.cont>0 => {m.put(ai.get()); ai.cont--;} enter synchronized ATTIV O P BLOCCAT O Attesa interna ai (exit || wait ) &&m.look() !=NULL/ P==m.get(); wait enter && m.cont==1; m.cont==0; Molte postcondizioni non riportate exit c.notify

9 G. Cantone9 Variante Monitor MRCC È una variante del precedente MRCC. Se il processo attivo si sospende, allora libera il monitor. Un processo attivo può risvegliare un qualunque numero di processi i quali però sono forzati ad abbandonare il monitor, il cui controllo resta al processo segnalante. Luscita forzata potrebbe creare problemi, in quanto i processi forzati a uscire non potrebbero disporre dei giusti valori dei dati.

10 G. Cantone10 Variante Monitor RCC ATTESA MUTEX m(1) c.signal/if (c.cont>0 ) {m.put(c.get()); c.cont--;} enter synchronized ATTIV O P BLOCCAT O C (exit || wait ) &&m.look() !=NULL/ P==m.get(); wait enter && m.cont==1; m.cont==0; Molte postcondizioni non riportate exit c.signal

11 G. Cantone11 Ulteriori tipi di monitor Aspetti comuni I processi in attesa su coda interna sono, in termini di risveglio, privilegiati rispetto a quelli in attesa allesterno.

12 G. Cantone12 Monitor Monitore ATTESA MUTEX m(1) c.signal &&c.cont>0; enter ATTIV O P ATTESA COND c(0) : (exit || c.wait || (c.signal && c.cont==0)) &&m.look() !=NULL/ P==m.get(); c.wait enter && m.cont==1;/m.cont=0; m.cont==0; Molte postcondizioni non riportate c.signal || exit Come necessario per programma BLOCCAT O Cond c(0) ! Modificata

13 G. Cantone13 Monitor/Casi reali Monitor di Hoare Monitor Hansen Simili al Monitore. Impiegano Condition e uniQueue rispettivamente

14 G. Cantone14 Monitor/Implementazione/Casi reali Monitor Concurrent Pascal ATTESA MUTEX m(1) q.continue &&q.queue; enter ATTIV O P ATTESA QUEUE q(0) : (exit || delay || (q.continue && !q.queue)) &&m.look() !=NULL/ P==m.get(); q.delay enter && m.cont==1; m.cont==0; Molte postcondizioni non riportate continue || exit BLOCCAT O QUEUE q(0) 0..MAXP-1 !

15 G. Cantone15 Altri monitor/Aspetti Comuni Una C.signal() NON comporta labbandono dello stato ATTIVO. Ciò perché il processo segnalato potrebbe portare il monitor in uno stato diverso da quello lasciato dal processo che emette il segnale e, per questo, inconsistente per lo stesso.

16 G. Cantone16 Monitor Mediatore exit( enter ATTESA COND c(0) (exit || c.wait) &&u.cont==0 && m.look() !=NULL /P==m.get(); c.wait enter && m.cont==1; m.cont==0; c.signal && c.cont>0 c.signal &&c.cont>0; (exit || c.wait) && u.cont>0 ATTESA MUTEX m(1) PENDENTE URGENTE u(0) ATTIV O P exit Molte postcondizioni non riportate c.signal && c.cont==0 BLOCCAT O Cond c(0) Come necessario per programma

17 G. Cantone17 Monitor/Implementazione/Avanzamento- sospensione Monitor Gladiatore enter ((exit || c.wait) &&e.cont==0) && m.look()!=NULL / P==m.get() c.wait enter && m.cont==1;/m.cont=0; exit m.cont==0; c.signal ((exit || c.wait ) && e.cont>0) / P== e.get() c.signal && c.cont>0 ATTESA COND c ATTESA ELIGIBILI e ATTESA MUTEX m ATTIV O P Molte postcondizioni non riportate Come necessario per programma BLOCCAT O Cond c(0)

18 G. Cantone18 Monitor/ICasi reali Monitor Mesa enter ((exit || c.wait) &&e.cont==0) && m.look()!=NULL / P==m.get() c.wait enter && m.cont==1; exit m.cont==0; c.notify ((exit || c.wait ) && e.cont>0) / P== e.get() c.notify && c.cont>0 ATTESA COND c ATTESA ELEGIBILI e(0) ATTESA MUTEX m(1) ATTIV O P Molte postcondizioni non riportate Come necessario per programma BLOCCAT O Cond c(0)


Scaricare ppt "9.07.20062.2.3.2 G. Cantone1 Corso di Programmazione a oggetti Programmazione concorrente Costrutti e meccanismi di alto livello a supporto della programmazione."

Presentazioni simili


Annunci Google