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.