1.5.3. Reliability. When an acknowledgement or reply arrives before the timer expires, the timeout entry must be located and removed from the list. In practice, very few timers actually expire, so most of the work of entering and removing a timer from the list is wasted effort. Furthermore, timers need not be especially accurate. The timeout value chosen is usually a wild guess in the first place (“a few seconds sounds about right”). Besides, using a poor value does not affect the correctness of the protocol, only the performance. Too low a value will cause timers to expire too often, resulting in unnecessary retransmissions. Too high a value will cause a needlessly long delay in the event that a packet is actually lost.. Fig. 4-9. Creating a thread when a message arrives.. [Картинка: any2fbimgloader95]. Intuitively, if we ignore all the overhead of the probes and process transfers, one would expect algorithm 3 to have the best performance, and indeed it does. But the gain in performance of algorithm 3 over algorithm 2 is small, even though the complexity and amount of additional work required are larger. Eager et al. concluded that if using a simple algorithm gives you most of the gain of a much more expensive and complicated one, it is better to use the simple one.. In contrast, in UNIX System V, theRemote File System (RFS)requires a file to be opened before it can be read or written. The server then makes a table entry keeping track of the fact that the file is open, and where the reader currently is, so each request need not carry an offset. The disadvantage of this scheme is that if a server crashes and then quickly reboots, all open connections are lost, and client programs fail. NFS does not have this property.. a = 1;a = 1;b = 1;* print(b, c);b = 1;print(a, c);b = 1;* print (a, c);c = 1;print(a, c);print(b, c);* print(a, b);c = 1;c = 1;a = 1;print(a, b);print(a, b); print(b, c);Prints: 00Prints: 10Prints: 01(a)(b)(с). 7.4.2. Mapped Segments. 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.. One way to create the child is to copy all the pages needed and map the copies into the child’s address space. Although this method is valid, it is unnecessarily expensive. The program text is normally read-only, so it cannot change, and parts of the data may also be read-only. There is no reason to copy read-only pages, since mapping them into both processes will do the job. Writable pages cannot always be shared because the semantics of process creation (at least in UNIX) say that although at the moment of creation the parent and child are identical, subsequent changes to either one are not visible in the other’s address space.. When a subsystem creates an object, such as a file, it returns to the caller the capability for the object. From the capability, that process, or any subsequent process acquiring the capability, can find the UI of a port to which messages can be sent to request operations on the object. The 64-bit key must be included in such messages to tell the subsystem which of its many objects is being referenced. Included in the 64 bits is an index into the subsystem’s tables, to identify the object. Other bits are randomly chosen to make it difficult to guess valid capabilities. Like UIs, capabilities may be freely passed in messages and files. This naming scheme was taken from Amoeba (Tanenbaum et al., 1986).. CallDescriptionsgReadRead data from a segmentsgWriteWrite data to a segmentsgStatRequest information about a page cachesgFlushRequest from a mapper to the kernel asking for dirty pages. CDS permits entries to be replicated to provide higher availability and better fault tolerance. The directory is the unit of replication, with an entire directory either being replicated or not. For this reason, directories are a heavier weight concept than in say, UNIX. CDS directories cannot be created and deleted from the usual programmer’s interface. Special administrative programs are used.. Fig. 10-27.From login to authenticated RPC in five easy steps.. Using global names everywhere is rather longwinded, so some shortcuts are available. A name starting with/.:/fs means a name in the current cell starting from thefs junction (the place where the local file system is mounted on the global DFS tree), as shown in Fig. 10-29(c). This usage can be shortened even further as given in Fig. 10-29(d).