186x Filetype PDF File size 1.84 MB Source: cds.cern.ch
CERN DD/OC TBL.RPC5 RPC proiecfi How it will work 9 April 1986 DRAFT SPBCIFICATIOI{S AND IMPLEMBI{TATION NOTES FOR THE RPC PROJECT [. How a distributed system will be built 2. The sequence of stages in a remote call 3. Calling sequences for the Run-time support 4. Principal development areas 5. Project State DRAFT VERSION 6 s Tim Berners-læe DD/OC First version 27 Feb 86 This is a working document, and is frequently updated. Recent changes are marked by a vertical line in the right-hand you margin. If harte comments, please say so, or pass back a marked up cop!. ln Version 4: Changes reflecting input from Kris Kostro about the Hermes system, offers of available time to pass on his understanding of it, and adapt it to our needs. This means that commonality v/ith Flermes should be extended from the run-time support system to the compiler as well. The isolation of transaction-oriented protocol as a specifi.c area of work, to be looked at by Yves Grandjean. (section 4.2) ln version 5: A decision, if possible, to use yacc for any compiler development, in the hope of making a corlmon, supportable, RPC project. (section 4.1) In version 6: Minor updates only. * t Contents i RPC project: How it will work CONÏENTS I. STAGES IN SIMPLE RPC 1 1.1 Program Generation I 1.1.1 Prograrnmer writes modular program I 1.1.2 Programmer describes an lnterface Unit . I 1.1.3 The RPC Compiler 2 1.2 l,oad time: Addressing and linking 2 1.2.L Requirement 2 1.2.2 RPC-OPEN 3 1.2.3 Linking the stub to the Run-Time Support 3 1.3 Version checking. 3 , RLIN TIME: THE REMOTE CALL 5 2.1 Program Calls Stub 5 2.2 Buffer Formatting 5 2.3 Stub Calls Run-Time Support 5 2.4 RTS calls Communication Service 5 2.5 Server RTS system calls communication service. 6 2.6 Server RTS system calls Server Stub 6 2.7 Server stub calls User routine 6 2.8 The Return of OUT Parameters 6 2.9 Abort and Reject: Intemrpt generalisations. ,I 2.10 Closing a service 7 3. RLIN-TIME SUPPORT CALLING SEQI.]ENCES I 3.1 RPC OPEN I 3.2 RPC_CLOSE.... I 3.3 RPC-CALL I 3.4 RPC ATTACH STUB 9 3.5 RPC_DETACH-STUB 9 3.6 A Server Stub . 9 3.7 RPC RETURN.. 9 3.8 RPC-REJECT.. l0 4. PRINCIPAL DEVELOPMENT AREAS tl 4.1 Compiler Design l1 4.1.1 The procedure definition language (MESAiRPCL) 11 4.I.2 Method of Writing the compiler 1l 4.2 Transaction-oriented protocol 12 4.3 .VAX/VMS Raw Ethernet support 13 5. PROJECTSTEPS t4 References .14 ç s project: RPC How it will work page I I. STAGES IN SIMPLE RPC This Chapter describes some details of the sequence of operations occuring when a distibuted system using SRPC is built, and when it runs. Mention is made of any standards which are be used to make the system more open. A general understanding of RPC principles is assumed. 1.1 Program Generation This section enumerates the stages involved in building a distributed program. I.I.I Programmer writes modular program Firstly, the program has to be written in a modular fashion. The modules have to be designed so that in the final version, they can run on di.fferent machines. Various rules must be follwed: 1. Control is not passed between modules except as a procedure call 2. No data is to be passed between modules except explicitly as parameters to routines. 3. The data types of parameters are limited. Whereas the hermes project [2] is designed to interface to C programs, in DD/OC we (and our users) require remote Pascal and FORTRAN programs. Parameter types used will include integers, charac- ters, and variable or fixed length arrays of either. All will be passed (in gensral) by reference, as opposed to by value. 1.1.2 Programmer describes an Interface Unit Note: This step is done only irzformally when an RPC compiler is not used as at plesent (Apr 86) If a prograrn has been designed in a modular way, the interfaces between the modules shoudl be well defined early in the process. To use RPC, the interfaces between modules on diffemt machines must be described to the RPC compiler. This is done by writing a short, consise, definition of each procedrue involved. For each procedure, one specifi.es its name, and for each of its parameters o Its data type, indicating both the size and interpretation of the storage; . Its dircction: whether it is transferred to or from the procedure, or both. o Optionally, certain attributes which allow the compiler to optimise the code it generates. s è page 2 RPC project: How it will work ln order to reduce the organisational overhead, a related set of procedures are grouped together as a 'unit'. (The terms 'interface', omoduleo, 'prograat" (Courier), and "service" (hermes) have been used, but are rather overused - we use the term unit in a specific way). A "unit" is all described in the same file, and compiled into one stub module. A unit is an important concept in the addressing of remote procedures. 1.1.3 The RPC Compiler Note: This step is done by hand when an RPC compiler is not used as at present (Apr B6) The RPC compiler ntru and generates the stub code for each end. In fact, tÀe RPC compiler takes the definition file and cteates the source code for two pascal modules, on for the client and one for the ser- ver end. These two modules are then compiled by a pascal compiler, to produce the object code for the stubs. 1.2 Load "ne: Addressing alrfl linking 1.2.1 Requirement It is necessary for some action to announce the client's indended use of a service. This allows o the required service to be found. o the server to be created (ifnecessary). r a communicaton path to be estabilished between the client and server There are two ways of doing this, and we must cater for both. In the first case, the programmer has written his program in two parts (as above), and must be able to link it (without changing or recompiling it) so that it will execute either on one machine, or on morÊ than one. In this case, the setting up of the RPC communication, resolving of the addressing, etc, must be done transparerrtly by the system utility which loads the program onto the various machines. (Tftis is arnbitious -Rrtl Yes, but it is an optionwe do notwant to exclude.) (Under VAXIVMS this can be done, by including an "INITIALVE" procedure in the stub module. This is automatically called by the image loader before the main program is run, and is be responsible for establishing the links). In the second case, the user program is written with an av/areness of the RPC system, as it wants, as tttn time, to be able to select, open and close remote servers. In this case, the'set-up facilites must be provided for the use of the user. There are many interesting problems in this area. É
no reviews yet
Please Login to review.