Abstract
Most distributed operating systems are built with a kernel replicated in each machine that supports only basic interprocess communication (IPC) and process control. All other system services, such as memory management, file system, and name service, are distributed in a set of utility servers, which are ordinary processes (except perhaps for some privileges) residing at various machines. Design and implementation of such utility servers in distributed environments are far different from those in a centralized system. This paper presents our experience in building utility servers in Charlotte, a message‐based distributed operating system running on a loosely‐coupled multicomputer. Utility services in Charlotte are provided by server squads. Each member in a squad covers services to its own community. The squad as a whole co‐operatively provides services to the entire system. These servers are designed with the goals of simplicity, efficiency and robustness. They are intended to support a multiprogramming system for the development of distributed algorithms and other distributed applications. We address several major issues in developing a utility server, including the server structure, the management of message buffers, deadlock, and the robustness of server processes. Several utility servers in the Charlotte system are discussed as real examples.
Original language | English |
---|---|
Pages (from-to) | 429-441 |
Number of pages | 13 |
Journal | Software - Practice and Experience |
Volume | 21 |
Issue number | 5 |
DOIs | |
State | Published - May 1991 |
Keywords
- Distributed programming
- Distributed systems
- Operating systems
- System services
- Utility servers
ASJC Scopus subject areas
- Software