Experience with Charlotte: Simplicity and Function in a Distributed Operating System

  • Authors:
  • Raphael Finkel;Michael L. Scott;Yeshayahu Artsy;Hung-Yang Chang

  • Affiliations:
  • Univ. of Kentucky, Lexington;Univ. of Rochester, Rochester, NY;Digital Equipment Corp., Littleton, MA;IBM T.J. Watson Research Center, Yorktown Heights, NY

  • Venue:
  • IEEE Transactions on Software Engineering
  • Year:
  • 1989

Quantified Score

Hi-index 0.01

Visualization

Abstract

A retrospective view is presented of the Charlotte distributed operating system, a testbed for developing techniques and tools to solve computation-intensive problems with large-grain parallelism. The final version of Charlotte runs on the Crystal multicomputer, a collection of VAX-11/750 computers connected by a local area network. The kernel/process interface is unique in its support for symmetric, bi-directional communication paths (called links), and synchronous nonblocking communications. Several lessons were learned in implementing Charlotte. Links have proven to be a useful abstraction, but the primitives do not seem to be at quite the right level of abstraction. The implementation uses finite-state machines and a multitask kernel, both of which work well. It also maintains absolute distributed information which is more expensive that using hints. The development of high-level tools, particularly the Lynx distributed programming language, has simplified the use of kernal primitives and helps to manage concurrency at the process level.