How many messages are required for each approach?
How frequently should the clocks be synchronized for each approach?
If this is true, please explain how Lamport Logical Time maintains this
invariant. If it is not true, please explain why this isn't necessarily
the case and please draw a figure depicting one such example.
If so, please explain why this must be the case. If not, please explain
why not and provide a simple figure to illustrate one such case.
This approach, on its face, is unfair. Some hosts are more likely to win than others. Why don't we just assign random numbers to these events to break the tie, or, more precisely, order concurrent events randomly? Would this approach provide for a total ordering? Why or why not?
Hint: Although the answer isn't dependent on the type of
communication, it might help to consider multicast.
This approach, on its face, is unfair -- some hosts are more likely to win than others. Why don't we just use the physical time on the receiving host at the time of receipt to break the tie, e.g. order concurrent events in the order that they were received? Would this approach provide for a total ordering of events? Why or why not?
Hint: Although the answer isn't dependent on the type of communication, it might help to consider multicast.
Please design a unicast protocol that ensures causal ordering of
messages among hosts and describe the resulting approach.
A protocol can be designed that reduces the size of the vector timestamp by sending fewer of these uninteresting entries, but this savings comes at the expense of overhead, including storage and processing, on each host.
Please assume that the hosts have plenty of processing power and
O(P^2) space available to store state information related to the
timestamp protocol. Operating under these assumptions, design
an algorithm for compressed vector timestamps that reduces the
size of the vector timestamps as much as possible, without
affecting the utility of the timestamping. Please describe the
resulting approach.
A protocol can be designed that reduces the size of the vector timestamp by sending fewer of these uninteresting entries, but this savings comes at the expense of overhead, including storage and processing, on each host.
Please assume that the hosts have plenty of processing power and O(P) space available to store state information related to the timestamp protocol. Operating under these assumptions, design an algorithm for compressed vector timestamps that reduces the size of the vector timestamps as much as possible, without affecting the utility of the timestamping. Please describe the resulting approach.
Please discuss the costs and benefits of a non-blocking RPC
implemention. Your discussion should include both elements important
to the application developer and also to the implementor of the RPC
package.
Please describe the impact of the cost and beneifts of this
approach to the RMI, both from the perspective of the RMI
implementor and the application developer. You may neglect
the case where the return type is void.
Please discuss the impact that exactly once semantics would have
on the implementation of an IPC system such as Sun's RPC or Java RMI.
Imagine that, instead of at-most-once semeantics, middleware layers implemented at-least-once semantics. What impact would this have on the life of an application programmer. Would such a middleware layer be more or less convenient? More or less applicable to typical problems?
Why do the two architectures take a different approach? What are the
costs and benefits of each?
As a result, it would seem that the serialization of an object for use as a parameter or return value would require nothing from the object, itself. But, it doesn't work this way. Java's RMI can only send Serializable objects as parameters or return values. These classes of objects implement their own serialization methods.
Assume that .class files could be sent to a client, as needed, via HTTP, as is done with stubs. Why doesn't the Java RMI just parse the objects, flatten the fields, and serialize the objects automatically? In your discussion, you should include at least one example of a problematic type of object.
Please adapt Maekawa's voting district scheme to solve the "at most n users" mutual exclusion problem. In other words, please adapt it so that it allows not more than "n" users to access the shared resource at a time. Your new design should be as loyal to the original design as is practical.
If it does not make sense to use an adaptation of Maekawa's
protocol for this purpose, please explain the reason.
Please adapt the majority vote scheme to solve the "at most n users" mutual exclusion problem. In other words, please adapt it so that it allows not more than "n" users to access the shared resource at a time. Your new design should be as loyal to the original design as is practical.
If it does not make sense to use an adaptation of the voting scheme
for this purpose, please explain the reason.
Consider Raymond's Algorithm Is it a good example of a protocol that
can readily be adapted for this purpose? Why or why not?
Please select one among the mutual exclusion protocols from our in class discussion and adapt it to enforce reader-writer locks, instead of mutual exclusion. Needless to say, you should select a protocol which cna be usefully adapted for this purpose. Your new protocol should be as loyal to the original as is practical.
A read-writer lock allows readers to share an object with other
readers, but ensures that a writer excludes both other writers and
also readers. Sometimes this protocol is described as "Shared reads,
exclusive writes". Readers should starve writers.
What was meant by "blocking protocol"?
If possible, please define a non-blocking atomic commit protocol.
If this is impossible, please offer an intuitive explanation of
the reason that this is not possible.