ISP: Assignment 5
The assignment is due at the beginning of class on Monday, December 6; the Corba question is due on Friday, December 10. Please follow the instructions in submitting your assignment.
- IPC: We have discussed a number of IPC mechanisms in
class. In this assignment, you are to compare important properties of
these mechanisms. Investigate the following:
Compare the following mechanisms:
- Can the sender/producer process terminate and the consumer "pick up"
the data if it starts after the producer process has terminated?
- How can an external observer detect whether and how much data there
is waiting to be read, without interfering with the data? (An external
observer is another process on the same machine, e.g., a user running a
shell. It is allowable to pass a file name or other identifying
information to the external observer.) Note that this is not possible
with some IPC mechanisms.
- What is the data transfer speed between two processes, when
transferring large messages (4 kB, say)?
- Is there flow control and if so, how much data can the sender send
before it blocks, if the receiver is not reading from the IPC mechanism?
(This question does not apply to shared memory, obviously.)
- Unix sockets, both datagram and stream;
- network sockets on the same host, both datagram and stream;
- message queues;
- SysV shared memory.
You can either write one program that forks a client and a server or
write separate client and server programs that test the properties above
and measure the speed. (
obviously will have to be done as a single program to pass around file
The communication mechanism should be selectable by the -c
flag, with the names unix, network, msg,
- Memory mapping: Investigate the write-through and
synchronization behavior of memory mapping. In particular, write a
program that tests whether
The file reading and writing can be done in the same process.
- writing to mapped memory is immediately reflected in the
- modifying the file is immediately reflected in the memory
- Corba: Build a file transfer application using Corba.
The client should be able to request a file by name (get operation) and
obtain its size and modification date (directory operation). Measure
the latency of the directory operation and the throughput of the file
transfer. Compare the latency to the RPC latency measured in the last
assignment; you only have to compare overall latency, not worry about
the marshalling time separately. To gain a feeling for the overhead for
bulk transfers, compare the file transfer speed to ftp. To avoid the
impact of NFS, store the source and destination file in the
Hints on running Corba are available,
including a sample Makefile.
by Henning Schulzrinne