2.4.5. Implementation Issues. The library procedures that processes call to invoke group communication may be the same as for point-to-point communication or they may be different. If the system is based on RPC, user processes never callsend andreceive directly anyway, so there is less incentive to merge the point-to-point and group primitives. If user programs directly callsend andreceive themselves, there is something to be said for doing group communication with these existing primitives instead of inventing a new set.. The algorithm works as follows. When a process wants to enter a critical region, it builds a message containing the name of the critical region it wants to enter, its process number, and the current time. It then sends the message to all other processes, conceptually including itself. The sending of messages is assumed to be reliable; that is, every message is acknowledged. Reliable group communication if available, can be used instead of individual messages.. An advantage of this algorithm is that it does not put extra load on the system at critical times. The sender-initiated algorithm makes large numbers of probes precisely when the system can least tolerate it— when it is heavily loaded. With the receiver-initiated algorithm, when the system is heavily loaded, the chance of a machine having insufficient work is small, but when this does happen, it will be easy to find work to take over. Of course, when there is little work to do, the receiver-initiated algorithm, creates considerable probe traffic as all the unemployed machines desperately hunt for work. However, it is far better to have the overhead go up when the system is underloaded than when it is overloaded.. 4.5.4. Use of Redundancy. At first it may not be obvious why three voters are needed at each stage. After all, one voter could also detect and pass though the majority view. However, a voter is also a component and can also be faulty. Suppose, for example, thatV1malfunctions. The input toB1will then be wrong, but as long as everything else works,B2andB3 will produce the same output andV4,V5, andV6will all produce the correct result into stage three. A fault in V1 is
effectively no different than a fault inB1. In both casesB1produces incorrect output, but in both cases it is voted down later.. Fig. 5-8. A comparison of stateless and stateful servers.. 1. Before an ordinary access to a shared variable is performed, all previous acquires done by the process must have completed successfully.. 17. Suppose that two variables,A andB are both located, by accident, on the same page of a page-based DSM system. However, both of them are unshared variables. Is false sharing possible?. The CPUs in a pool can be of different architectures, for example, a mixture of 680×0, 386, and SPARC machines. Amoeba has been designed to deal with multiple architectures and heterogeneous systems. It is even possible for the children of a single process to run on different architectures.. The DESTROY operation deletes the object. It always needs the appropriate right, for obvious reasons.. For some applications, a large number of threads may be working together to solve a single problem, and it may be important to control the scheduling in detail. Mach provides a hook to give threads some additional control over their scheduling (in addition to the processor sets and priorities). The hook is a system call that allows a thread to lower its priority to the absolute minimum for a specified number of seconds. Doing so gives other threads a chance to run. When the time interval is over, the priority is restored to its previous value.. 9.1.2. Goals of Chorus. Groups are commonly used to provide reconfigurable services. Initially some set of servers belongs to the group, which provides some service. Clients can send messages to the group without having to know which servers are available to do the work. Later, new servers can join the group and old ones can leave without disrupting the services and without the clients even being aware that the system has been reconfigured.. 2. Locate the correct process on that machine..