[comp.os.research] Research at Arizona

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