Engineering Distributed Shared Memory Middleware for Java

  • Michele Mazzucco
  • Graham Morgan
  • Fabio Panzieri
  • Craig Sharp
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5870)


This paper describes the design, implementation and initial evaluation of an object-based Distributed Shared Memory (DSM) middleware system for Java. The resulting implementation allows the construction of event-based distributed systems using a simple programming model, allowing applications to be deployed without hardware or communication channel assumptions. Our implementation utilises standard, freely available, Message Oriented Middleware (MOM). This approach eases DSM development as many reliability and scalability issues associated to DSM may be handled by MOM. In addition to an implementation description, we provide performance results of a prototype system on a Local Area Network.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abdelaziz, M., et al.: Project Shoal, a dynamic Java clustering framework,
  2. 2.
    Amza, C., Cox, A.L., Dwarkadas, S., Keleher, P., Lu, H., Rajamony, R., Yu, W., Zwaenepoel, W.: TreadMarks: Shared Memory Computing on Networks of Workstations. IEEE Computer 29(2), 18–28 (1996)Google Scholar
  3. 3.
    Amza, C., Cox, A.L., Dwarkadas, S., Jin, L.-J., Rajamani, K., Zwaenepoel, W.: Adaptive Protocols for Software Distributed Shared Memory. Proceedings of the IEEE, Special Issue on Distributed Shared Memory Systems 87(3), 467–475 (1999)Google Scholar
  4. 4.
    Bal, H.E.: Orca: A Language for Distributed Programming. ACM SIGPLAN Notices 25(5), 17–24 (1990)CrossRefGoogle Scholar
  5. 5.
    Ban, B., et al.: JGroups, a toolkit for reliable multicast communication,
  6. 6.
    Cabillic, G., Muller, G., Puaut, I.: The Performance of Consistent Checkpointing in Distributed Shared Memory Systems. In: Proceedings of the 14th IEEE International Symposium on Reliable Distributed Systems (SRDS 1995), September 1995, pp. 96–105 (1995)Google Scholar
  7. 7.
    Carter, J.B., Bennett, J.K., Zwaenepoel, W.: Implementation and Performance of Munin. In: Proceedings of the 13th ACM Symposium on Operating Systems Principles (SOSP 1991), pp. 152–164. ACM Press, New York (1991)CrossRefGoogle Scholar
  8. 8.
    Eugster, P.T., Felber, P.A., Guerraoui, R., Kermarrec, A.-M.: The Many Faces of Publish/Subscribe. ACM Computing Surveys (CSUR) 35(2), 114–131 (2003)CrossRefGoogle Scholar
  9. 9.
    Fekete, A., Kaashoek, M.F., Lynch, N.: Implementing Sequentially Consistent Shared Objects using Broadcast and Point-To-Point Communication. Journal of the ACM (JACM) 45(1), 35–69 (1998)MATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Fischer, M.J., Lynch, N.A., Paterson, M.S.: Impossibility of Distributed Consensus with One Faulty Process. Journal of the ACM (JACM) 32(2), 374–382 (1985)MATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading (1995)Google Scholar
  12. 12.
    Gharachorloo, K., Lenosk, D., Laudon, J., Gibbons, P., Gupta, A., Hennessy, J.: Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors. In: Proceedings 17th Annual International Symposium on Computer Architecture, pp. 15–26. IEEE Computer Society, Los Alamitos (1990)CrossRefGoogle Scholar
  13. 13.
    Lamport, L.: Time, Clocks, and the Ordering of Events in a Distributed System. Communications of the ACM 21(7), 558–565 (1978)MATHCrossRefGoogle Scholar
  14. 14.
    Lamport, L.: How to Make a Multiprocessor Computer that Correctly Executes Multiprocess Programs. IEEE Transactions on Computers C-28(9), 690–691 (1979)MATHCrossRefGoogle Scholar
  15. 15.
    Li, K., Hudak, P.: Memory Coherence in Shared Virtual Memory Systems. ACM Transactions on Computer Systems 7(4), 321–359 (1989)CrossRefGoogle Scholar
  16. 16.
    Lipton, R.J., Sandberg, J.S.: PRAM: A Scalable Shared Memory. Technical Report CS-TR-180-88, Dept. of Computer Science, Princeton University (September 1988)Google Scholar
  17. 17.
    Menasce, D.A.: MOM vs. RPC: Communication Models for Distributed Applications. IEEE Internet Computing 9(2), 90–93 (2005)CrossRefGoogle Scholar
  18. 18.
    Morin, C., Kermarrec, A.-M., Banatre, M., Gefflaut, A.: An Efficient and Scalable Approach for Implementing Fault-Tolerant DSM Architectures. IEEE Transactions on Computers 49(5), 414–430 (2000), CrossRefGoogle Scholar
  19. 19.
    Pedersen, K.S., Vinter, B.: Java PastSet: A Structured Distributed Shared Memory System. IEEE Proceedings – Software 150(2), 147–153 (2003)CrossRefGoogle Scholar
  20. 20.
    Pu, C., Leff, A.: Replica Control in Distributed Systems: An Asynchronous Approach. In: Proceedings of the 1991 ACM SIGMOD International Conference on Management of Data (SIGMOD 1991), pp. 377–386. ACM Press, New York (1991)CrossRefGoogle Scholar
  21. 21.
    ScalAgent Distributed Technologies. JORAM: Java Open Reliable Asynchronous Messaging (2005),
  22. 22.
    Scales, D.J., Gharachorloo, K., Thekkath, C.A.: Shasta: a Low Overhead, Software-Only Approach for Supporting Fine-Grain Shared Memory. In: Proceedings of the 7th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-VII), pp. 174–185. ACM Press, New York (1996)CrossRefGoogle Scholar
  23. 23.
    Schöttner, M., Wende, M., Göckelmann, R., Bindhammer, T., Schmid, U., Schulthess, P.: A Gaming Framework for a Transactional DSM System. In: Proceedings of the 3rd IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2003), Tokyo, Japan, May 2003, pp. 502–509. IEEE Computer Society, Los Alamitos (2003), CrossRefGoogle Scholar
  24. 24.
    Seidmann, T.: Distributed Shared Memory Using The NET Framework. In: Proceedings of the 3rd IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2003), Tokyo, Japan, pp. 457–462. IEEE Computer Society, Los Alamitos (2003)CrossRefGoogle Scholar
  25. 25.
    Sohda, Y., Nakada, H., Matsuoka, S.: Implementation of a Portable Software DSM in Java. In: Proceedings of the 2001 Joint ACM-ISCOPE Conference on Java Grande (JGI 2001), pp. 163–172. ACM Press, New York (2001)CrossRefGoogle Scholar
  26. 26.
    Speight, E., Bennett, J.K.: Brazos: A Third Generation DSM System. In: Proceedings of the First Usenix Windows NT Symposium, August 1997, pp. 95–106 (1997),
  27. 27.
    Sultan, F., Iftode, L., Nguyen, T.: Scalable Fault-Tolerant Distributed Shared Memory. In: Proceedings of the 2000 ACM/IEEE conference on Supercomputing (Supercomputing 2000), pp. 20–32. IEEE Computer Society, Los Alamitos (2000)Google Scholar
  28. 28.
    Sun. Java Message Service. Sun Microystems, Version 1.1 (April 2002)Google Scholar
  29. 29.
    Veldema, R., Hofman, R.F.H., Bhoedjang, R.A.F., Bal, H.E.: Runtime Optimizations for a Java DSM Implementation. In: JGI 2001: Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, pp. 153–162. ACM Press, New York (2001)CrossRefGoogle Scholar
  30. 30.
    Wuu, G.T., Bernstein, A.J.: Efficient Solutions to the Replicated Log and Dictionary Problems. In: Proceedings of the 3rd Annual ACM Symposium on Principles of Distributed Computing (PODC 1984), pp. 233–242. ACM Press, New York (1984)CrossRefGoogle Scholar
  31. 31.
    Yu, W., Cox, A.L.: Java/DSM: A Platform for Heterogeneous Computing. Concurrency - Practice and Experience 9(11), 1213–1224 (1997)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Michele Mazzucco
    • 1
    • 3
  • Graham Morgan
    • 2
  • Fabio Panzieri
    • 3
  • Craig Sharp
    • 2
  1. 1.University of CyprusNicosiaCyprus
  2. 2.Newcastle UniversityNewcastle upon TyneUK
  3. 3.University of BolognaBolognaItaly

Personalised recommendations