Reliable Distributed Programming in C++: The Arjuna Approach

Programming in a distributed system is fraught with potential difficulties caused, in part, by the physical distribution of the system itself. By making the distribution of the system transparent it is hoped that the task becomes comparable with that of programming a more traditional centralised system. Objectoriented programming systems are natural starting points for such an attempt due to the inherent modularisation and encapsulation properties they possess. Arjuna is one such system, programmed in C++, which permits the construction of reliable distributed applications in a relatively transparent manner. Objects in Arjuna can be located anywhere in the distributed system and are accessed as if they were purely local to the application. The use of remote procedure calls to perform the actual accesses is hidden by the use of stub generation techniques which operate on the original C++ class descriptions thus furthering the illusion of transparency. Reliability is achieved through the provision of traditional atomic transaction mechanisms implemented using only standard language features.

[1]  Santosh K. Shrivastava,et al.  Rajdoot: A Remote Procedure Call Mechanism Supporting Orphan Detection and Killing , 1988, IEEE Trans. Software Eng..

[2]  Michael B. Jones,et al.  Matchmaker: an interface specification language for distributed processing , 1985, POPL.

[3]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[4]  Santosh K. Shrivastava,et al.  The Treatment of Persistent Objects in Arjuna , 1989, Comput. J..

[5]  Phillip B. Gibbons A Stub Generator for Multilanguage RPC in Heterogeneous Environments , 1987, IEEE Transactions on Software Engineering.

[6]  Brian N. Bershad,et al.  A Remote Procedure Call Facility for Interconnecting Heterogeneous Computer Systems , 1987, IEEE Transactions on Software Engineering.

[7]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[8]  Alfred Z. Spector,et al.  Camelot: a flexible, distributed transaction processing system , 1988, Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference.

[9]  Maurice Herlihy,et al.  Inheritance of synchronization and recovery properties in Avalon/C++ , 1988, Computer.

[10]  Larry Carter,et al.  Distrbution and Abstract Types in Emerald , 1987, IEEE Transactions on Software Engineering.

[11]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[12]  Al Stevens,et al.  C programming , 1990 .

[13]  Roy H. Campbell,et al.  The Design of a Multiprocessor Operating System , 1987, C++ Workshop.

[14]  Jim Gray,et al.  Notes on Data Base Operating Systems , 1978, Advanced Course: Operating Systems.