Monads Security - Official Homepage > Welcome to monads-security.org

The Monads Project

A Monads Computer
A Monads Computer

The Monads Project was initiated by Prof. Keedy in 1976 at Monash University in Melbourne, Australia. It became an ongoing "umbrella" project for a variety of related research activities concerned with the design of computer systems, in particular in the areas of computer hardware and architecture, operating systems, distributed systems, and practical software engineering research. It was continued at the Universities of Newcastle (NSW) and of Sydney in Australia, and at the Technical University of Darmstadt and at the Universities of Bremen and of Ulm in Germany. For further details see the history of the project below.

The Monads project led to the design of several computer processors, some of which were also built and used in practice. These are described in more detail below under the heading of Monads Computers.

Key research ideas from the Monads Project are described in separate documents which are referenced at appropriate points in the following text, and are listed individually at the end of the document.

Aims of the Project

The primary aims of the project, which arose out of Prof. Keedy's previous experiences working with ICL, especially in the design team for the ICL 2900 Series VME Operating System, were as follows:

  • To develop practical software engineering techniques for improving the specification, design, implementation and maintenance of large software systems, i.e. systems involving tens, hundreds and even thousands of man years of effort.
  • To develop practical techniques for guaranteeing the security (i.e. the confidentiality, integrity and availability) of information held in large computer systems.

Some aspects of these aims are best achieved at the level of programming language design and have been pursued in related projects, notably in the Leibniz Project, in the L1 Project and most recently in various Java extension projects. These are described elsewhere.

Other aspects of the aims are more appropriately achieved by a combination of hardware and operating system software. These are the issues which have been addressed in the Monads Project (and recently also in the S-RISC Project).

Brief History of the Project

In 1976 Prof. Keedy initiated the Monads Project in the Department of Computer Science at Monash University in Melbourne, Australia, where work continued on the project until 1985. His initial research team consisted of three Ph.D. students. John Rosenberg worked in the area of kernel design, Kotigiri Ramamohanarao in the area of job management and Ian Richards in the area of subsystem management. The hardware base for the early work was a Hewlett Packard 2100A minicomputer which Prof. Chris Wallace had already modified to support a minimal virtual memory structure. At the request of the Monads group Prof. Wallace and his research student Rob Hagan made a further modification to provide addressing support for process stacks, and this modified hardware, together with the software, became known as the Monads I system. John Rosenberg, who later became full Professor of Computer Science at the University of Sydney, continued for many years to work on the project as a full research investigator and partner of Prof. Keedy.

By 1978 it had become evident that the hardware of the Monads I system was not adequate to support the software ideas which had been developed, in particular the idea of a persistent virtual memory in which all major software resources (comparable to files in conventional systems) ­ and including data files ­ should reside as information hiding modules and which were to be directly addressable from persistent processes, protected by capabilities. Consequently a further hardware development, known as Monads II, was undertaken by another research student, David Abramson. This was based on a further HP 2100A computer but the hardware changes were much more radical. This included the first implementation of the orthogonal model for combining paging and segmentation, and the first implementation of capability registers containing large virtual addresses.

The Monads II hardware was from the beginning regarded as a prototype, in particular with respect to the sizes of virtual addresses, and a plan was formulated to build a further hardware system, Monads III, which would have full 60 bit virtual addresses. However, this plan was abandoned when Prof. Keedy accepted the Chair in Operating Systems at Darmstadt in Germany in 1982. Shortly before this another student, John Thomson, had started to work on a Ph.D. in association with an operating system for the Monads II/III systems. His work continued to a successful completion at Monash, despite the difficulties of having a supervisor in Germany.

As the hardware development possibilities at Darmstadt were limited Prof. Keedy worked there from 1982 to 1985 on software related aspects of the projects. The elimination of a file system in the Monads philosophy made it necessary to think about how persistent objects could be organized in the virtual memory. A former research student from Monash, Mark Evered, moved to Darmstadt with Prof. Keedy and worked there on the development of a new very high level programming language, called Leibniz, for this purpose. Leibniz is a persistent programming language which supports information hiding modules (including files) and allows them to be structured as sets and sequences of smaller objects. It is more fully described elsewhere. While in Monash Prof. Keedy and his students had also given some attention to support for efficient synchronization primitives. He developed these ideas further in Darmstadt together with his research assistant Bernd Freisleben.

