TY - JOUR
T1 - Experience with Charlotte
T2 - Simplicity and Function in a Distributed Operating System
AU - Finkel, Raphael A.
AU - Scott, Michael L.
AU - Artsy, Yeshayahu
AU - Chang, Hung Yang
PY - 1989/6
Y1 - 1989/6
N2 - This paper presents a retrospective view 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, bidirectional communication paths (called links), and synchronous nonblocking communication. Our experience indicates that the goals of simplicity and function are not easily achieved. Simplicity in particular has dimensions that conflict with one another. Although our design decisions produced a high-quality environment for research in distributed applications, they also led to unexpected implementation costs and required highlevel language support. We learned several lessons from implementing Charlotte. Links have proven to be a useful abstraction, but our primitives do not seem to be at quite the right level of abstraction. Our implementation employed finite-state machines and a multitask kernel, both of which worked well. It also maintains absolute distributed information, which is more expensive than using hints. The development of highlevel tools, particularly the Lynx distributed programming language, has simplified the use of kernel primitives and helps to manage concurrency at the process level.
AB - This paper presents a retrospective view 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, bidirectional communication paths (called links), and synchronous nonblocking communication. Our experience indicates that the goals of simplicity and function are not easily achieved. Simplicity in particular has dimensions that conflict with one another. Although our design decisions produced a high-quality environment for research in distributed applications, they also led to unexpected implementation costs and required highlevel language support. We learned several lessons from implementing Charlotte. Links have proven to be a useful abstraction, but our primitives do not seem to be at quite the right level of abstraction. Our implementation employed finite-state machines and a multitask kernel, both of which worked well. It also maintains absolute distributed information, which is more expensive than using hints. The development of highlevel tools, particularly the Lynx distributed programming language, has simplified the use of kernel primitives and helps to manage concurrency at the process level.
KW - Charlotte
KW - Crystal
KW - Lynx
KW - distributed computing
KW - kernel interface design
KW - links
KW - message passing
UR - http://www.scopus.com/inward/record.url?scp=0024681027&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=0024681027&partnerID=8YFLogxK
U2 - 10.1109/32.24721
DO - 10.1109/32.24721
M3 - Article
AN - SCOPUS:0024681027
SN - 0098-5589
VL - 15
SP - 676
EP - 685
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 6
ER -