Problems of Chapter 2 - Introduction to Distributed Systems

Andrew S. Tanenbaum - Prentice Hall - ISBN 0-13-219908-4


1. In many layered protocols, each layer has its own header. Surely it would be more efficient to have a single header at the front of each message with all the control in it than all these separate headers. Why is this not done?

2. What is meant by an "open system"? Why are some systems not open?

3. What is the difference between a connection-oriented and conectionless communication protocols?

4. An ATM system is transmitting cells at the OC-3 rate. Each packet is 48 bytes long, and thus fits into a cell. An interrupt takes 1 micro segundo. What fraction of the CPU is deveoted to interrupt handling? Now repeat this problem for 1024-byte packets.

5. Suggest a simple modification to Fig.2.9 that reduces network traffic.

6. In the communication primitives in a client-server system are nonblocking, a call to send will complete before the message has actually been sent. To reduce overhead, some systems do not copy the data to the kernel, but transmit it directly from user space. For such a system, devise two ways in which the sender can be told that the transmission has been completed and the buffer can be reused.

7. When buffered communication is used, a primitive is normally available for user processes to create mailboxes. In the text it was not specified whether this primitive must specify the size of the mailbox. Give an argument each way.

8. In all the examples in this chapter, a server can only listen to a single address. In practice, it is sometimes convenient for a server to listen to multiple address at the same time, for example, if the same process performs a set of closely related services that have been assigned separate address. Invent a scheme by which this goal can be accomplished.

9. The usual sequence of steps in an RPC involves trapping to the kernel to have the message sent from the client to the server. Suppose that a special co-processor chip for doing network I/O exists and that this chip is directly addressable from user space. Would it be worth having? What steps would an RPC consist of in that case?

10. One way to handle parameter conversion in RPC systems is to have each machine send parameters in its native representation, with the other one doing the translation, if need be. In the text it was suggested that the native system could be indicated by a code in the first byte. However, since locating the first byte in the first word is precisely the problem, can this work, or is the book wrong?

11. For each of the following applications, do you think at least once semantics or at most once semantics is best? Discuss: a. reading and writing files from a file server; b. compiling a program; c. remote banking.

12. Suppose that the time to do a null RPC (i.e., 0 data bytes) is 1 msec, with an additional 1.5 msec for every 1 KB of data. How long does it take to read 32 KB from the file server in a single 32 KB RPC? How about as 32 x 1 KB RPCs?


Luís Fernando Faina
Last modified: Thu Oct 9 17:45:09 2003