Spring Operating System
Summary
- How to Innovate OS
- Object Based vs Procedrual Design
- Spring Approach
- Secure Object Invocation
- Virtual Memory Managment in Spring
- Spring System Summary
- Dynamic Client Server Relationship
How to Innovate OS
Brand new OS or better implementation of known OS?
Market-place needs
- Large complex server software
In order to maintain legacy software, the Sun Microsystems chose an implementation of an existing OS
Object Based vs Procedrual Design
Objects hide internal state and only expose methods
Spring Approach
- Strong interfaces
- Open, Flexible, and Extensible
Nucleus “Microkernel” of Spring
Domain = Address space
Threads execute in a particular domain
Doors provide access to domains via handles
Object Invocation Across the Network
Proxies are invisible to client and server
Proxy A: export net handle embedding doorX Proxy B: use net handle to connect nuclei
Secure Object Invocation
Front objects provide security mechanisms
- Outside the scope of Spring OS
- Inside realm of service
Multiple front objects can point to the same underyling object but bind to different doors to enforce different security policies.
Front objects can do things like present one-time references to objects
Virtual Memory Managment in Spring
Break linear address space into regions
Each region points to a memory object
Each memory object may map to files, swap space, etc.
Memory Object Specific Paging
Multiple paging mechanisms can be used for different memory objects
Spring System Summary
- Object oriented kernel
- nucleus
- Threads + IPC
- microkernel
- nucleus + address space
- door + door table
- basis for cross domain calls
- object invocation and cross machine calls
- virtual memory management
- address space object, memory object, external pagers, cached obj
- nucleus
Dynamic Client Server Relationship
Subcontract
Contracts between client and server are defined by IDL
Subcontracts are provided to realize ideal connection between client and server
Implementation of contracts are handled through subcontracts to hide runtime details
- makes client side stub generation simpler