ItemNetwork operating systemDistributed operating systemMultiprocessor operating systemDoes it look like a virtual uniprocessor?NoYesYesDo all have to run the same operating system?NoYesYesHow many copies of the operating system are there?NN1How is communication achieved?Shared filesMessagesShared memoryAre agreed upon network protocols required?YesYesNoIs there a single run queue?NoNoYesDoes file sharing have well-defined semantics?Usually noYesYes. This method of exporting and importing interfaces is highly flexible. For example, it can handle multiple servers that support the same interface. The binder can spread the clients randomly over the servers to even the load if it wants to. It can also poll the servers periodically, automatically deregistering any server that fails to respond, to achieve a degree of fault tolerance. Furthermore, it can also assist in authentication. A server could specify, for example, that it only wished to be used by a specific list of users, in which case the binder would refuse to tell users not on the list about it. The binder can also verify that both client and server are using the same version of the interface.. The third property says that transactions areisolatedorserializable.What it means is that if two or more transactions are running at the same time, to each of them and to other processes, the final result looks as though all transactions ran sequentially in some (system dependent) order.. In many distributed systems, it is possible to have multiple threads of control within a process. This ability provides some important advantages, but also introduces various problems. We will study these issues first. Then we come to the subject of how the processors and processes are organized and see that several different models are possible. Then we will look at processor allocation and scheduling in distributed systems. Finally, we consider two special kinds of distributed systems, fault-tolerant systems and real-time systems.. 2. Byzantine faults.. Theoretical analyses of many fault-tolerant systems can be done in these terms. For more information, see (Schneider, 1990; and Budhiraja et al., 1993).. Suppose that a periodic real-time distributed system hasmtasks andNprocessors to run them on. LetCi be the CPU time needed by taski, and letPibe its period, that is, the time between consecutive interrupts. To be feasible, the utilization of the system,µ, must be related toN by the equation [Картинка: any2fbimgloader115]. Arguing in favor of the split is that the two functions are really unrelated, so keeping them separate is more flexible. For example, one could implement an MS-DOS directory server and a UNIX directory server, both of which use the same file server for physical storage. Separation of function is also likely to produce simpler software. Weighing against this is that having two servers requires more communication.. Having a cache in the server’s main memory
is easy to do and totally transparent to the clients. Since the server can keep its memory and disk copies synchronized, from the clients’ point of view, there is only one copy of each file, so no consistency problems arise.. NFS accomplishes this goal by defining two client-server protocols. Aprotocolis a set of requests sent by clients to servers, along with the corresponding replies sent by the servers back to the clients. (Protocols are an important topic in distributed systems; we will come back to them later in more detail.) As long as a server recognizes and can handle all the requests in the protocols, it need not know anything at all about its clients. Similarly, clients can treat servers as “black boxes” that accept and process a specific set of requests. How they do it is their own business.. Point 3 says that when ordinary (i.e., not synchronization) variables are accessed, either for reading or writing, all previous synchronizations have been performed. By doing a synchronization before reading shared data, a process can be sure of getting the most recent values.. [Картинка: any2fbimgloader163]. A second important library procedure isgetload. It returns information about the CPU speed, current load, and amount of memory free at the moment. It is used by the run server to determine the best place to execute a new process. A third major library procedure isstun. A process’ parent can suspend it bystunningit. More commonly, the parent can give the process’ capability to a debugger, which can stun it and later restart it for interactive debugging purposes. Two kinds of stuns are supported: normal and emergency. They differ with respect to what happens if the process is blocked on one or more RPCs at the time it is stunned. With a normal stun, the process sends a message to the server it is currently waiting for, saying, in effect: “I have been stunned. Finish your work instantly and send me a reply.” If the server is also blocked, waiting for another server, the message is propagated further, all the way down the line to the end. The server at the end of the line is expected to reply immediately with a special error message. In this way, all the pending RPCs are terminated almost immediately in a clean way, with all of the servers finishing properly. The nesting structure is not violated, and no “long jumps” are needed.. [Картинка: any2fbimgloader197]. [Картинка: any2fbimgloader205].