Implementation of a Coordination Language

Abstract

This paper presents some details about the implementation of the coordination language K2. Several design goals guided this implementation: the generated code should be executable on heterogeneous distributed computer systems and it must have localized control to avoid potential bottlenecks when scaling to large distributed systems. To meet these ends, a compiler and a runtime system have been implemented which use PVM as message passing library. This decision helps us to meet the first goal since PVM has been designed to fulfill this requirement. The second goal is met due to the language design of K2, which is based on a variant of colored Petri nets. Communication structures are restricted to synchronization graphs, hence no conflicts can occur other than those introduced by primitive process types. K2 process systems can be graphically specified with the help of an editor, which translates those systems into an intermediate language that is used as input for a compiler. The compiler generates a C program, wherein each process is translated into a so-called wrapper. A wrapper manages the communication between processes with the help of routines provided by the runtime library. The C program is compiled and linked against the runtime and the PVM library yielding one executable program. This paper explains how a K2 process system is compiled, the basic algorithms of a wrapper, and the routines provided by the runtime system to implement these algorithms. It also provides a performance comparison of K2 programs and programs using PVM directly.

Keywords

coordination language, distributed computing, Petri nets, implementation
[Hints about e-mail/sendmail] [Content] [What's new?] [Hotlist]
Claus Aßmann Please send comments to: <ca@informatik.uni-kiel.de>