[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
Skip header Section
Project Oberon: the design of an operating system and compilerNovember 1992
  • Authors:
  • Niklaus Wirth,
  • Jürg Gutknecht
Publisher:
  • ACM Press/Addison-Wesley Publishing Co.
  • 1515 Broadway, 17th Floor New York, NY
  • United States
ISBN:978-0-201-54428-2
Published:02 November 1992
Pages:
548
Skip Bibliometrics Section
Reflects downloads up to 14 Dec 2024Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Wimmer C, Brunthaler S, Larsen P and Franz M Fine-grained modularity and reuse of virtual machine components Proceedings of the 11th annual international conference on Aspect-oriented Software Development, (203-214)
  2. ACM
    Wegiel M and Krintz C (2010). Cross-language, type-safe, and transparent object sharing for co-located managed runtimes, ACM SIGPLAN Notices, 45:10, (223-240), Online publication date: 17-Oct-2010.
  3. ACM
    Wegiel M and Krintz C Cross-language, type-safe, and transparent object sharing for co-located managed runtimes Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (223-240)
  4. ACM
    Wegiel M and Krintz C XMem Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation, (327-338)
  5. ACM
    Wegiel M and Krintz C (2008). XMem, ACM SIGPLAN Notices, 43:6, (327-338), Online publication date: 30-May-2008.
  6. ACM
    Yamauchi H and Wolczko M Writing Solaris device drivers in Java Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems, (3-es)
  7. ACM
    Lin C Programming monads operationally with Unimo Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming, (274-285)
  8. ACM
    Lin C (2006). Programming monads operationally with Unimo, ACM SIGPLAN Notices, 41:9, (274-285), Online publication date: 16-Sep-2006.
  9. ACM
    Witchel E, Rhee J and Asanović K Mondrix Proceedings of the twentieth ACM symposium on Operating systems principles, (31-44)
  10. ACM
    Witchel E, Rhee J and Asanović K (2005). Mondrix, ACM SIGOPS Operating Systems Review, 39:5, (31-44), Online publication date: 20-Oct-2005.
  11. ACM
    Kirsch C, Sanvido M and Henzinger T A programmable microkernel for real-time systems Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments, (35-45)
  12. Price D, Rudys A and Wallach D Garbage Collector Memory Accounting in Language-Based Systems Proceedings of the 2003 IEEE Symposium on Security and Privacy
  13. Golm M, Felser M, Wawersich C and Kleinöder J The JX Operating System Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference, (45-58)
  14. Bindhammer T, Göckelmann R, Marquardt O, Schöttner M, Wende M and Schulthess P (2018). Device driver programming in a transactional DSM operating system, Australian Computer Science Communications, 24:3, (65-71), Online publication date: 1-Jan-2002.
  15. Bindhammer T, Göckelmann R, Marquardt O, Schöttner M, Wende M and Schulthess P Device driver programming in a transactional DSM operating system Proceedings of the seventh Asia-Pacific conference on Computer systems architecture, (65-71)
  16. Alpern B, Cocchi A and Grove D Dynamic type checking in jalapeño Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1, (4-4)
  17. Back G, Hsieh W and Lepreau J Processes in KaffeOS Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
  18. van Doorn L A secure javaTM virtual machine Proceedings of the 9th conference on USENIX Security Symposium - Volume 9, (2-2)
  19. ACM
    Dolby J and Chien A An automatic object inlining optimization and its evaluation Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, (345-357)
  20. ACM
    Leif R (2000). SIGAda 99, workshop, ACM SIGAda Ada Letters, XX:2, (19-26), Online publication date: 1-Jun-2000.
  21. ACM
    Dolby J and Chien A (2019). An automatic object inlining optimization and its evaluation, ACM SIGPLAN Notices, 35:5, (345-357), Online publication date: 1-May-2000.
  22. ACM
    Flatt M, Findler R, Krishnamurthi S and Felleisen M (1999). Programming languages as operating systems (or revenge of the son of the lisp machine), ACM SIGPLAN Notices, 34:9, (138-147), Online publication date: 1-Sep-1999.
  23. ACM
    Flatt M, Findler R, Krishnamurthi S and Felleisen M Programming languages as operating systems (or revenge of the son of the lisp machine) Proceedings of the fourth ACM SIGPLAN international conference on Functional programming, (138-147)
  24. ACM
    Leif R (1999). SIGda '96, workshop, ACM SIGAda Ada Letters, XIX:1, (28-39), Online publication date: 1-Mar-1999.
  25. ACM
    Dolby J and Chien A (2019). An evaluation of automatic object inline allocation techniques, ACM SIGPLAN Notices, 33:10, (1-20), Online publication date: 1-Oct-1998.
  26. ACM
    Dolby J and Chien A An evaluation of automatic object inline allocation techniques Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (1-20)
  27. ACM
    Tullman P and Lepreau J Nested Java processes Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications, (111-117)
  28. Weck W Inheritance Using Contracts & Object Composition Proceedings of the Workshops on Object-Oriented Technology, (384-388)
  29. ACM
    Dolby J (2019). Automatic inline allocation of objects, ACM SIGPLAN Notices, 32:5, (7-17), Online publication date: 1-May-1997.
  30. ACM
    Dolby J Automatic inline allocation of objects Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, (7-17)
  31. ACM
    Dotzel G and Goebel H (1996). Porting the Oberon system to AlphaAXP, ACM SIGPLAN Notices, 31:11, (66-73), Online publication date: 1-Nov-1996.
  32. Koskimies K and Mössenböck H Scene Proceedings of the 18th international conference on Software engineering, (366-375)
  33. ACM
    Bishop J and Faria R Characteristics of modern system implementation languages Proceedings of the 1995 ACM 23rd annual conference on Computer science, (18-25)
  34. ACM
    Nigro L (1993). On the type extensions of Oberon-2, ACM SIGPLAN Notices, 28:2, (41-44), Online publication date: 1-Feb-1993.
Contributors
  • Swiss Federal Institute of Technology, Zurich
  • Swiss Federal Institute of Technology, Zurich

Reviews

Charles Thacker

Oberon is a computing environment for a single-user workstation, designed and implemented at the Swiss Federal Institute of Technology (ETH) in Zurich by N. Wirth and J. Gutknecht. The Oberon system [1] is a user's guide and high-level description of the system. Programming in Oberon [2] is the reference for the Oberon language and contains examples and exercises that make it suitable as a textbook. Project Oberon is the third volume in the Oberon trilogy. It is a detailed case study of the design of this innovative system. Wirth and Gutknecht's primary goal was not only to build a system that provides most of the capabilities found in today's workstation environments, but to do so using modern software engineering concepts so that the result could be used as teaching material. To meet this goal within a reasonable time with the limited manpower available (the designers themselves), the authors omitted many of the features usually found in such systems. Rather than layering a graphical user interface on an operating system designed for timesharing, the system was designed from scratch to provide an interactive, extensible window-based user interface tightly integrated with a task management facility optimized to support user interaction. This book contains 14 chapters. Slightly less than half of the text consists of program listings of the system's modules. The first two chapters describe the authors' motivation for the construction of Oberon and introduce the modules that are described in the balance of the book. Although versions of Oberon exist for a number of machines, the description here is based on the implementation for the Ceres workstation developed at ETH. Fortunately, most of Oberon is machine-independent, so the listings provided apply to all implementations. Chapter 3 describes the Oberon task manager. Perhaps the most unfamiliar idea in Oberon is that the unit of execution is not a program but an individual procedure invocation. Command procedures are activated by clicking a mouse button on a string of the form “Module.Procedure” anywhere on the display. Command procedures are parameterless, but they can interrogate their environments (typically nearby text) for their operands. An example is the command “Edit.Open name.txt,” which activates the procedure Open in module Edit (loading the module dynamically if it is not already present in memory). The procedure then opens a viewer (window) displaying the contents of the file “name.txt.” A unique cursor identifies a position within the text of the active viewer, and characters and mouse events from the user are delivered by the system to a handler provided by the application at the time of its creation. Since user-initiated events can be handled rapidly, the need for preemptive multi tasking is eliminated; the task manager is a loop that polls for events and dispatches them to the appropriate handler. Chapters 4 and 5 describe the display management facilities and the text subsystem. In Oberon, text strings are an abstract data type. Their creation, modification, display, and ultimate deallocation are handled uniformly. This high level of integration simplifies the creation of new utilities for manipulating text. The standard text editor, for example, consists of only nine pages of code. These chapters contain extensive discussion of the authors' design choices, and a careful reading will reward those interested in the design of user interfaces. Chapters 6 through 8 describe the lower levels of the system, including the module loader, the file system, and the management of storage. They will be of interest primarily to operating system designers. The modules described here are specific to the Ceres implementation of Oberon, and are quite different in versions of the system that are built on UNIX or MS-DOS. Chapters 9 through 11 discuss Oberon extensions that have been provided for a network and for file, mail, and print servers. The designs are Spartan and the implementations small. They nevertheless have proven adequate to support a user community of over 80 faculty members and a large student population at ETH. Chapter 12 presents the Oberon compiler. As with the rest of the system, the design is straightforward. A recursive descent parser and a single-pass design make the compiler extremely fast. Much of the apparent complexity in the version described here is due to the complexity of the target architecture, the (CISC) NS32000. No optimization of the generated code is done, which increases the speed of compilation at the expense of execution. For interactive program development on modern workstations, this choice is undoubtedly correct. Chapter 13 describes the Oberon graphics editor Draw . It demonstrates how the system may be extended to provide new abstract data types using the type extension facility of the Oberon language. The graphics editor is heavily object-oriented, and its description is one of the better tutorials I have read on the utility of object-oriented techniques. The final chapter describes the tools used to bootstrap the system and to recover from disk errors. Since these tools are highly machine-dependent, no program listings are provided, but the discussion of the facilities required for these tasks will interest designers of real systems that must cope with real errors. Oberon demonstrates that a system that supports most of the computational needs of a single user need not be large, slow, and complex. Project Oberon is probably the most complete description of a system of this scale that has ever been written. It not only provides a clear description of the system, but also gives the reader an understanding of the design issu es faced by the authors, and how these were resolved. It is difficult to teach good design practice other than by example, and this book provides a wealth of examples. The writing is clear, a number of figures and illustrations enhance the text, and few production errors have occurred. I recommend it highly.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Please enable JavaScript to view thecomments powered by Disqus.

Recommendations