Книга: Distributed operating systems
9.7.6. Servers
9.7.6. Servers
Amoeba has a variety of servers for specific functions, including file management, directory management, object replication, and load balancing. All are based on objects and capabilities. Amoeba supports replicated objects via directories that contain capability sets. UNIX emulation is provided at the source code level, is based on POSIX, but is not 100 percent complete. The emulation is done by mapping UNIX concepts onto Amoeba ones and calling on the native Amoeba servers to do the work. For example, when a file is opened, the capability for the file is acquired and stored in the file descriptor table.
Mach has a single server that runs BSD UNIX as an application program. It provides 100 percent binary-compatible emulation, a great boon for running existing software for which the source code is not available. General object replication is not supported. Other servers also exist.
Chorus provides full binary compatibility with System V UNIX. The emulation is done by a collection of processes (like Amoeba) rather than by running UNIX as an application program (like Mach). However, some of these processes contain actual UNIX code, like Mach and unlike Amoeba. Like Amoeba, the native servers were designed from scratch with distributed computing in mind, so the emulation translates the UNIX constructs onto the native ones. Just as in Amoeba, for example, when a file is opened, a capability for it is fetched and stored in the file descriptor table.
A brief summary of some of the points discussed above is given in Fig. 9-28.
Item | Amoeba | Mach | Chorus |
---|---|---|---|
Designed for: | Distributed system | 1 CPU, multiprocessor | 1 CPU, multiprocessor |
Execution model | Pool processor | Workstation | Workstation |
Microkernel? | Yes | Yes | Yes |
Number of kernel calls | 30 | 153 | 112 |
Automatic load balancing? | Yes | No | No |
Capabilities | General | Only ports | General |
Capabilities in: | User space | Kernel | User space |
Threads managed by: | Kernel | Kernel | Kernel |
Transparent heterogenity? | Yes | No | No |
User-settable priorities? | No | Yes | Yes |
Multiprocessor support | Minimal | Extensive | Moderate |
Mapped object | Segment | Memory object | Segment |
Demand paging? | No | Yes | Yes |
Copy on write? | No | Yes | Yes |
External pagers? | No | Yes | Yes |
Distributed shared memory | Object based | Page based | Page based |
RPC? | Yes | Yes | Yes |
Group communication | Reliable, ordered | None | Unreliable |
Asynchronous communication? | No | Yes | Yes |
Intermachine messages | Kernel | User space/kernel | Kernel |
Messages address to: | Process | Port | Port |
UNIX emulation | Source | Binary | Binary |
UNIX compatibility | POSIX (partial) | BSD | System V |
Single-server UNIX? | No | Yes | No |
Multiserver UNIX? | Yes | No | Yes |
Optimized for: | Remote case | Local case | Local case |
Automatic file replication? | Yes | No | No |
Fig. 9-28. A comparison of Amoeba, Mach, and Chorus.
- Other FTP Servers
- How Nameservers Store DNS Structure Information
- 2.3.1. Clients and Servers
- 7.1.5. The Amoeba Servers
- 7.6. THE AMOEBA SERVERS
- 7.6.7. Other Servers
- Types of Name Servers
- Controlling access to DNS servers outside the organization
- CHAPTER 8: Running DHCP clients and servers
- Connecting to remote DHCP servers
- Configuring DHCP servers
- Installing DNS servers