In 1984 John Rosenberg (who had meanwhile returned to Monash after working in a software house) and David Abramson joined together to continue the Monads hardware work. Together they designed and built the first Monads-PC system at Monash, incorporating many of the ideas from the abandoned Monads III. The Monads-PC had 60 bit virtual addresses with capability registers and an address translation unit capable of efficiently translating these large unique virtual addresses. Over the following years several Monads-PC systems were built, and this system became the workhorse for most subsequent research on the Monads Project. A picture of a Monads-PC computer appears at the head of this document.

During a visit to Monash from Darmstadt in 1984 Prof. Keedy discussed the problem of how Monads-PCs could be networked together, and out of this visit grew the initial idea (worldwide) of distributed shared virtual memory.

In 1985 Prof. Keedy returned to Australia and established a new Department of Computer Science at the University of Newcastle, New South Wales. John Rosenberg soon joined him as a Senior Lecturer. Together they moved the Monads Project to Newcastle. With a new research student, Frank Henskens, they further developed the idea of distributed shared memory. They also made some modifications to the Leibniz programming language. Together with David Koch they also formulated the idea of a Monads-MM computer, which was to have not only very large virtual addresses (128 bits) but also a main memory of the order of several gigabytes, which was a very unusual idea in 1986.

In 1988 Prof. Keedy moved to the University of Bremen in Germany and soon afterwards John Rosenberg was appointed Professor of Computer Science at the University of Sydney, where he was joined by Frank Hensens. Thereafter Monads worked continued at both locations. In Sydney the emphasis was mainly on developing the distributed shared memory, while in Bremen, the emphasis focused on database aspects of the Monads architecture (with Peter Brössler) and on higher level software for a secure operating system (with Karin Vosseberg), in particular with the use of directories as a means for providing secure communication both in a local and in a distributed system.

Together with Jörg Siedenburg Prof. Keedy also worked in Bremen on new ideas for structuring kernels in an object-oriented way. This work moved to the University of Ulm in 1993. Out of this work the seeds of a new project, called S-RISC and involving the design of a RISC computer system with powerful security features, has emerged. At Ulm new initiatives have also been started (with Mark Evered, Gisela Menger and Axel Schmolitzky) in the area of programming language design, both in the form of a new language L1 and various extensions to Java (which serve as a testbed for basic ideas from L1).

The Monads Computers

In the course of the Monads Project various computers have been designed and some of these have been implemented to illustrate the key ideas of the project. In this section these computers are briefly described, and references are provided to the software and hardware of these systems.

Monads I

The Monads I system was developed between 1976 and 1978 at Monash University. The hardware was a Hewlett Packard 2100A minicomputer which was modified to support a simple paged virtual memory and addressing modes suitable for supporting process stacks. Its kernel and higher level operating system software were written in Assembler.

Keedy, J.L. "The Influence of the Information-Hiding Principle on the MONADS Operating System", Proc. Australian Universities Computer Science Seminar, Sydney, 1978, pp. 1-7.

Keedy, J.L. "The MONADS Operating System", Proc. 8th Australian Computer Conference, Canberra, 1978, pp. 903-910.

Rosenberg, J. and Keedy, J.L. "The MONADS Hardware Kernel", Proc. 8th Australian Computer Conference, Canberra, 1978, pp. 1542-1552.

Ramamohanarao, K. and Keedy, J.L. "Job Management in the MONADS Operating System", Proc. 8th Australian Computer Conference, Canberra, 1978, pp. 1476-1488.

Georgiades, A., Richards, I. and Keedy, J.L. "A File System for the MONADS Operating System", Proc. 8th Australian Computer Conference, Canberra, 1978, pp. 547-558.

