Distributed Operating Systems

Distributed Operating Systems extend the notion of a virtual machine over a number of interconnected computers or hosts. Note that the user/programmer still has the illusion of working on a single system. All the issues of concurrency and distribution are completely hidden by the virtual machine, and the user/programmer is not at liberty to exploit them (nor should they be hindered by them!). Distributed Operating Systems (#fnos3#108>) are often broadly classified into two extremes of a spectrum: Often this classification is really a reflection of the reliability and performance of the communications sub-system. Frequently, shared memory systems are regarded as more tightly coupled than message passing systems. Another way of looking at these classifications is to think of tightly coupled systems as being <#111#> dependent<#111#>, and loosely coupled systems as <#112#> independent<#112#>, where the dependency is in terms of system availability in the face of failure of some single host. In tightly coupled systems, it is reasonable to consider shared memory (or at least hierarchical cache mechanisms) as a communications mechanism. In loosely coupled systems, only message passing can be considered. Distributed systems have been around since the early 1970s. Examples of early Distributed Systems are tabulated in #tbeds#113>.

Table: Early Distributed Systems

Table: Recent Distributed Systems

These are discussed informally in the final chapter of this book. These can be categorised by whether they are:

In practice, the most widespread systems are those combining distributed file access and distributed Human access: The workstation/fileserver/compute server model has evolved in the last ten years predominately due to costs of LAN access with enough performance to provide realistic remote disk/file access and memory/bitmap display costs dropping low enough to make window based software realistic on the desktop. Slowly, some more useful distributed tools are emerging: Since distributed systems have existed mainly in a Research and Development environment, there has been some work on tools to help with Software development in a distributed environment. These include: Enslow's classic classification [REF] uses three axes of distribution: If we apply these models to the systems above, we can see the choices made in the distribution of services. Distribution of services is rather different from distribution of the Operating System itself. In some systems [e.g. Sun NFS/Newcastle Connection] an operating system service [File access] has been distributed from within the operating system. In others [e.g. printing], the service has been distributed above (outside) the operating system.

Figure: Distributed Operating System Services

To provide this distribution, a number of communication mechanisms are required, and these are overviewed in the next section.