Topic: Remote Invocations and Tuple Spaces
Points: 10
Assigned: September 16, 1999
Due: September 23, 1999



 

1. (4 points) One aspect of a remote procedure call or a remote invocation is representing the arguments being passed from the client to the server or the results returned to the client by the server as a linear byte stream suitable for transmission over a network. The term serialization or marshalling is used to refer to the process of converting the arguments or returned result from possibly complex objects into a linear form by the sender and accurately reconstructing the objects from the data stream by the receiver. Consider a remote invocation that involves an array such as:
 

T x[10]; // an array of 10 elements of type T

remoteObject.meth(x); // invoke the method "meth" on the remote object
                      // passing the array "x" as an input argument


Assuming that values of the base type of the array (the type T in the above example) can be converted to a byte stream, how can the array of these values be represented? To answer this question show two different ways in which the array can be serialized. Be sure that your answer shows how the length of the array is represented and how undefined array elements are handled.

2. (2 points) The C-Linda program on page 450 of the "Linda in Context" paper is incorrect. Identify and correct the mistake.

3. (4 points) Show how to represent a linked list data structure in a tuple space. Your representation must be able to support typical linked list operations such as traversal of the list, and insertion and deletion of elements. You  need to describe the representation and give a simple example.