Richards, I. and Keedy, J.L. "Subsystem Management in the MONADS Operating System", Proc. 8th Australian Computer Conference, Canberra, 1978, pp. 1520-1529.

Wallace, C.S. "Memory and Addressing Extensions to a HP2100A", in Proceedings of the 8th Australian Computer Conference, Canberra, pp. 1796-1811, 1978.

Hagan, R.A. and Wallace, C.S. "A Virtual Memory System for the Hewlett Packard 2100A", ACM Computer Architecture News, 6,5, 1979, pp. 5-13.

Keedy, J.L., Ramamohanarao, K. and Rosenberg, J. "On Implementing Semaphores with Sets", The Computer Journal, 22,2, 1979, pp. 146-150.

Monads II

Monads II was a hardware prototype of the architecture which characterized all later Monads systems. It was a Hewlett Packard 2100A minicomputer that was modified by David Abramson to incorporate address translation hardware for large virtual addresses and protection based on capability registers containing large virtual addresses, using the orthogonal model for combining segmentation and paging. Together these features provided the essential base for supporting an experimental persistent virtual memory. Monads II was planned as a forerunner for the Monads III computer system.

Keedy, J.L. "Paging and Small Segments: A Memory Management Model", Proc. IFIP80, 8th World Computer Congress, Melbourne 1980, pp. 337-342.

Abramson, D.A. "Hardware Management of a Large Virtual Memory", Proc. 4th Australian Computer Conference, 1981, pp. 1-13.

Rosenberg, J. and Keedy, J.L. "Software Management of a Large Virtual Memory", Proc. 4th Australian Computer Science Conference, Brisbane, 1981, pp. 173-181.

Abramson, D.A. "Hardware for Capability Based Addressing", in Proceedings of the Proc. 9th Australian Computer Conference, 1982, pp. 101-115.

Abramson, D.A. "A Technique for Enhancing Processor Architecture", in Proceedings of the Proc. 4th Australian Computer Science Conference, in Australian Computer Science Communications, pp. 44-57, 1982.

Keedy, J.L., Rosenberg, J. and Ramamohanarao, K. "On Synchronising Readers and Writers with Semaphores", The Computer Journal, 25, 1, 1982, pp. 121-125.

Abramson, D.A. and Rosenberg, J. "Hardware Support for Program Debuggers", ACM Computer Architecture News, 11,2, 1983, pp. 8-19.

Monads III

