[comp.parallel] uSystem

pabuhr@maytag.waterloo.edu (Peter A. Buhr) (02/26/90)

I would like to announce to any interested parties the availability of a
light-weight task facility called the uSystem (pronounced micro-system) and
a companion preprocessor for monitors.


The uSystem is a library of C routines that provide light-weight
concurrency on uniprocessor and multiprocessor computers running the UNIX
operating system.  Concurrent operations in the uSystem are explicitly
specified and not inferred from existing constructs in C.  Users first
design algorithms that are inherently concurrent and then explicitly code
corresponding concurrent operations using the routines in the uSystem.

The uSystem uses a shared-memory model of concurrency.  This shared-memory
is populated by subroutines, coroutines and concurrently executing
light-weight processes, called tasks.  Coroutine mechanisms are provided to
create coroutines within a task, provide both semi and full coroutine
control flow and communicate among coroutines.  Concurrency mechanisms are
provided to create tasks, to synchronize execution of the tasks, and to
communicate information between synchronized tasks, for example, P&V and
send/receive/reply. When shared memory exists between UNIX processes, UNIX
processes are used as virtual processors and task execution is uniformly
distributed across them.  A clustering mechanism exists to group virtual
processors and tasks together, restricting execution of these tasks to only
these virtual processors.  Partitioning into clusters must be used with
care as it has the potential to inhibit concurrency when used
indiscriminately.  However, in several situations it is essential, for
example, concurrent UNIX I/O operations are possible through the clustering
mechanism, when shared memory exists between UNIX processes.

Currently, the uniprocessor form of the uSystem is supported on the
following computers: DEC Vax, Apollo 68K, Sun3 (68K), MIPS, and Sequent
Symmetry.  There is also a multiprocessor form for the Sequent Symmetry
S27. It requires GNU C 1.35 for all computers except the MIPS, which
requires GNU C 1.36.  The uSystem will NOT compile using other compilers.
As well, on the Sequent gcc must be installed with the Sequent assembler as
the GNU assembler does not handle the assembler directives generated from
gcc when the -fshared-data flag is used.

Currently, under development are tools for concurrent exception handle
and monitoring tools.


The uMonitor preprocessor is a C preprocessor that provides monitors for
use in control and communication among concurrent tasks created through the
uSystem.  The uMonitor preprocessor transforms new programming language
statements pertaining to monitors into C language statements and calls to
uSystem routines.  10 different kinds of monitors are provided.


The uSystem can be obtained by anonymous ftp from the following location:

   watmsg.waterloo.edu (129.97.129.9)   pub/uSystem/uSystem.tar.Z

The distribution file is in compressed tar format. Execute the following
commands to unpack the source:

   uncompress uSystem.tar.Z
   tar -xf uSystem.tar

The README file contains all the installation instructions. Good luck and
happy concurrency.