An Overview of the Spring System
(In IEEE COMPCOM '94)
Introduction by Jim Mitchell
The Spring operating system project grew out of a desire to have a better implementation of UNIX®. In 1987, as part of an agreement between Sun Microsystems and AT&T to merge the System V and Berkeley (BSD) "strains" of UNIX®, Sun and AT&T agreed to collaborate on a project to "reimplement UNIX in an object-oriented fashion". That project consisted of only a few initial meetings and then was forgotten, but Sun had begun to build a team of OS experts, and we wanted to do something significant.
We decided to push the state of the art in operating systems. We would develop a highly modular, extensible, microkernel-based, distributed, object-oriented operating system. The main idea was that one should be able to build a distributed system (almost) as easily as a system on a single computer, and that most of the OS programming could be done without having to endure the constraints of kernel-level programming. Such a system could be extended by anyone, not just by kernel programmers, and not just by the company that produced the OS. Our intent was to get around the problems that most operating systems (still) have: they are hard to change; only the company that produces them can change them; and they become large and monolithic as more and more functionality is added.
By 1994, we had developed the Spring system and this paper was written to give an overview of the system. The system was architected and built by a small number of people: Michael Powell was the chief architect; Jim Mitchell managed the project; Graham Hamilton was the chief implementation architect and a main implementor; Yousef Khalidi, Mike Nelson, Peter Madany, and Pano Kougiouris designed many of the system's key parts such as virtual memory and file systems; and Sanjay Radia designed and built the federated naming system. Jonathan Gibbons designed and implemented IDL, which is described below and in the paper; and Peter Kessler built all the stub machinery that formed the connective tissue of Spring.
Spring was an open system that could be extended by adding new types of objects. Only the microkernel ran in kernel mode, so adding a new system component did not require being a kernel programmer. To make the notion of objects fit such an open, multilingual system, we (re)invented the idea of an Interface Definition Language (IDL) that was used to describe the parts of the system. One could compile an IDL interface to produce an object-oriented "stub" into which one's implementation could then be plugged. IDL interfaces can use (interface) inheritance as a way of specializing OS interfaces, a feature that later appeared in Java. When the Object Management Group (OMG) needed a way to talk about distributed objects for their CORBA architecture, they adopted IDL for that purpose.
Spring itself never became a product, but some of the technology developed as part of the project (such as IDL) was adopted in other areas. We invented a fast way to short circuit calls between objects when they are on the same machine rather than different machines connected by a network. This facility (Spring doors) has been incorporated in the Solaris (TM) Operating Environment for fast process-to-process communication. And, of course, IDL was used to allow CORBA objects to be written in Java and communicate with other CORBA objects.
With the enormous growth of the worldwide web and the growth of standards for it like HTTP, HTML, XML, etc., the importance of a new OS structure was considerably diminished. The result was that we stopped trying to make Spring a product and the team became part of the Java Software organization, and a number of the Spring ideas have been used to enhance the Java environment in areas like RPC (Java(TM) IDL), naming (JNDI) and others.
"An Overview of the Spring System.© 1994 Sun Microsystems, Inc. and IEEE. Reprinted, with permission, from Proceedings of Compcon, Spring 1994, February 1994.PUBLICATIONS:
- "An Overview of the Spring System" originally appeared in the Proceedings of Compcon Spring 1994. Copyright© February 1994.
- "Subcontract: A Flexible Base for Distributed Programming" originally appeared in the Proceedings of the 14th Symposium on Operating Systems Principles, Asheville NC, December 1993.
Copyright© 1993 ACM.
- "A Client-Side Stub Interpreter" originally appeared in the Proceedings of ACM Workshop on Interface Definition Languages, January 1994. Copyright© 1994 ACM.
- "Using Interface Inheritance to Address Problems in Software Evolution" originally appeared in the Proceedings of the ACM Workshop on Interface Definition Languages, January 1994.
Copyright© 1994 ACM.
- "The Spring Name Service" originally appeared as Sun Microsystems Laboratories Technical Report SMLI-93-16, October 1993. Copyright© 1993 Sun Microsystems Inc.
- "Naming Policies in Spring" originally appeared in the Proceedings of the 1st International Workshop on Services in Distributed and Networked Environments. Copyright (C) 1994 IEEE.
- "Persistence in the Spring System" originally appeared in the Proceedings of the 3rd Workshop on Object Orientation in Operating Systems, December 1993. Copyright© 1993 IEEE.
- "The Spring Nucleus: A Microkernal for Objects" originally appeared in the Proceedings of the 1993 Summer Usenix Conference, June 1993. Copyright© 1993 USENIX.
- "The Spring Virtual Memory System" originally appeared as the Sun Microsystems Laboratories Technical Report SMLI-93-9, March 1993. Copyright© 1993 Sun Microsystems Inc.
- "A Flexible External Paging Interface" originally appeared in the Proceedings of the Usenix conference on Microkernels and Other Architectures, September 1993. Copyright© 1993 USENIX.
- "The Spring File System" originally appeared as the Sun Microsystems Laboratories Technical Report SMLI-93-10, March 1993. Copyright© 1993 Sun Microsystems Inc.
- "Extensible File Systems in Spring" originally appeared in the Proceedings of the 14th Symposium on Operating Systems Principles, Asheville NC, December 1993. Copyright© 1993 ACM.
- "An Implementation of UNIX on an Object-oriented Operating System" originally appeared in the Proceedings of the 1993 Winter Usenix Conference, January 1993. Copyright© 1993 USENIX.
- "High Performance Dynamic Linking Through Caching" originally appeared in the Proceedings of the 1993 Summer Usenix Conference, June 1993. Copyright© 1993 USENIX.
- "A Framework for Caching in an Object Oriented System" originally appeared in the Proceedings of the 3rd Workshop on Object Orientation in Operating Systems, December 1993. Copyright© 1993 IEEE.
