Names are used to refer to a variety of resources such as
– Computers
– Services
– Remote objects
– Files
– Users
What is a name used for?
– to identify on a particular resource out of many (e.g., URL: Uniform
Resource Locator)
– to share a resource with other processors (e.g., printer address)
– to locate entities independent of their current location (e.g., email address)
Name types:
Address
– The name of an access point of an entity
– An entity can offer more than one access point, e.g. many phone numbers
to reach the same person
– An entity may easily change an access point, or an access point may be
reassigned to a different entity, e.g. IP address.
– Inflexible and human unfriendly
Identifier
– To uniquely identify an entity
– Address can not be used as an identifier
– A program-interpreted identifier does not need to be human-friendly but
can simply be a sequence of numbers, like:
• Remote object references, NFS file handles, etc.
Human-friendly names
– A human-friendly name represents an entity in some form that presents a
meaning for human, like:
• File name: /etc/password
• Internet domain name: usyd.edu.au
– Generally represented as a character string
– A name is resolved when it is translated into data about the named
resource of object, often to invoke an action upon it
– A binding is the association between a name and an (attribute of an)
object
Broadcasting does not scale with network size as it becomes
inefficient
Forwarding pointers
– When an entity moves from A to B, it leaves behind in A a reference to its new
location at B
– A client can look up the current address by following the chain of forwarding
pointers
– Long chains (expensive) for a highly mobile entity
– All intermediate locations will have to maintain the chain of pointers as long as
needed
– Vulnerability to broken links
– E.g. RPC
Home-based approaches
– A home location (often the place where an entity was created) keeps tack of the
current location of an entity
– Increased communication delay
– Home location must exist/contactable all the time
– E.g. mobile IP
Hash function H are used to produce a hash h of fixed length
given a message m: h = H(m)
– One-way function: computationally infeasible to find an input m that
corresponds to an output h, whereas computing h from m is easy
– Weak collision resistant: given an input m and an output h, it is infeasible
to find another different input m’ such that H(m) = H(m’)
– Distributed lookup:
– Iterative lookup: a node requested to look up a key returns to the requester the
address of the next node found
– Recursive lookup: a node requested to look up a key forward the lookup request
to the next node
The boot block is loaded into main memory at system boot time
– The superblock has info of the FS (size, unallocated blocks, unused
inodes)
– Inodes (i.e., index nodes) have indexes starting at 0 (for the root) and
have info about where to find their file data on disk, ownership.
– Each directory is represented as a file as well