Utility servers in charlotte

Cui‐Qing ‐Q Yang, Raphael Finkel

Research output: Contribution to journalArticlepeer-review


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 languageEnglish
Pages (from-to)429-441
Number of pages13
JournalSoftware - Practice and Experience
Issue number5
StatePublished - May 1991


  • Distributed programming
  • Distributed systems
  • Operating systems
  • System services
  • Utility servers

ASJC Scopus subject areas

  • Software


Dive into the research topics of 'Utility servers in charlotte'. Together they form a unique fingerprint.

Cite this