15.06.2013 Views

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• Memoria non con<strong>di</strong>visa (tecniche <strong>di</strong> message-pass<strong>in</strong>g).<br />

Carnielli Efrem: Programmazione a componenti<br />

Programmazione a componenti<br />

Dal nostro punto <strong>di</strong> vista hanno più rilievo le tecniche <strong>di</strong> message pass<strong>in</strong>g.<br />

L’architettura client/server si basa su message pass<strong>in</strong>g s<strong>in</strong>crono a capacità nulla.<br />

Spieghiamo meglio con riferimento alla figura 1.12<br />

In<br />

esecuzione<br />

In attesa<br />

In<br />

esecuzione<br />

Client<br />

Richiesta<br />

Risposta<br />

Figura 1.12.. Message pass<strong>in</strong>g s<strong>in</strong>crono nel client server<br />

Server<br />

In attesa o<br />

altre attività<br />

Sod<strong>di</strong>sfare<br />

richiesta<br />

In attesa o<br />

altre attività<br />

Tempo<br />

Il s<strong>in</strong>cronismo tra i due processi è garantito utilizzando un canale <strong>di</strong> capacità zero: il<br />

client una volta <strong>in</strong>viata la richiesta deve aspettare che il server sia pronto per<br />

ricevere, qu<strong>in</strong><strong>di</strong> ad ogni <strong>in</strong>vio <strong>di</strong> richiesta deve avvenire una s<strong>in</strong>cronizzazione tra<br />

client e server.<br />

Oltre a quello a capacità nulla appena visto, esistono message pass<strong>in</strong>g a capacità<br />

limitata e illimitata (non <strong>in</strong>f<strong>in</strong>ita!).Dipende tutto dal buffer <strong>di</strong> ricezione.<br />

Se un buffer è limitato a n allora si possono <strong>in</strong>viare n richieste prima <strong>di</strong> saturare il<br />

canale e poi si rimane <strong>in</strong> attesa che il server com<strong>in</strong>ci a sod<strong>di</strong>sfarle; solo a quel punto<br />

si ha s<strong>in</strong>cronizzazione.<br />

Facciamo un esempio <strong>di</strong> comunicazione con buffer a capacità non nulla:<br />

pren<strong>di</strong>amo il Mc Donald, <strong>in</strong> cui il cuoco è il client, lo scivolo dei pan<strong>in</strong>i il buffer e, il<br />

ragazzo che prende le ord<strong>in</strong>azioni, il server.<br />

Il cuoco prepara e confeziona i pan<strong>in</strong>i (le richieste) e li <strong>in</strong>via sullo scivolo verso il<br />

cameriere, il cuoco <strong>in</strong>serisce pan<strong>in</strong>i senza <strong>in</strong>teresse <strong>di</strong> quello che sta facendo il<br />

cameriere, non c’è s<strong>in</strong>cronia, e si ferma solo se lo scivolo è pieno. Il cameriere<br />

<strong>di</strong>versamente è sempre <strong>in</strong> attesa <strong>di</strong> ricevere pan<strong>in</strong>i sullo scivolo, da uno o più<br />

20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!