SISTEMI DISTRIBUITI A.A. 2010/11 Prima prova intermedia - 1/12/2010 Cognome___________________________________ Nome_______________________________ Matricola___________________________________ Domanda 1 (punti 7) Si descrivano le caratteristiche del modello publish/subscribe in termini di architettura e comunicazione supportata, discutendone i vantaggi della sua adozione in un sistema distribuito. E’ possibile realizzare un sistema publish-subscribe in cui il routing dei messaggi sia basato su DHT? Si motivi la risposta, evidenziando gli eventuali problemi individuati. Domanda 2 (punti 6) Si consideri l’URL http://spaceflight.nasa.gov/home/index.html e la richiesta di accesso a tale URL da mylaptop.ce.uniroma2.it. Si assuma che il name server local sia dns.uniroma2.it. Si descriva come avviene il processo di risoluzione del nome spaceflight.nasa.gov nel corrispondente indirizzo IP, evidenziando il possibile uso di risoluzione ricorsiva o iterativa, caching e replicazione allo scopo di migliorare la scalabilità e la tolleranza ai guasti. Domanda 3 (punti 7) Si descrivano gli algoritmo di Lamport distribuito e di Ricart-Agrawala per la mutua esclusione distribuita, discutendone le somiglianze e le differenze. Perché in entrambi questi algoritmi si usa il clock logico scalare e non il clock logico vettoriale? Cosa succede se un processo si guasta? Come si può gestire l’aggiunta di un nuovo processo? Domanda 4 (punti 7) Si consideri il seguente problema di sincronizzazione per l’accesso esclusivo alla sezione critica. Un’applicazione ha due tipi di thread (A e B) ed i thread di tipo A hanno maggiore priorità dei thread di tipo B. Ciò significa che nessun thread di tipo B può acquisire la risorsa se un thread di tipo A sta aspettando. Si presenti lo pseudocodice di una soluzione per il problema che garantisca le proprietà di safety e liveness. Si indichino le variabili di sincronizzazione, l’entry protocol e l’exit protocol, spiegando quali funzioni e costrutti dell’API Pthread possono essere usati per risolvere il problema. Domanda 5 (punti 5) Si consideri un sistema in cui il client comunica con il server tramite RPC. Il client continua ad inviare una richiesta di operazione al server (ad esempio operation_x()) finché il server non risponde con il risultato della richiesta. Quale tipo di semantica di comunicazione viene fornita in questo caso e quali vantaggi e svantaggi presenta? Si spieghi come si deve realizzare il client ed il server per ottenere la semantica individuata.