1. Q: Give an example of where an address of an entity E
needs to be further resolved into another address to actually
access E.
A: IP addresses in the Internet are used to address hosts.
However, to access a host, its IP address needs to be resolved to,
for example, an Ethernet address.
2. Q: Would you consider a URL such as
http://www.acme.org/index.html to be location independent? What
about http://www.acme.nl/index.html?
A: Both names can be location independent, although the first
one gives fewer hints on the location of the named entity. Location
independent means that the name of the entity is independent of its
address. By just considering a name, nothing can be said about the
address of the associated entity.
3. Q: Give some examples of true identifiers.
A: Examples are ISBN numbers for books, identification numbers
for software and hardware products, employee numbers within a
single organization, and Ethernet addresses (although some
addresses are used to identify a machine instead of just the
Ethernet board).
4. Q: How is a mounting point looked up in most UNIX
systems?
A: By means of a mount table that contains an entry pointing
to the mount point. This means that when a mounting point is to be
looked up, we need to go through the mount table to see which entry
matches a given mount point.
5. Q: Jade is a distributed file system that uses per-user
name spaces (see In other words, each user has his own, private
name space. Can names from such name spaces be used to share
resources between two different users?
A: Yes, provided names in the per-user name spaces can be
resolved to names in a shared, global name space. For example, two
identical names in different name spaces are, in principle,
completely independent and may refer to different entities. To
share entities, it is necessary to refer to them by names from a
shared name space. For example, Jade relies on DNS names and IP
addresses that can be used to refer to shared entities such as FTP
sites.
6. Q: Consider DNS. To refer to a node N in a subdomain
implemented as a different zone than the current domain, a name
server for that zone needs to be specified. Is it always necessary
to include a resource record for that server’s address, or is it
sometimes sufficient to provide only its domain name?
A: When the name server is represented by a node NS in a
domain other than the one in which N is contained, it is enough to
give only its domain name. In that case, the name can be looked up
by a separate DNS query. This is not possible when NS lies in the
same subdomain as N, for in that case, you would need to contact
the name server to find out its address.
7. Q: Is an identifier allowed to contain information on
the entity it refers to?
A: Yes, but that information is not allowed to change, because
that would imply changing the identifier. The old identifier should
remain valid, so that changing it would imply that an entity has
two identifiers, violating the second property of
identifiers.
8. Q: Outline an efficient implementation of globally
unique identifiers.
A: Such identifiers can be generated locally in the following
way. Take the network address of the machine where the identifier
is generated, append the local time to that address, along with a
generated pseudo-random number.
Although, in theory, it is possible that another machine in
the world can generate
the same number, chances that this happens are
negligible.
9. Q: Give an example of how the closure mechanism for a
URL could work.
A: Assuming a process knows it is dealing with a URL, it first
extracts the scheme identifier from the URL, such as the string
ftp:. It can subsequently look up this string in a table to find an
interface to a local implementation of the FTP protocol. The next
part of the closure mechanism consists of extracting the host name
from the URL, such as and passing that to
the local DNS name server. Knowing where and how to contact
the DNS server is an important part of the closure mechanism. It is
often hard-coded into the URL name resolver that the process is
executing. Finally, the last part of the URL, which refers to a
file that is to be looked up, is passed to the identified host. The
latter uses its own local closure mechanism to start the name
resolution of the file name.
10. Q: Explain the difference between a hard link and a
soft link in UNIX systems.
A: A hard link is a named entry in a directory file pointing
to the same file descriptor as another named entry (in possibly a
different directory). A symbolic link is a file containing the
(character string) name of another file.
11. Q: High-level name servers in DNS, that is, name
servers implementing nodes in the DNS name space that are close to
the root, generally do not support recursive name resolution. Can
we expect much performance improvement if they did?
A: Probably not: because the high-level name servers
constitute the global layer of the DNS name space, it can be
expected that changes to that part of the name space do not occur
often. Consequently, caching will be highly effective, and much
long-haul communication will be avoided anyway. Note that recursive
name resolution for low-level name servers is important, because in
that case, name resolution can be kept local at the lower-level
domain in which the resolution is taking place.
12. Q: Explain how DNS can be used to implement a
home-based approach to locating mobile hosts.
A: The DNS name of a mobile host would be used as (rather
poor) identifier for that host. Each time the name is resolved, it
should return the current IP address of the host. This implies that
the DNS server responsible for providing that IP address will act
as the host’s name server. Each time the host moves, it contacts
this home server and provides it with its current address.
Note that a mechanism should be available to avoid caching of
the address. In other words, other name servers should be told not
to cache the address found.
13. Q: A special form of locating an entity is called
anycasting, by which a service is identified by means of an IP
address (see, for example, Sending a request to an anycast address,
returns a response from a server implementing the service
identified by that anycast address. Outline the implementation of
an anycast service based on the hierarchical location service
described in Sec. 4.2.4.
A: Each service has a unique identifier associated with it.
Any server implementing that service, inserts its network-level
address into the location service at the directory node of the leaf
domain in which the server resides. Lookup requests use the
identifier of the service, and will automatically return the
nearest server implementing that service.
14. Q: Considering that a two-tiered home-based approach is
a specialization of a hierarchical location service, where is the
root?
A: The root is formed jointly by all home locations, but is
partitioned in such a way that each mobile entity has its own root
server.
15. Q: Suppose it is known that a specific mobile entity
will almost never move outside domain D, and if it does, it can be
expected to return soon. How can this information be used to speed
up the lookup operation in a hierarchical location
service?
A: Simply encode the domain D in the identifier for the entity
that is used for the lookup operation. The operation can then be
immediately forwarded to the directory node dir(D), from where the
search continues.
16. Q: In a hierarchical location service with a depth of
k, how many location records need to be updated at most when a
mobile entity changes its location?
A: Changing location can be described as the combination of an
insert and a delete operation. An insert operation requires that at
worst k +1 location records are to be changed. Likewise, a delete
operation also requires changing k +1 records, where the record in
the root is shared between the two operations.
This leads to a total of 2k +1 records.
17. Q: Consider an entity moving from location A to B,
while passing several intermediate locations where it will reside
for only a relatively short time. When arriving at B, it settles
down for a while. Changing an address in a hierarchical location
service may still take a relatively long time to complete, and
should therefore be avoided when visiting an intermediate location.
How can the entity be located at an intermediate
location?
A: Combine the hierarchical location service with forwarding
pointers. When the entity starts to move, it leaves behind a
forwarding pointer at A to its next (intermediate) location. Each
time it moves again, a forwarding pointer is left behind. Upon
arrival in B, the entity inserts its new address into the
hierarchical location service. The chain of pointers is
subsequently cleaned up, and the address in A is deleted.
18. Q: When passing a remote reference from process P1 to
P2 in distributed reference counting, would it help to let P1
increment the counter, instead of P2 ?
A: No, because in that case, process P2 may decide to
immediately remove its reference before P1 has a chance to
increment the counter at the object. Consequently, when P2 sends
its decrement message, the counter may drop to zero and the object
may be incorrectly removed.
19. Q: Make clear that weighted reference counting is more
efficient than simple reference counting. Assume communication is
reliable.
A: Creation or removal of reference can be done with only a
single message, as is also the case with simple reference counting.
Passing a reference is much cheaper, as it can be done with only
one message containing the copied reference with its partial weight
set to half of the weight of the original reference. There is thus
no need to contact the object, in contrast to simple
reference
counting.
20. Q: Is it possible in generation reference counting,
that an object is collected as garbage while there are still
references, but which belong to a generation the object does not
know of?
A: No. Whenever a reference of generation k is removed (so
that possibly the associated entry in G[k ] becomes zero), the
object is always informed about any outstanding references of
generation k +1. If that generation was not yet known to the
object, it will be at the time a reference of generation k is
removed.
21. Q: Is it possible in generation reference counting,
that an entry G[i ] becomes smaller than zero?
A: Yes. Suppose a reference of generation k is copied, leading
to a reference of generation k +1. If the latter is removed before
the reference from which it was copied, G[k +1] will be decremented
by one. If no reference of generation k had yet been removed, G[k
+1] will then drop below zero.
22. Q: In reference listing, if no response is received
after sending a ping message to process P, the process is removed
from the object’s reference list. Is it always correct to remove
the process?
A: No. It may be possible that the process is temporarily
unreachable due to a network partition, for example, caused by a
failing router or gateway. In that case, the reference is lost and
the skeleton may falsely decide that the object can be removed if
the list becomes empty.
23. Q: Describe a very simple way to decide that the
stabilization step in the tracing-based garbage collector of Lang
et al. has been reached.
A: Assume that each process can decide whether its local
garbage collector has changed any of the markings on proxies or
skeletons during the local propagation step. A very simple,
nonscalable solution, is to report whether or not any changes have
been made to a central coordinator. As soon as that coordinator has
recorded that no more changes have occurred, it tells each
process
to start reclaiming garbage.