SUPRA-RPC: SUbprogram PaRAmeters in Remote Procedure Calls

Remote-procedure calls (RPCs) allow distributed, high-level language programs to communicate and synchronize in the usual manner via subprogram calls. One of the great challenges in RPC research is to preserve the traditiional call semantics despite the distribution and heterogeneity of the new environment. The main contribution of SUPRA-RPC is in addressing the passing of subprograms as RPC parameters. In doing so, SUPRA overcomes a number of technical difficulties, stemming from scoping, side-effects and other sources. Since supporting subprogram RPC parameters is harder than supporting non-subprogram RPC parameters, the three (of six) components of the SUPRA architecture extend in novel ways the traditional functionality found in their counterparts in other RPC systems. The SUPRA stub generator extracts information not only from remote entry interfaces, but from any scope potentially referenced by a subprogram passed as an RPC parameter. In addition to the usual calland accept-stubs and the marshaling and unmarshaling routines, the generator constructs out-of-scope access stubs, callback’ and callback-handling-stubs, and modified parameter subprograms and others. The SUPRA run-time support manages a runtime symbol table to keep track of referencing environments and out-of-scope objects. When an out-of-scope object is unavailable for access or execution on the server, the object is reached by a synchronous, ‘under-the-covers’ callback. The SUPRA process management supports servers with independent threads of control, manages (possibly nested) callbacks and pools of callback handler threads, and maintains correct identification of thread-initiated calls or callbacks. A SUPRA prototype has been implemented on Sun Unix workstations. The prototype supports C, C++ and CommonLisp programs. A prototype graphical demonstration has been implemented as well, that represents RPC concepts in terms of common life objects and situations.

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

[2]  David K. Gifford,et al.  Implementing Remote Evaluation , 1990, IEEE Trans. Software Eng..

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

[4]  Richard D. Schlichting,et al.  Integrating Emerald into a System for Mixed-Language Programming , 1990, Comput. Lang..

[5]  Richard D. Schlichting,et al.  A simple system for constructing distributed, mixed‐language programs , 1988, Softw. Pract. Exp..

[6]  Mahadev Satyanarayanan,et al.  Parallel Communication in a Large Distributed Environment , 1990, IEEE Trans. Computers.

[7]  Alexander D. Stoyen A general model and mechanisms for model-level heterogeneous RPC interoperability , 1990, SPDP.

[8]  Yi-Hsiu Wei,et al.  CONCERT: a high-level-language approach to heterogeneous distributed systems , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[9]  Maurice Herlihy,et al.  A Value Transmission Method for Abstract Data Types , 1982, TOPL.

[10]  David K. Gifford,et al.  Remote pipes and procedures for efficient distributed communication , 1988, TOCS.

[11]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

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

[13]  Richard D. Schlichting,et al.  Facilitating Mixed Language Programming in Distrbuted Systems , 1987, IEEE Transactions on Software Engineering.

[14]  Alexander D. Stoyenko SUPRA-RPC: SUbprogram PaRAmeters in Remote Procedure Calls , 1991, Proceedings of the Third IEEE Symposium on Parallel and Distributed Processing.