Software & Systems Modeling

, Volume 6, Issue 1, pp 39–58 | Cite as

An Asynchronous Communication Model for Distributed Concurrent Objects

Special Section Paper

Abstract

Distributed systems are often modeled by objects that run concurrently, each with its own processor, and communicate by synchronous remote method calls. This may be satisfactory for tightly coupled systems, but in the distributed setting synchronous external calls lead to much waiting; at best resulting in inefficient use of processor capacity, at worst resulting in deadlock. Furthermore, it is difficult to combine active and passive behavior in concurrent objects. This paper proposes an object-oriented solution to these problems by means of asynchronous method calls and conditional processor release points. Although at the cost of additional internal nondeterminism in the objects, this approach seems attractive in asynchronous or unreliable environments. The concepts are integrated in a small object-oriented language with an operational semantics defined in rewriting logic, and illustrated by examples.

Keywords

Asynchronous method calls Concurrent objects Distributed systems Rewriting logic 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abadi M., Cardelli L. (1996) A Theory of Objects. Monographs in Computer Science. Springer, Berlin Heidelberg New YorkGoogle Scholar
  2. 2.
    Ábrahám-Mumm, E., de Boer F.S., de Roever, W.-P., Verification for Java’s reentrant multithreading concept. In: International Conference on Foundations of Software Science and Computation Structures (FOSSACS’02). Lecture Notes in Computer Science, vol. 2303 pp. 5–20. Springer, Berlin Heidelberg New York (2002)Google Scholar
  3. 3.
    Agha, G.A. Abstracting interaction patterns: a programming paradigm for open distributed systems. In: Najm, E., Stefani, J.-B.: (eds.) Proceedings 1st IFIP International Conference on Formal Methods for Open Object-based Distributed Systems (FMOODS’96). Paris pp. 135–153 Chapman & Hall, London 1996Google Scholar
  4. 4.
    Agha G.A., Mason I.A., Smith S.F., Talcott C.L. (1997) A foundation for actor computation. J. Funct. Program. 7(1): 1–72MATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    America P. (1987). POOL-T: A parallel object-oriented language. In: Yonezawa A., Tokoro M. (eds). Object-Oriented Concurrent Programming. The MIT Press, Cambridge, pp. 199–220Google Scholar
  6. 6.
    Andrews G.R. (2000) Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, ReadingGoogle Scholar
  7. 7.
    Arbab F. (2004) Reo: A channel-based coordination model for component composition. Math. Struct. Comput. Sci. 14(3): 329–366MATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Benton N., Cardelli L., Fournet C. (2004) Modern concurrency abstractions for C#. ACM Trans. Program. Lang. Syst. 26(5): 769–804CrossRefGoogle Scholar
  9. 9.
    Bergstra J., Klop J.W. (1984) Process algebra for synchronous communication. Inf. Control. 60(1–3): 109–137MATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Brinch Hansen P. (1999) Java’s insecure parallelism. ACM SIG-PLAN Notices 34(4): 38–45CrossRefGoogle Scholar
  11. 11.
    Cardelli L. (1995) A language with distributed scope. Comput. Syst. 8(1): 27–59Google Scholar
  12. 12.
    Caromel D., Roudier Y. (1996). Reactive programming in Eiffel//. In: Briot J.-P., Geib J.M., Yonezawa A. (eds). Proceedings of the Conference on Object-Based Parallel and Distributed Computation. Lecture Notes in Computer Science, vol. 1107 Springer, Berlin Heidelberg New York, pp. 125–147Google Scholar
  13. 13.
    Carriero N., Gelernter D. (1989) Linda in context. Commun. ACM 32(4): 444–458CrossRefGoogle Scholar
  14. 14.
    Cenciarelli P., Knapp A., Reus B., Wirsing M. (1999). An event-based structural operational semantics of multi-threaded Java. In: Alves-Foss J. (eds). Formal Syntax and Semantics of Java. Lecture Notes in Computer Science, vol. 1523 Springer, Berlin Heidelberg New York, pp. 157–200Google Scholar
  15. 15.
    Clavel M. (2000) Reflection in Rewriting Logic: Metalogical Foundations and Metaprogramming Applications. CSLI Publications, StanfordMATHGoogle Scholar
  16. 16.
    Clavel M., Durán F., Eker S., Lincoln P., Martí-Oliet N., Meseguer J., Quesada J.F. (2002) Maude: specification and programming in rewriting logic. Theor. Comput. Sci. 285, 187–243MATHCrossRefGoogle Scholar
  17. 17.
    Cugola, G., Ghezzi, C. CJava: introducing concurrent objects in Java. In: Orlowska, M.E., Zicari, R. (eds.) 4th International Conference on Object Oriented Information Systems (OOIS’97), London, pp. 504–514. Springer, Berlin Heidelberg New York (1997)Google Scholar
  18. 18.
    Dahl O.-J. (1994). Monitors revisited. In: Roscoe A.W. (eds). A Classical Mind, Essays in Honour of C.A.R. Hoare. Prentice-Hall, Englewood Cliffs, pp. 93–103Google Scholar
  19. 19.
    Dahl, O.-J., Myrhaug, B., Nygaard, K. (Simula 67) Common base language. Technical Report S-2. Norsk Regnesentral (Norwegian Computing Center), Oslo, Norway (1968)Google Scholar
  20. 20.
    Damm, W., Josko, B., Pnueli, A., Votintseva, A.: Understanding UML: a formal semantics of concurrency and communication in real-time UML. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) First International Symposium on Formal Methods for Components and Objects (FMCO 2002), Revised Lectures. Lecture Notes in Computer Science, vol. 2852, pp. 71–98. Springer, Berlin Heidelberg New York (2003)Google Scholar
  21. 21.
    Di Blasio P., Fischer K. (1996). a calculus for concurrent objects. In: Montanari U., Sassone V. (eds). 7th International Conference on Concurrency Theory (CONCUR’96). Lecture Notes in Computer Science, vol. 1119, Springer, Berlin Heidelberg New York, pp. 655–670Google Scholar
  22. 22.
    Dijkstra E.W. (1975) Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18(8): 453–457MATHCrossRefMathSciNetGoogle Scholar
  23. 23.
    Dovland, J., Johnsen, E.B., Owe, O. Verification of concurrent objects with asynchronous method calls. In: Proceedings of the IEEE International Conference on Software Science, Technology & Engineering (SwSTE’05), pp. 141–150. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  24. 24.
    Eugster P.T., Felber P.A., Guerraoui R., Kermarrec A.-M. (2003) The many faces of publish/subscribe. ACM Comput. Surv. 35(2): 114–131CrossRefGoogle Scholar
  25. 25.
    Fischer C. (1997). CSP-OZ: a combination of Object-Z and CSP. In: Bowman H., Derrick J. (eds). Proceedings of the 2nd IFIP Workshop on Formal Methods for Open Object-Based Distributed Systems (FMOODS). Chapman & Hall, London, pp. 423–438Google Scholar
  26. 26.
    Fournet, C., Gonthier, G. The reflexive chemical abstract machine and the join-calculus. In: ACM Symposium on Principles of Programming Languages (POPL), pp. 372–385 (1996)Google Scholar
  27. 27.
    Ghezzi, C., Jazayeri, M. Programming Language Concepts, 3rd edn. Wiley, (1998)Google Scholar
  28. 28.
    Goguen J.A., Winkler T., Meseguer J., Futatsugi K., Jouannaud J.-P. (2000). Introducing OBJ. In: Goguen J.A., Malcolm G. (eds). Software Engineering with OBJ: Algebraic Specification in Action, chapter 1. Kluwer, Dordrecht, pp. 3–167Google Scholar
  29. 29.
    Gordon A.D., Hankin, P.D. A concurrent object calculus: reduction and typing. In: Nestmann U., Pierce, B.C. (eds) HLCL ’98: High-Level Concurrent Languages, Nice, France, September 12, 1998. Electronic Notes in Theoretical Computer Science, vol. 16(3). Elsevier, Amsterdam (1998)Google Scholar
  30. 30.
    Gosling J., Joy B., Steele G.L., Bracha G. (2000) The Java language specification, 2nd edn. Java series. Addison-Wesley, ReadingGoogle Scholar
  31. 31.
    Hoare C.A.R. (1974) Monitors: an operating systems structuring concept. Commun. ACM 17(10): 549–557MATHCrossRefGoogle Scholar
  32. 32.
    Hoare C.A.R. (1985) Communicating Sequential Processes. International Series in Computer Science. Prentice-Hall, Englewood CliffsGoogle Scholar
  33. 33.
    Honda K., Tokoro M. (1991). An object calculus for asynchronous communication. In: America P. (eds). Proceedings of the European Conference on Object-Oriented Programming (ECOOP’91). Lecture Notes in Computer Science, vol. 512, Springer, Berlin Heidelberg New York, pp. 133–147CrossRefGoogle Scholar
  34. 34.
    International Telecommunication Union: Open distributed processing – reference model parts 1–4. Technical report. ISO/IEC, Geneva (1995)Google Scholar
  35. 35.
    Itzstein G.S., Jasiunas M. (2003). On implementing high level concurrency in Java. In: Omondi A., Sedukhin S. (eds). Proceeding of the 8th Asia-Pacific Computer Systems Architecture Conference (ACSAC 2003). Lecture Notes in Computer Science, vol. 2823, Springer, Berlin Heidelberg New York, pp. 151–165Google Scholar
  36. 36.
    Johnsen E.B., Owe O. (2002). A compositional formalism for object viewpoints. In: Jacobs B., Rensink A. (eds). Proceedings of the 5th International Conference on Formal Methods for Open Object-Based Distributed Systems (FMOODS’02). Kluwer Dordrecht, pp. 45–60Google Scholar
  37. 37.
    Johnsen, E.B., Owe, O. An asynchronous communication model for distributed concurrent objects. In; Proceedings of the 2nd IEEE International Conference on Software Engineering and Formal Methods (SEFM’04), pp. 188–197. IEEE Computer Society Press, Los Alamitos (2004)Google Scholar
  38. 38.
    Johnsen E.B., Owe O. (2004). Object-oriented specification and open distributed systems. In: Owe O., Krogdahl S., Lyche T. (eds). From Object-Orientation to Formal Methods: Essays in Memory of Ole-Johan Dahl. Lecture Notes in Computer Science, vol. 2635, Springer, Berlin Heidelberg New York, pp. 137–164Google Scholar
  39. 39.
    Johnsen E.B., Owe O. (2005). A dynamic binding strategy for multiple inheritance and asynchronously communicating objects. In: de Boer F.S., Bonsangue M.M., Graf S., de Roever W.-P. (eds). Proceedings of the 3rd International Symposium on Formal Methods for Components and Objects (FMCO 2004). Lecture Notes in Computer Science, vol. 3657, Springer, Berlin Heidelberg New York, pp. 274–295CrossRefGoogle Scholar
  40. 40.
    Johnsen, E.B., Owe, O. Inheritance in the presence of asynchronous method calls. In: Proceedings of the 38th Hawaii International Conference on System Sciences (HICSS’05). IEEE Computer Society Press, Los Alamites (2005)Google Scholar
  41. 41.
    Johnsen, E.B., Owe, O., Axelsen, E.W. A run-time environment for concurrent objects with asynchronous method calls. In: N. Martí-Oliet, (ed.) Proceedings of the 5th International Workshop on Rewriting Logic and its Applications (WRLA’04), March 2004. Electronic Notes in Theoretical Computer Science, vol. 117, pp. 375–392. Elsevier, Amsterdam (2005)Google Scholar
  42. 42.
    Johnsen E.B., Owe O., Simplot-Ryl I. (2005). A dynamic class construct for asynchronous concurrent objects. In: Steffen M., Zavattaro G. (eds). Proceedings of the 7th International Conference on Formal Methods for Open Object-Based Distributed Systems (FMOODS’05). Lecture Notes in Computer Science, vol. 3535, Springer, Berlin Heidelberg New York, pp. 15–30Google Scholar
  43. 43.
    Johnsen E.B., Owe O., Yu I.C. (2005) Creol: a type-safe object-oriented model for distributed concurrent systems. Research Report 327. Department of Informatics, University of Oslo, NorwayGoogle Scholar
  44. 44.
    Jones, C.B. Development methods for computer programmes including a notion of interference. PhD thesis, Oxford University (l981)Google Scholar
  45. 45.
    Liskov, B.H., Shrira, L. Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: Wise, D.S. (ed.) Proceedings of the SIGPLAN Conference on Programming Lanugage Design and Implementation (PLDI’88). Atlanta, GE, USA, June 1988, pp. 260–267. ACM Press, New York (1988)Google Scholar
  46. 46.
    Liskov B.H., Wing J.M. (1994) A behavioral notion of subtyping. ACM Trans. on Program. Lang. and Syst. 16(6): 1811–1841CrossRefGoogle Scholar
  47. 47.
    Mahony B.P., Dong, J.S. Sensors and actuators in TCOZ. In: Wing, J.M., Woodcock, J., Davies, J. (eds.) World Congress on Formal Methods (FM’99), Proceedings, Volume II. Lecture Notes in Computer Science, vol. 1709, pp. 1166–1185. Springer, Berlin Heidelberg New York (1999)Google Scholar
  48. 48.
    Malabarba S., Pandey R., Gragg J., Barr E., Barnes J.F. (2000). Runtime support for type-safe dynamic Java classes. In: Bertino E. (eds). 14th European Conference on Object-Oriented Programming (ECOOP 2000). Lecture Notes in Computer Science, vol. 1850, Springer, Berlin Heidelberg New York, pp. 337–361Google Scholar
  49. 49.
    Meseguer J. (1992) Conditional rewriting logic as a unified model of concurrency. Theor. Comput. Sci. 96, 73–155MATHCrossRefMathSciNetGoogle Scholar
  50. 50.
    Meseguer, J., Rosu, G. Rewriting logic semantics: from language specifications to formal analysis tools. In: Basin, D.A., Rusinowitch, M. (eds.) Automated Reasoning – Proceeding of the Second International Joint Conference (IJCAR 2004). Lecture Notes in Computer Science, vol. 3097, pp. 1–44. Springer, Berlin Heidelberg New York (2004)Google Scholar
  51. 51.
    Milner R. (1999) Communicating and Mobile Systems: The π-Calculus. Cambridge University Press, CambridgeGoogle Scholar
  52. 52.
    Najm E., Stefani J.-B. (1995) A formal semantics for the ODP computational model. Comput. Netw. ISDN Syst. 27, 1305–1329CrossRefGoogle Scholar
  53. 53.
    Nierstrasz O. (1992). A tour of Hybrid – a language for programming with active objects. In: Mandrioli D., Meyer B. (eds). Advances in Object-Oriented Software Engineering. Prentice-Hall, Englewood Cliffs, pp. 167–182Google Scholar
  54. 54.
    Notkin, D., Garlan, D., Griswold, W.G., Sullivan, K. Adding implicit invocation to languages: three approaches. In: Nishio, S., Yonezawa, A. (eds.) Proceedings of the 1st JSSST International Symposium on Object Technologies for Advanced Software. Lecture Notes in Computer Science, vol. 742, pp. 489–510. Springer, Berlin Heidelberg New York (1993)Google Scholar
  55. 55.
    Philippsen M. (2000) A survey on concurrent object-oriented languages. Concurrency: Pract. Exp. 12(10): 917–980MATHCrossRefGoogle Scholar
  56. 56.
    Pierce B.C., Turner D.N. (1998). Pict: a programming language based on the pi-calculus. In: Plotkin G., Stirling C., Tofte M. (eds). Proof, Language and Interaction: Essays in Honour of Robin Milner. The MIT Press, CambridgeGoogle Scholar
  57. 57.
    Sangiorgi D., Walker D. (2001) The π-Calculus: A Theory of Mobile Processes. Cambridge University Press, CambridgeGoogle Scholar
  58. 58.
    Shaw M. (1994). Procedure calls are the assembly language of software interconnection: connectors deserve first-class status. In: Lamb D.A. (eds). Workshop on Studies of Software Design. Lecture Notes in Computer Science, vol. 1078, Springer, Berlin Heidelberg New York, pp. 17–32Google Scholar
  59. 59.
    Smith G., Derrick J. (2001) Specification, refinement and verification of concurrent systems – an integration of Object-Z and CSP. Formal Methods Syst. Des. 18(3): 249–284MATHCrossRefGoogle Scholar
  60. 60.
    Vasconcelos V.T. (1994). Typed concurrent objects. In: Tokoro M., Pareschi R. (eds). Proceedings of the 8th European Conference on Object-Oriented Programming (ECOOP’94). Lecture Notes in Computer Science, vol. 821, Springer, Berlin Heidelberg New York, pp. 100–117Google Scholar
  61. 61.
    Vinoski S. CORBA: integrating diverse applications within distributed heterogeneous environments. IEEE Commun. Mag. 14(2), (1997)Google Scholar
  62. 62.
    Yokote Y., Tokoro M. (1987). Concurrent programming in ConcurrentSmalltalk. In: Yonezawa A., Tokoro M. (eds). Object-Oriented Concurrent Programming. The MIT Press, Cambridge, pp. 129–158Google Scholar
  63. 63.
    Yonezawa A. (1990) ABCL: An Object-Oriented Concurrent System. Series in Computer Systems. The MIT Press, CambridgeGoogle Scholar

Copyright information

© Springer-Verlag 2006

Authors and Affiliations

  1. 1.Department of InformaticsUniversity of OsloOsloNorway

Personalised recommendations