University of Freiburg | Faculty of Applied Sciences | Institute for Computer Science | Computer Networks and Telematics
The tele Research Group
Home         Teaching         Research        Tools         Openings        Publications





Distributed Systems - Assignment 1

This assignment will be discussed on November 7

Question 1
  • Give an example of a URL.
  • List the three main components of a URL, stating how their boundaries are denoted and illustrating each one of your example.
  • To what extent is a URL location transparent?
Question 2
  • List the three main software components that may fail when a client process invokes a method in a server object, giving an example of a failure in each case.
  • To what extent are these failures independent of one another?
  • Suggest how the components can be made to tolerate one another's failures.
Question 3
  • Describe and illustrate the client-server architecture of one or more major Internet applications (for example, the Web, email or netnews).
Question 4
  • Distinguish between buffering and caching.
Question 5
  • Give some examples of faults in hardware and software that can/cannot be tolerated by the use of redundancy in a distributed system.
  • To what extent does the use of redundancy in the appropriate cases make a system fault-tolerant.
Question 6
  • The following picture shows the overall architecture of a very simple telephony system:

The boxes denote the different concurrent processes in this system. The environment of the telephone switch consists of phones A and B. Each one of the phones has a software process in the switch corresponding to it, called the phone handler. Assume that the phones communicate with the phone handlers via message exchanges through a priori unbounded channels, as do the phone handlers amongst each other. The arrows indicate possible messages that can flow between the phones and the phone handlers, and between the phone handlers. Informally, the meaning of these messages is as follows:
  • off_h: a phone goes off hook (the receiver is being picked up)
  • dial_tone: the switch sends a dial tone to the phone
  • dial_B: phone A enters the phone number of B
  • audible_ring: phone A hears phone B ringing
  • busy: the switch applies a busy signal to the phone
  • stop_aud_ring: the switch stops the audible ringing signal
  • on_h: a phone goes on_hook - note that either one of the phones can go on hook at any time when it is not already on hook
  • ringing: a phone starts ringing
  • con_req: one phone handler requests a connection with another phone handler
  • con_conf: the other phone handler acknowledges the connection request (B is not busy) and A starts hearing an audible ring tone
  • con_establish: B has picked up and the connection is now established
  • dis_req: phone handler B requests disconnect from phone handler A
  • disconnectAB: phone handler A requests disconnect from phone handler B (Note: in the above Figure there should be an additional arrow labeled "disconnectAB" from phone handler A to phone handler B and a "disconnectBA" arrow in the opposite direction as well as a "busy" arrow from phone handler B to phone B; B will hear a busy tone when A hangs up, as will A if B hangs up)
We want to focus on an asymmetric call processing system, i.e., only A can call be, and not vice versa. Assume that the system is a layered protocol architecture: the messages exchanged between the switch and the phones correspond to service requests, while the messages exchanged between processes correspond to a protocol in order to provide this service. (Actually, this may be a telephony-over-IP network, and hence the signalling messages between the phones may be exchanged as TCP messages over an IP network.)
  1. Using communicating finite state machines, model the behaviour of the protocol machines in the phones A and B. Say exactly which parts of the formal definition given in class corresponds to which set.
  2. Add the behaviour of the phones A and B.
  3. Is any of the communication channels in the system bounded?
  4. Can you find a deadlock situation in the system?