| ROVNER, P.R. Extending Modula-2 to build large, integrated systems. IEEE Softw. 37, 8 (Nov. 1986), 46-57. |
....that execute simultaneously on multiple processors. The system is structured to operate best with multiple processors. 1. 2 Overview of RPC Structure The Firefly RPC implementation follows the standard practice of using stub procedures [2] The caller stub, automatically generated from a Modula2 [7] interface definition, is included in the calling program to provide local surrogates for the actual remote procedures. When a procedure in this stub is called, it allocates and prepares a call packet into which are marshaled the interface and procedure identifications, and the arguments. The stub ....
ROVNER, P.R. Extending Modula-2 to build large, integrated systems. IEEE Softw. 37, 8 (Nov. 1986), 46-57.
....The language is defined by the Modula 3 Report [3] and is currently being implemented by the Olivetti Research Center. This paper gives an overview of the language, focusing primarily upon its type system. Modula 3 is a direct descendent of Mesa [8] Modula 2 [14] Cedar [5] and Modula 2 [9, 10]. It also resembles its cousins Object Pascal [13] Oberon [15] and Euclid [6] Since these languages already have more raw material than fits comfortably into a readable fifty page language definition, which we were determined to produce, we didn t need to be inventive. On the contrary, we had ....
Paul Rovner. Extending Modula-2 to Build Large, Integrated Systems. IEEE Software 3 6, November 1986.
....for systems research at SRC and is constantly being extended as researchers implement their ideas. Topaz also serves as SRC s main computing environment. Work on Topaz began in 1984, and it has been used by about 50 researchers at SRC since 1986. The principal language used in Topaz is Modula 2 [14, 15], an extension of Modula 2; Modula 2 was derived from Modula 2 by adding support for garbage collection, exceptions, and concurrency. 1 Topaz addresses the drawbacks of garbage collection in the following ways. 1 Some programming at SRC is in Modula 3 [2] a recent refinement of Modula 2 ; ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6), November 1986.
....A. Threads The THREADS module exports essential functions for creating a thread, and for acquiring and releasing mutex locks. Other functions, not relevant here, support manipulating condition variables and thread state. Our interface is similar to other Threads packages for C [2] Modula 2 [22], and Modula 3 [8] The function mutex creates a new mutex value. The function acquire attempts to lock a mutex and blocks the calling thread until it succeeds. At most one thread may hold a given mutex at any time. The function release unlocks a mutex, giving other threads a chance to acquire it. ....
P. Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, 1986.
....ML programs are often comparable to C programs in run time efficiency. 2.2.1 Previous Work A number of previous projects have used high level languages to implement real systems. These include the Cedar system, written in Mesa at Xerox PARC [26] the Topaz system, written in Modula 2 at DEC SRC [24, 32]; the Symbolics and Xerox Lisp machines; the Swift system, written in CLU at MIT [9, 22] and various real time and embedded systems written in Ada [36] Although several of these languages provide some of the same advantages over C that Standard ML does, none provides them all, as the following ....
....frequently. A scheme that allows parallel allocation, with synchronization only at garbage collection time, will be developed instead. Threads can be used directly by parallel applications, as evidenced by experience with similar facilities in Mesa at Xerox PARC [19] Modula 2 at DEC SRC [32], and in C Threads for Mach at Carnegie Mellon [11] But the functional style of programming supported by Standard ML allows higher level mechanisms to be used as well. Examples of these mechanisms include futures, as in Multilisp [15] and communication channels, as in CSP [17] 2.3.2 Language ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
....in the collector. This position paper contains material from references [4] and [5] 1 Background The Topaz experience illustrates how it is possible to extend a systems implementation language with garbage collection, and successfully use it to build a large software environment. Modula 2 [9] is the main systems implementation language at Digital Equipment Corporation s Systems Research Center (SRC) Modula 2 is an extension of Modula2 [11] it adds language support for concurrency, exceptions, and garbage collection. In particular, Modula 2 adds the REF type constructor, which ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6), November 1986.
....program counters executing in an address space) and RPC. More details about the Topaz operating system, including the reference manual for the file system and process manager, are available in [4] Topaz itself, and most of the application programs designed at SRC, are written in Modula 2 [5], which extends Modula2 [9] with concurrency [1] exception handling, and garbage collection. Topaz RPC is similar to the system described by Birrell and Nelson [2] it is used not only between machines, but also, with a special transport, between address spaces on the same machine. 3 ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, 1986.
.... such as Smalltalk [2] and Self [3] and new languages with traditional compile time type systems such as ML [4] Eiffel [5] Oberon [6] and Modula 3 [7] Garbage collectors have also been implemented for languages that were not originally designed to support garbage collection, such as Modula 2 [8], C [9] and even C [10] Recent implementations tend to use copying collection algorithms instead of mark and sweep algorithms [11, 12] Copying algorithms take time that is proportional to the amount of accessible data and identify and compact accessible data in one pass. Mark and sweep ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
....is an interesting event in the algorithm that will cause a change in the display. The Zeus system provides no special support for synchronizing multiple algorithms. However, because Zeus is implemented on a multi processor workstation [29] in a software environment that emphasizes concurrency [24, 25], we can easily run several animations simultaneously with their views on the same screen. This technique was used in Figures 2 (bottom) 3 (bottom) and 4 (bottom) The comparison of algorithms in Fig. 5 (middle) is implemented within the algorithm code, without support from the algorithm ....
Paul Rovner. Extending Modula--2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
....of this semantics, C matches A if they are identical; in languages with subtyping, it is common to allow C to be a subtype of A instead. Constructs analogous to dynamic and typecase have appeared in a number of languages, including Simula 67 [3] CLU [15] Cedar Mesa [13] Amber [4] Modula 2 [20], Oberon [23] and Modula 3 [8] These constructs have surprising expressive power; for example, fixpoint operators can already be defined at every type in a simply typed lambda calculus extended with Dynamic [1] Important applications of dynamics include persistence and inter address space ....
Paul Rovner. On extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
....between values and types is that data may be added attributes compositionally and (variable) binding may be seen as object identification. This has unusual pay offs. First, compile time resolves some but not all types. Second, there is no need to distinguish between of case and typecase [Rov86] Third, binding as data identification gives a natural interpretation of pointers as equivalence classes of references (coreference classes) and allows selectively undoable side effects. Abstract Constraint Solving Recent work in Logic Programming has shown that Prolog s unification can be ....
....to continuations [FWFD88] Thus, Scheme [RC86] is certainly the programming language instance having explored the issue the furthest with its higher order call cc primitive which allows arbitrarily powerful control flow. The simpler exception handling of ML [HMT88] and Modula 2 3 [CDG 89, Rov86] elaborations of Lisp s earlier catch throw construct [Ste84] still offers some abstraction of control, although less than full continuations but much simpler to implement as mere run stack poppers. For Paradise, we propose a compromise retaining the latter s simplicity and efficiency, yet ....
[Article contains additional citation context not shown here]
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6), November 1986.
....These objects require only that at any time at most one process may have access to the object. In particular, correctness of these objects requires very little information concerning processes and which operations they invoke. Our example objects are taken from the Modula 2 threads package [Rovner 86] We next look at specifications of Argus style atomic objects. Atomic objects in Argus [Liskov Scheifler 83] programs use read write locking and version stacks to ensure that transactions are serializable and that the objects can recover from aborted transactions. Our examples specify the ....
....of Concurrent Systems Chapter 4 Specifications for Alternate Concurrency Models 104 4.1. Mutual Exclusion: Modula 2 Threads Package Numerous programming languages support synchronization of multiple threads through mutual exclusion. The threads interface for languages such as Modula 2 [Rovner 86] C [Cooper Draves 88] and Standard ML [Cooper Morrisett 90] provide simple synchronization facilities based on monitors and condition variables first outlined by Hoare [Hoare 74] In this section we present our version of the specifications of the Modula 2 Mutex, Semaphore, and Alert ....
Paul Rovner. Extending Modula-2 to Build Large, Integrated Systems. IEEE Software 3(6):46-57, 1986.
....automatic storage management (garbage collection) and a powerful module facility. The Standard ML of New Jersey (SML NJ) implementation [3, 7] supports type safe, first class 1 UNIX is a trademark of AT T Bell Laboratories. Hoare s monitors [22] Mesa processes [25] Modula 2 threads [9, 10, 33] CMA [17] C threads [15] Phi Phi Phi Wand s coroutines [38] POSIX threads [24] Ramsey s and Reppy s coroutines [28, 30] H H H Phi Phi Phi SML threads Figure 1: Genealogy of thread interfaces continuations with callcc and throw, and provides asynchronous exception handling ....
....in which processes always recheck the condition for which they are waiting, and go back to sleep if necessary. At DEC SRC, the researchers who implemented processes and monitors in Mesa went on to add threads to Modula 2 for the Firefly multiprocessor workstation. The DEC SRC thread design [9, 10, 33] is the ancestor of various thread interfaces for UNIX and C [15, 17, 24] as well as the current work. This similarity in ancestry has an important practical implication: there is a large, common subset of functionality in all of these packages. For example, Birrell s excellent tutorial on ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
....who might have different opinions about which programming techniques are good or important . Nevertheless, I believe that an understanding of the ideas presented here will serve as a sound basis for programming with concurrent threads. Throughout the paper I use examples written in Modula 2 [12]. These should be readily understandable by anyone familiar with the Algol and Pascal family of languages. The examples are intended to illustrate points about concurrency and synchronization don t try to use these actual algorithms in real programs. Threads are not a tool for automatic ....
ROVNER, P. Extending Modula-2 to build large, integrated systems. IEEE Software 3, 6 (Nov. 1986), 46-57.
....a less restrictive matching rule, allowing a tag to be a subtype of the guard type instead of requiring that the two match exactly. Constructs analogous to dynamic and typecase have been provided in a number of languages, including Simula 67 [2] CLU [18] Cedar Mesa [16] Amber [3] Modula 2 [22], Oberon [25] and Modula 3 [9] These constructs have surprising expressive power; for example, fixpoint operators can be defined at every type already in a simply typed lambda calculus extended with Dynamic [1] Important applications of dynamics include persistence and inter address space ....
Paul Rovner. On extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46-- 57, November 1986.
....in theory of ML like languages. Related Work Software Development in Advanced Languages A number of previous projects have used high level languages to implement real systems. These include the Cedar system, written in Mesa at Xerox PARC [94] the Topaz system, written in Modula2 at DEC SRC [87, 121]; the Trestle window system, written in Modula 3 at DEC SRC [19, 98, 82] the Symbolics and Xerox Lisp machines; the Swift system, written in CLU at MIT [24, 77] and various real time and embedded systems written in Ada [132] Each of these languages provides some advantages over lower level ....
Paul Rovner. Extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46-- 57, November 1986.
....context. It has a type any and a force construct that attempts to coerce an any into an instance of a given type, raising an exception if the coercion is not possible. Cedar Mesa [19] provides very similar REFANY and TYPECASE. These features of Cedar Mesa were carried over directly into Modula 2 [32] and Modula 3 [8, 9] In CLU and Cedar Mesa, the primary motivation for including a dynamic type was to support programming idioms from LISP. Shaffert and Scheifler gave a formal definition [33] and denotational semantics [34] of CLU, including the type any and the force construct. This semantics ....
....it a constant as far as the inner typecase is concerned. Readers may enjoy the exercise of defining a similar function that takes two functions as dynamic values and returns their composition as a dynamic value. In contrast to some languages with features similar to Dynamic (for example, Modula2 [32]) the set of type tags involved in a computation cannot be computed statically: our dynamic expressions can cause the creation of new tags at run time. A simple example of this is a function that takes a dynamic value and returns a Dynamic whose value part is a pair, both of whose components are ....
[Article contains additional citation context not shown here]
Paul Rovner. On extending Modula-2 to build large, integrated systems. IEEE Software, 3(6):46--57, November 1986.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC