Ariadne: Architecture of a Portable Threads system supporting Mobile Processes

TIrreads possess a simply expressed and powerful fonn of concurrency, easily exploitable in applications that run on both uniand multi-processors, sharcdand distributed-memory systems. This paper presents the design and implementation of Ariadne: a layered, C-based software architecture for multi-threaded computing on a variety of platfonns. Ariadne is a ponable system lhat exploils sharedand distributed-memory muhiprocessors for parallel and disuibuted applications. Thrcad-mlgralion is supported at the application level in homogeneous environments (e.g.• networks of Spares and Sequents. Intel hypercubes). Threads may migrate between processes to access remote data., typically preserving locality of reference for computations with a dynamic data space. Ariadne provides a cuslOmization layer lhrough which it can be tuned to specific applications: support for scheduling via a built-in scheduler or an application-specific scheduler, and a communication-library interface. Ariadne currently runs on the Sparc (SunDS 4.:<: and Solaris), Sequent, Intel i860, SOl, and ffiM RS6000 environments. We compare the performance of Ariadne to the Sun Iwp and Solaris lhread libraries. "Research supponcd in pan by ONR·93 10233, ARO-93GOO45 and NATO-CRG900108.

[1]  Charles M. Shub Native code process-originated migration in a heterogeneous environment , 1990, CSC '90.

[2]  Steve R. Kleiman,et al.  SunOS Multi-thread Architecture , 1991, USENIX Winter.

[3]  Evangelos P. Markatos,et al.  First-class user-level threads , 1991, SOSP '91.

[4]  Marvin Theimer,et al.  Preemptable remote execution facilities for the V-system , 1985, SOSP '85.

[5]  Andrew D. Birrell,et al.  An Introduction to Programming with Threads , 1996 .

[6]  Edsger W. Dijkstra,et al.  Termination Detection for Diffusing Computations , 1980, Inf. Process. Lett..

[7]  Marc J. Rochkind Advanced Unix programming , 1985 .

[8]  Jeffrey S. Chase,et al.  The Amber system: parallel programming on a network of multiprocessors , 1989, SOSP '89.

[9]  Barton P. Miller,et al.  Process migration in DEMOS/MP , 1983, SOSP '83.

[10]  John S. Carson,et al.  Process-interaction simulation languages , 1985 .

[11]  Brian N. Bershad,et al.  PRESTO: A system for object‐oriented parallel programming , 1988, Softw. Pract. Exp..

[12]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[13]  John N. Tsitsiklis,et al.  Parallel and distributed computation , 1989 .

[14]  Devang Shah,et al.  Implementing Lightweight Threads , 1992, USENIX Summer.

[15]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[16]  Lawrence C. Stewart,et al.  Firefly: a multiprocessor workstation , 1987, IEEE Trans. Computers.

[17]  Karsten Schwan,et al.  A C Thread Library for Multiprocessors , 1991 .

[18]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[19]  Jonathan M. Smith,et al.  A survey of process migration mechanisms , 1988, OPSR.

[20]  Frank Mueller,et al.  A Library Implementation of POSIX Threads under UNIX , 1993, USENIX Winter.

[21]  Avadis Tevanian,et al.  MACH threads and the UNIX kernel : the battle for control , 1987 .

[22]  David R. Keppel,et al.  Tools and Techniques for Building Fast Portable Threads Packages , 1993 .

[23]  Michel Raynal,et al.  Distributed algorithms and protocols , 1988 .

[24]  Edward Mascarenhas,et al.  Process mobility in distributed-memory simulation systems , 1993, WSC '93.

[25]  Andrew S. Tanenbaum,et al.  Distributed operating systems , 2009, CSUR.

[26]  Partha Dasgupta,et al.  Distributed Programming with Objects and Threads in the Clouds System , 1991, Comput. Syst..