The coordinator and coordinator programming language (copl)
Chul-Doo Jung · 1988
As parallel architectures become more specialized for specific purposes, a distributed system with a network of heterogeneous parallel architectures will be very effective in order to satisfy a variety of parallel computational needs, especially in scientific/engineering applications. Because such a system may be both complex and diverse, we cannot expect a homogeneous operating system to take care of all the heterogeneity of the proposed network and the related massive parallelism. The is defined as a system layer between the operating system and applications, and a common homogeneous interface is provided for users through heterogeneous coordinator services built on heterogeneous operating system kernels which provide a basic set of functions. The coordinator is a hierarchical system which manages jobs/processes/processors and may be based on a variety of implementation strategies. Self-scheduling with static scheduling and dynamic adjustment policy is chosen particularly for the coordinator scheduling example. A self-scheduling coordinator is responsible for load migration, creation of process pools and CPU pools, and adjustment of pools. In general, coordinators monitor the system performance and take supervisory actions for load-balancing. A new concurrent programming language, COPL (COordinator Programming Language), suitable for programming hierarchical resource management systems, was designed as a vehicle to implement the coordinator. COPL can be used effectively for concurrent programming in a combination of shared-memory based multiprocessing and distributed processing without shared memory. The main characteristics of COPL are: synchronous communication based on the message passing paradigm, environment-independent safe procedure concept, incorporation of block structures into concurrent programming, parameterized monitors for effective object-oriented data abstraction and mutually exclusive resource sharing, and asynchronous and hierarchical process activation and termination with potentially unbounded activation. COPL's synchronous communication provides a combination of communication and protection mechanism, indirect naming, dynamic selection of communicating partners, input and output guard, implicit input/output polling, static message type checking, and some degree of checking for polling related programming errors during compile time. The language prevents unauthorized shared data access in multiprocessing and distributed processing. A COPL implementation scheme is discussed based on a set of basic kernel services. Some issues arising in the verification of COPL and separate compilation issues are discussed as well.