Related articles |
---|
2 More Concurrent Programming Languages utai!perelgut (Stephen Perelgut) (1986-11-03) |
Newsgroups: | mod.compilers |
Date: | Mon, 3 Nov 86 10:24:11 est |
From: | Stephen Perelgut <utai!perelgut> |
Organization: | CSRI, University of Toronto |
Keywords: | concurrent programming language |
There are two high-level languages for concurrent programming at the
University of Toronto. The first is Concurrent Euclid, which has been in use
since 1981, and the second is Turing Plus, which is currently under
development.
Concurrent Euclid (ConEuc) inherits its constructs from the Euclid
programming language, designed in 1975 for developing verifiable systems
software. Thus ConEuc is designed with verification in mind and these same
constructs have been shown to enhance readability and understandability.
ConEuc provides many restrictions on programs such as strong type checking
and anti-aliasing.
ConEuc implements concurrency using statically declared processes and
monitors. Each process declared represents a separate unit of activity that
can act concurrently with other processes. This is combined with monitors as
defined by C.A.R. Hoare. These are similar to modules but they guarantee
that only one process at a time is active inside them. When a process tries
to enter a monitor's scope that already has an active process, the entering
process is blocked. Within a monitor, processes can wait on condition queues
(which may be specified with priority ordering). A waiting process is
activated when another process within the same monitor signals the condition.
ConEuc was designed for high-performance, highly reliable, portable systems
software. A UNIX look-alike operating system (compatible at the file-system
level) has been implemented in ConEuc and various implementations have been
enhanced for distributed and master/slave multiprocessor systems. ConEuc is
available on the IBM CMS, DEC VAX VMS, DEC VAX 4.2BSD, SUN UNIX, and IBM PC's
(and compatibles).
Turing Plus (T+) is currently under development. It is a general purpose
language particularly suited to systems programming. T+ is a compatible
extension of the Turing programming language developed at the University of
Toronto in 1983 and used since then as the introductory programming language.
Turing and T+ are defined with a formal axiomatic and operational
semantics. T+ concurrency is similar to ConEuc's with the addition of a
"fork" statement to activate a copy of a process. T+ uses monitors with the
same meaning as ConEuc's with the addition of a device monitor which has its
exclusive access enforced by a machine dependent trick such as executing it
at the hardware priority given. The wait on condition and signal to wake
condition is extended to allow deferred conditions as opposed to only allowing
immediate conditions (where the signalling process immediately waits while the
signalled process becomes active). A timeout option is also allowed that
specifies the interval after which a waiting process is automatically
signalled. Process priority can be read and set as well.
For more information, you can write to the
CSRI Distribution Manager
Computer Systems Research Institute
University of Toronto
10 King's College Rd. SF2002
Toronto, Ontario M5S 1A4
Available information includes:
CSRI-133, SPECIFICATION OF CONCURRENT EUCLID, J.R. Cordy & R.C. Holt
CSRI-152, STRUCTURE OF A PORTABLE OPERATING SYSTEM, M. Mendell
CSRI-153, THE TURING LANGUAGE REPORT, R.C. Holt & J.R. Cordy
CSRI-176, THE TUNIS REPORT: DESIGN OF A UNIX-COMPATIBLE OPERATING
SYSTEM, P. Ewens, R. Holt, M. Funkenhauser & D. Blythe
CSRI-182, THE FORMAL SEMANTICS OF TURING PROGRAMS,
R.C. Holt & P. A. Matthews
CSRI-186, FEATURES OF THE TURING LANGUAGE, R.C. Holt
CSRI-187, DESIGN GOALS FOR THE TURING PROGRAMMING LANGUAGE, R.C. Holt
THE TURING PLUS REPORT, R.C. Holt & J.R. Cordy
SOFTWARE EXCELLENCE - List of relevant research products and
distribution prices
--
Stephen Perelgut Computer Systems Research Institute, University of Toronto
Licence is granted to retransmit this message so long as the body, Subject,
addressee's and sender are not altered in any way. This message is not to
be transmitted to anyone other than the original adressee's.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.