This computer was planned as the first full-scale computer using the ideas already incorporated into the Monads II. Although it was never built (due to the break up of the Monads group at Monash, following Prof. Keedy's acceptance of a Chair in Darmstadt), its design played a significant role in the development of the project, and was the subject of several papers, on both software and hardware topics.

Rosenberg, J., Rowe, D.M. and Keedy, J.L. "An Overview of the MONADS Series III Architecture", Proc. 9th Australian Computer Science Conference, Perth, 1982, pp. 58-67.

Gehringer, E.F., Keedy, J.L. and Thomson, J.V. "Dynamic Data Structure Management in MONADS III", Proc. 9th Australian Computer Science Conference, Perth, l982, pp 68-78.

Keedy, J.L., Abramson, D., Rosenberg, J. and Rowe, D.M. "The MONADS Project Stage 2: Hardware Designed to support Software Engineering Techniques", Proc. 9th Australian Computer Conference, Hobart, 1982, pp. 575-580.

Keedy, J.L. "The MONADS View of Software Modules", Proc. 9th Australian Computer Conference, Hobart, 1982, pp. 560-574.

Keedy, J.L., Rosenberg, J., Abramson D. and Rowe, D.M. "A Comparison of the MONADS II and III Computer Systems", Proc. 9th Australian Computer Conference, Hobart, 1982, pp. 581-587.

Keedy, J.L. and Rosenberg, J. "Architectural Support for Software in the MONADS III Computer Design", in Informatik-Fachberichte, 57, Springer Verlag, 1982, pp. 71-86.

Keedy, J.L. "A Memory Architecture for Object-Oriented Systems", in "Objekt-orientierte Software- und Hardwarearchitekturen", ed. H. Stoyan and H. Wedekind, Teubner-Verlag, Stuttgart, 1983, pp. 238-250.

Keedy, J.L. and Thomson, J.V. "Command Interpretation and Invocation in an Information Hiding System", IFIP TC-2 Conference on The Future of Command Languages: Foundations for Human-Computer Communication (ed. K.Hopper and I.A.Newman), Rome, Italy, 1985, pp.278-292.

Keedy, J.L. "An Implementation of Capabilities without a Central Mapping Table", Proc. 17th Hawaii International Conference on System Sciences, 1984, pp.180-185.

Keedy, J.L. and Freisleben, B. "On the Efficient Use of Semaphore Primitives", Information Processing Letters, 21,4, 1985, pp. 199-205.

Monads-PC

The first Monads-PC was designed, built, microprogrammed and programmed by David Abramson and John Rosenberg in 1984 at Monash University. The name PC is not entirely appropriate; the Monads-PC is in fact a microcoded mincomputer with a performance about equivalent to that of a DEC VAX 11-750. The kernel software was written in an Assembler desgned for the system. Higher level software was later written in a language called Monads-Pascal, also designed by John Rosenberg. This language was later modified in various ways. It provides linguistic support for persistent programming, for module capabilities, for a uniform view of modules and for concurrent programming. There has been a continuous development of higher level software for the Monads-PC by various members of the project.

Several Monads-PC systems have been built. Most of these are now at the University of Ulm and they are still used for student projects.

Rosenberg, J. and Abramson, D.A. "MONADS-PC: A Capability Based Workstation to Support Software Engineering", in Proc. 18th Hawaii International Conference on Systems Sciences, pp. 515-522, 1985.

Abramson, D.A. and Rosenberg, J. "Supporting a Capability Based Architecture in Silicon", in Proc. 4th Microelectronics Conference, pp. 43-50, 1985.

Abramson, D.A. and Rosenberg, J. "A Vertical User Interface to Horizontal Microcode via a Retargetable Microassembler", in Proc. 8th Australian Computer Science Conference Melbourne, pp. 8/1-8/12, 1985.

Rosenberg, J. and Keedy, J.L. "Object Management and Addressing in the MONADS Architecture", Proc. International Workshop on Persistent Object Systems, Appin, Scotland, 1987.

Brössler, P. and Freisleben, B. "Transactions on Persistent Objects", in Proc. International Workshop on Persistent Object Systems, pp. 19-35, 1989.

Keedy, J.L. and Freisleben, B. "Priority Semaphores", The Computer Journal, 32, 1, 1989, pp. 24-28.

Keedy, J.L. and Rosenberg, J. "Support for Objects in the MONADS Architecture", Proc. International Workshop on Persistent Object Systems, Newcastle, Australia, Springer Verlag, 1990, pp. 392-405.

Brössler, P. and Rosenberg, J. "Transactions in a Segmented Single Level Store Architecture", in Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, Springer-Verlag, pp. 319-338, 1990.

Evered, M. and Keedy, J.L. "A Model for Protection in Object-Oriented Systems", Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, Springer Verlag, 1990, pp. 67-82.

Freisleben, B., Kammerer, P. and Keedy, J.L. "Capabilities and Encryption: The Ultimate Defence Against Security Attacks?", in Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, pp. 106-119, 1990.

Rosenberg, J., Henskens, F.A., Brown, A.L., Morrison, R. and Munro, D. "Stability in a Persistent Store Based on a Large Virtual Memory", in Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, Springer-Verlag, pp. 229-245, 1990.

Rosenberg, J. "Architectural Support for Persistent Object Systems", in Proc. International Workshop on Object Orientation in Operating Systems, IEEE Computer Society Press, pp. 48-60, 1991.

Keedy, J. L. and Vosseberg, K. "Persistent Protected Modules and Persistent Processes as the Basis for a More Secure Operating System", in Proc. 25th Hawaii International Conference on System Sciences, 1992.

Keedy, J. L. and Vosseberg, K. "Security in a Persistent Distributed Operating System", in Proc. 12th GI/ITG-Conference: "Architektur von Rechensystemen", 1992, Christian-Albrechts-Universität, Kiel.

Rosenberg, J., Keedy, J.L. and Abramson D.A. "Addressing Mechanisms for Large Virtual Memories", The Computer Journal, 35, 4, 1992, pp.369-375.

Keedy, J. L., & Brössler, P. "Implementing Databases in the MONADS Virtual Memory", in Proc. Fifth International Workshop on Persistent Object Systems, Design Implementation and Use, 1992, pp. 319-331.

Keedy, J.L. "A Model for Security and Protection in Persistent Systems", Microprocessors and Microsystems, 17, 3, 1993, pp.139-146.

Vosseberg, K., Brössler, P., & Keedy, J. L. "A Base for Secure Operating System Environments", in Proc. Workshop on Security in Operating Systems, OOPSLA 1993, 1993.

Dunstan, N., Keedy, J.L. and Rosenberg, J. "Support for Concurrent Programming on the MONADS-PC", Australian Computer Journal, 25, 1, 1993, pp. 1-6.

Distributed Monads-PC

The idea of a distributed shared memory was realized in a local area network of Monads-PC systems at the University of Newcastle, N.S.W. Most of the kernel software design and implementation was carried out by Frank Henskens.

Abramson, D.A. and Keedy, J.L. "Implementing a Large Virtual Memory in a Distributed Computing System", Proc. 18th Hawaii International Conference on System Sciences, 1985, pp.515-522.

Keedy, J.L., Brössler, P., Henskens, F.A. and Rosenberg, J. "Addressing Objects in a Very Large Distributed System", Proc. IFIP Conference on Distributed Systems, Amsterdam, 1987.

Hitchens, M. "The Structure of a Command Language Interpreter", in Proc. 4th IFIP Working Conference on User Interfaces: Engineering for Human-Computer Interaction, Napa Valley, North-Holland, 1989.

Henskens, F.A., Rosenberg, J. and Hannaford, M.R. "Stability in a Network of MONADS-PC Computers", in Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, Springer-Verlag, pp. 246-258, 1990.

Henskens, F.A., Rosenberg, J. and Keedy, J.L. "A Capability-based Distributed Shared Memory", Australian Computer Science Communications, 13, 1, 1991, pp. 29/1-29/12.

Henskens, F., Brössler, P., Keedy, J.L. and Rosenberg, J. "Coarse and Fine Grain Objects in a Distributed Persistent Store", in Proc. Third IEEE International Workshop on Object-Orientation in Operating Systems, Ashville, North Carolina, pp. 116-123, 1993.

Henskens, F., Brössler, P., Keedy, J.L. and Rosenberg, J. "Transparent Distribution using Two Object Granularities", in Proc IEEE European Conference on Object-Oriented Programming (Workshop on Object-Orientation in Operating Systems), Kaiserslautern, Germany, pp. 37-47, 1993.

Henskens, F. and Rosenberg, J. "Distributed Persistent Stores", Journal of Microprocessors and Microsystems, 1993, pp. 147-159.

Henskens, F.A., Koch, D.M., Jalili, R. and Rosenberg, J. "Hardware Support for Stability in a Persistent Architecture", in Proc. 6th International Workshop on Persistent Object Systems, Tarascon, France, Springer Verlag, pp. 381-393, 1994.

Jalili, R. and Henskens, F. "Distributed Shared Memories", in Gozaresh-E-Computer, ed. E.N. Mashayekh, Informatics Society of Iran, Tehran, Iran, pp. 16-33, 1993.

Jalili, R. and Henskens, F. "Management of Persistent Data", in Gozaresh-E-Computer, ed. E.N. Mashayekh, Informatics Society of Iran, Tehran, Iran, pp. 24-32, 1993.

Jalili, R., Henskens, F.A., Rosenberg, J. and Koch, D.M. "Operating System Support for Object Dependencies in Persistent Object Stores", in Proc. International Workshop on Object-Oriented Real-Time Dependable Systems, Dana Point, Ca., IEEE, pp. 21-29, 1994.

Jalili, R. and Henskens, F. "Reducing the Extent of Cascadable Operations in Stable Distributed Stores", in Proc. 18th Australian Computer Science Conference, Adelaide, Australia, pp. 227-236, 1995.

Jalili, R. and Henskens, F. "Using Directed Graphs to Describe Entity Dependency in Stable Distributed Persistent Stores", in Proceedings of the 28th Hawaii International Conference on System Sciences, Adelaide, Australia, IEEE, pp. 665-674, 1995.

Keedy, J. L. "Is Distribution a Genuine Problem for Persistent Systems or is Addressing the Real Problem?", Proc. 28th Hawaii International Conference on System Sciences, 1995, pp.695-704.

Monads-MM

The Monads-MM ("massive main memory") has not been completed, but it played an important role in the project in the late 1980s and early 1990s as the system which would not only have a massive main memory ­ at the time of its original conception in 1986 we were considering a main memory in the order of several gigabytes ­ but would also have 128 bit virtual addresses, allowing objects worldwide to be named uniquely. David Koch did most of the design work.

Rosenberg, J., Koch, D.M. and Keedy, J.L. "A Massive Memory Supercomputer", in Proc. 22nd Hawaii International Conference on System Sciences, pp. 338-345, 1989.

Rosenberg, J., Koch, D.M. and Keedy, J.L. "A Capability-Based Massive Memory Computer", Proc. International Workshop on Persistent Object Systems, Newcastle, Australia, Springer Verlag, 1990, pp. 377-391.

Koch, D.M. and Rosenberg, J. "A Secure RISC-based Architecture Supporting Data Persistence", in Proc. International Workshop on Computer Architectures to Support Security and Persistence of Information, Springer-Verlag, pp. 188-201, 1990.

Ph.D. Theses from the Monads Project

Rosenberg, J. "The Concept of a Hardware Kernel and its Implementation on a Minicomputer", Ph.D. Thesis Thesis, Monash University, 1979.

Ramamohanarao, K. "A New Model for Job Management Systems", Ph.D. Thesis Thesis, Monash University, 1980.

Richards, I. "The Organization and Protection of Information in a Computer Utility", Ph.D. Thesis Thesis, Monash University, 1981.

Keedy, J.L. "Support for Software Engineering in the MONADS Computer Architecture", Ph.D. Thesis, Monash University, 1982.

Abramson, D.A. "Computer Hardware to Support Capability Based Addressing in a Large Virtual Memory", Ph.D. Thesis, Monash University, Dept. of Computer Science, 1982.

Thomson, J.V. "The Design of a Flexible Operating System for a Capability-based Computer", Ph.D. Thesis, Monash University, 1984.

Evered, M. "Leibniz ­ A Language to Support Software Engineering", Dr.-Ing. Thesis, Technical University of Darmstadt, 1985.

Freisleben, B. "Mechanismen zur Synchronisation paralleler Prozesse", Dr.-Ing. Thesis, Technical University of Darmstadt, 1985.

Henskens, F. "A Capability-Based Persistent Distributed Shared Virtual Memory", Ph.D. Thesis, University of Newcastle, N.S.W., 1991.

Hitchens, M. Ph.D. Thesis, University of Newcastle, N.S.W.

Brössler, P. "Flexible und effiziente Unterstützung von Transaktionen auf persistenten Objekten", Dr.-Ing. Thesis, University of Bremen, 1994.

Jalili, R. "A Failure-Transparent Distributed Persistent Store", Ph.D. Thesis, University of Sydney, 1995.

Vosseberg, K. "Sichere Ausführungsumgebungen für Objekte", Dr.-Ing. Thesis, University of Bremen, 1996.