RPC, DSM and naming questions ----------------------------- 1. (a) Explain the domain caching concept used by Bershad et. al. in implementing LRPC. Give two advantages of domain caching. (b) How is domain caching different from caching recently blocked threads on idle processors? (c) Are the benefits of domain caching nullified by tagged TLBs? Consider the case of uniprocessors and shared memory multiprocessors. 2. Discuss the pros and cons of implementing RPC over TCP. 3. List some dissimilarities of the Grapevine architecture with DNS. Mention the rationale behind the choices made by the DNS designers. 4. What is the essential difference between an RPC system and an RMI system? 5. What are the challenges in implementing synchronized methods in distributed, replicated objects? 6. What are the challenges in implementing a general RPC mechanism? Name at least three. 7. One interesting way to distinguish communication mechanisms is in the kind of coordination they support. For each of the following mechanisms, characterize its coordination model in terms of referential coupling (do processes need to know each other's names in order to communicate?) and temporal coupling (do processes need to exist at the same time in order to communicate?): (a) remote procedure call (b) publish/subscribe (as in the Information Bus) (c) e-mail (d) IP multicast (e) distributed shared memory (f) shared database (g) Linda/T-Spaces/JavaSpaces 8. The Information Bus paper claims that anonymous communication can help improve a system's availability. Give an example to support this claim, and an example to refute it. 9. A global caching naming system like DNS can be viewed as a large distributed shared memory. Give three reasons why implementing DNS on top of a fully coherent DSM would be a bad idea. 10. Remote procedure calls could have either at_most_once or at_least_once semantics. What aspects of the design of a distributed client_server system does this choice impact? 11. In a client server system using RPC's, a dispatcher at the server side receives incoming RPC requests. Should it spawn a thread per request? Or should it place the request in a queue (from where a server process would repeatedly dequeue and service the request)? 12. Would an Infobus-style event notification service scale to thousands of participants in a wide area network? 13. What are the main advantages of object-oriented RPC (or RMI) over traditional, procedure-oriented RPC systems? 14. DNS supports both iterative and recursive queries. However, name servers are not bound to implement recursive queries. Give an example of an attack that could put the whole Internet down if servers were supposed to always accept recursive queries. 15. How can DNS be used to provide load-balancing? What are the advantages and disadvantages of using this mechanism over an IP-based load balancer? 16. Describe how RPC calls are handled by a single process (no threads) server in terms of address space and threads of execution. What advantages does multithreading give you? 17. How do the different variable sharing annotations of Munin affect the performance and correctness of an application built on DSM. 18. Imagine you are designing a global naming system. What design considerations would vary depending on the rate of updates to the system? (Compare a system where the names and their mappings are rather static to one with high degree of change (At least 1 every few seconds) 19. What are the major differences between RPC and OO-RPC? 20. What kind of kernel support is necessary for message passing versus RPC? Could some of the optimizations from the LRPC paper be used to facilitate faster message passing? 21. For each pre-defined consistency type in Munin (read-only, migratory, write-shared, producer-consumer, reduction, result, and conventional), list whether that optimization could be used by a database application.