A second potential problem is due to the communication network. It can lose messages, which requires special software to be able to recover, and it can become overloaded. When the network saturates, it must either be replaced or a second one must be added. In both cases, some portion of one or more buildings may have to be rewired at great expense, or network interface boards may have to be replaced (e.g., by fiber optics). Once the system comes to depend on the network, its loss or saturation can negate most of the advantages the distributed system was built to achieve.. File servers generally maintain hierarchical file systems, each with a root directory containing subdirectories and files. Workstations can import or mount these file systems, augmenting their local file systems with those located on the servers. For example, in Fig. 1-10, two file servers are shown. One has a directory calledgames, while the other has a directory calledwork. These directories each contain several files. Both of the clients shown have mounted both of the servers, but they have mounted them in different places in their respective file systems. Client 1 has mounted them in its root directory, and can access them as /games and/work, respectively. Client 2, like client 1, has mountedgames in its root directory, but regarding the reading of mail and news as a kind of game, has created a directory/games/work and mountedwork there. Consequently, it can accessnews using the path/games/work/news rather than/work/news.. Finally, we come to the last two packet types, which are useful in case a REQ packet cannot be accepted. There are two reasons why this might happen, and it is important for the client’s kernel to be able to distinguish them. One reason is that the mailbox to which the request is addressed is full. By sending this packet back to the client’s kernel, the server’s kernel can indicate that the address is valid, and the request should be repeated later. The other reason is that the address does not belong to any process or mailbox. Repeating it later will not help.. 2.4.2. Parameter Passing. Fig. 3-18. (a) The file index and disk blocks for a three-block file. (b) The situation after a transaction has modified block 0 and appended block 3. (c) After committing.. In Fig. 3-24, we present a modified resource graph, where only the processes are shown. Each arc passes through a resource, as usual, but for simplicity the resources have been omitted from the figure. Notice that process 3 on machine 1 is waiting for two resources, one held by process 4 and one held by process 5.. Going still further in the direction of structuring the address space, instead of just sharing variables we could share encapsulated data types, often calledobjects. These differ from shared variables in that each object has not only some data, but also procedures, calledmethods, that act on the data. programs may only manipulate an object’s data by invoking its methods. Direct access to the data is not permitted. By restricting access in this way, various new optimizations become possible.. In order for a client thread to do an RPC with a server thread, the client must know the server’s address. Addressing is done by allowing any thread to choose a random 48-bit number, called aport,to be used as the address for messages sent to it. Different threads in a process may use different ports if they so desire. All messages are addressed from a sender to a destination port. A port is nothing more than a kind of logical thread address. There is no data structure and no storage associated with a port. It is similar to an IP address or an Ethernet address in that respect, except that it is not tied to any particular physical location. The first field in each capability gives the port of the server that manages the object (see Fig. 7-3).RPC Primitives. Another problem remains: How does the coordinator get any messages it has missed if the sequencer has crashed? The solution lies in the value ofk, the resilience degree, chosen at group creation time. Whenk is 0 (non-fault tolerant case), only the sequencer maintains a history buffer. However, whenk is greater than 0,k+1 machines continuously maintain an up-to-date history buffer. Thus if an arbitrary collection ofk machines fail, it is guaranteed that at least one history buffer survives, and it is this one that supplies the coordinator with any messages it needs. The extra machines can maintain their history buffers simply by watching the network.. Because files cannot be modified after their creation, the size of a file is always known at creation time. This property allows files to be stored contiguously on the disk and also in the main memory cache. By storing files contiguously, they can be read into memory in a single disk operation, and they can be sent to users in a single RPC reply message. These simplifications lead to the high performance.. The conceptual model of memory that Mach user processes see is a large, linear virtual address space. For most 32-bit CPU chips, the user address space runs from address 0 to address 2??–1 because the kernel uses the top half for its own purposes. The address space is supported by paging. Since paging was designed to give the illusion of ordinary memory, bt more of it than there really is, in principle there should be nothing else to say about how Mach manages virtual address space.. The implementation of UNIX emulation on Mach consists of two pieces, the UNIX server and a system call emulation library, as shown in Fig. 8-21. When the system starts up, the UNIX server instructs the kernel to catch all system call traps and vector them to addresses inside the emulation library of the UNIX process making the system call. From that moment on, any system call made by a UNIX process will result in control passing temporarily to the kernel and immediately thereafter passing to its emulation library. At the moment control is given to the emulation library, all the machine registers have the values they had at the time of the trap. This method of bouncing off the kernel back into user space is sometimes called thetrampoline mechanism.. Fig. 9-14. Mapper calls.. 10.2.2. Scheduling. Every resource in DCE has a unique name. The set of all names forms the DCE namespace. Each name can have up to five parts, some of which are optional. The five parts are shown in Fig. 10-19..