norm@arizona.edu (Norm Hutchinson) (03/04/88)
We are constructing a tool-based software laboratory that facilitates experimental research in distributed and parallel computing. The laboratory consists of three integrated components: a collection of high-level tools to aid in the development of parallel and distributed algorithms, a programming language workbench, and a configurable operating system kernel. Algorithm Development Toolbox | V Programming Language Workbench | V Configurable Kernel Each tool in the laboratory is intented to simplify the task of developing distributed and parallel programs. In the case of the higher-level tools, the target clients are naive users, algorithm designers, and application programmers. In the case of the lower-level tools, the target clients are system programmers; that is, tool builders. The first component of the laboratory is a collection of high-level tools that will help users design and implement their algorithms. These tools include MU, a system used to simulate parallel and distributed algorithms, packages like DIB (distributed implementation of backtracking) and a more general successor DIG (distributed implementation of graphs) that allow particular classes of algorithms to be easily parallelized, and a general "shell" language that incorporates the concept of "channels", a generalization of UNIX pipes. The second component is a toolbox for language experimentation that allows one to quickly prototype proposed language changes, and to quickly retarget an existing compiler to a new parallel or distributed architecture. With this tool we wish to be able to answer questions concerning the appropriateness of specific language features to specific architectural features. This work builds on the two distributed programming languages used in the department, SR and Emerald. Our final tool is a configurable operating system kernel, called the x-kernel (note: lower-case, italics "x", not to be confused with upper case roman "X" which has something to do with windows), in which communication protocols define the the fundamental unit of composition. The x-kernel will consist of fixed memory and process management components, and an architecture that supports the construction and composition of protocols. In other words, the x-kernel will define a class or family of operating systems --- hence the variable x --- where a particular instance is defined by the composition of a given set of protocols within the x-kernel's framework. For example, we plan to use the x-kernel to derive an "SR-kernel" and an "Emerald-kernel" in support of the SR and Emerald programming languages, respectively. Contact: Norm Hutchinson Computer Science Department University of Arizona Tucson, AZ 85721 602-621-4817 norm@arizona.edu, ...!arizona!norm