1
Choices
“Our object-oriented system architecture embodies the notion of customizing operating systems to tailor them to support particular hardware configuration and particular applications.” --from Choices homepage
2
What is Choices?
• Choices is an object-oriented operating system• Written in C++• Machine and processor dependent portions are in
assembler• It has an object-oriented interface• Operating system entities are objects
3
Where could Choices run?
• Bare networked SPARC stations• Shared memory Encore Multimaxes• Personal computers using the Intel 386 and
MC68030 processors• Tapestry hypercubes
4
Frameworks
• An architectural design of a system• Components and interactions• From general to specific• Advantages
– Code reuse, Portability, Rapid prototyping
5
Building Frameworks
• Abstract classes for generalized interfaces• Inclusion polymorphism• Constraints between classes• Dynamic code loading• Delayed binding and virtual functions• Conversions
6
Choices Framework
• A hierarchy of framework representing the OS• Abstract classes as configurable components• Single inheritance • Subtyping to express inclusion polymorphism• A particular OS is a possible instantiation of the
framework
7
Choices Framework
• MemoryObject • Process• Domain (Kernel domain, User domain)• Relationship between these three• NameServer
8
Choices Subsystems
• Virtual memory• Persistent storage• Process management• Message passing• Device management
9
Virtual Memory
• Features– Multiple 32 bit virtual memory address spaces
– One and two level paging
– Shared memory
• Components– MemoryObject
– Domain
– MemoryObjectCache
– Address Translation
10
Process Management
• Features– Multi-threading support
– Grouping of processes (Gang)
• Components– Process (System, Application, Interrupt)
– ProcessContext (machine dependent state)
– Processsor
– Gang
– ProcessContainer (implements scheduling)
11
Persistent Storage
• Features– Support both standard and customized storage systems
• Components– PersistentStore (random access)
– PersistentObject
– PersistentStoreContainer
– PersistentStoreDictionary
– PersistentArray, RecordFile, AutoloadPersistentObject
12
Message Passing System
• Features– Different reliability models
– Support multiprocessor and distributed system
• Components– MessageContainer (Mach ports, communication entity)
– ContainerRepresentative
– MessageSystemInterface
– Transport
– DataTransfer (buffering strategy)
13
Device Management
• Features– Processes communicate with devices
– Similarities and differences with UNIX
• Components– Device (server)
– DevicesControllers
– DevicesManager
14
Further Work
• uChoices– Micro kernel OS
• Adaptive file systems that provide different caching and network protocol support
• A fast process migration facility
15
uChoices (1)
• “To support modern OS services such as user level and gang scheduling, distributed customizable virtual memory, and multimedia in a completely modular architecture, while maintaining high performance.”
• Redesign of Choices as a micro-kernel
16
uChoices (2)
• Nano-kernel encapsulates hardware dependencies• Micro-kernel provides the interface to the
remainder of the OS– Encapsulates the micro-kernel data structures
– Single standard interface to nano-kernel
• Intermediate levels of OS – Client, server, file system components, etc.
• Application interfaces
17
Comparisons (1)
• Choices vs. OS-Kit– general purposes
– OS-Kit also support finer granularity
– Different attitudes toward legacy code
– OS-Kit supports COM interface
– Choices supports ORB
– OS-Kit tries to minimize the interaction and dependencies between components
– OS-Kit has a minimal API
18
Comparisons (2)
• Choices vs. MMLite– General purpose (MMLite is also used in embedded
systems)
– The distributed file system extension of Choices is close to the mechanism used in MMLite (proxy)
– MMLite focuses on support for transparently replacing components in use
– MMLite supports COM
19
Comparisons (3)
• Choices vs. PURE– PURE is for deeply embedded systems
– PURE extension has an OSEK API
– PURE uses the concept of components at the design level, and avoids artificical boundaries in implementation concerning run time and code size
– PURE is fine-grained
20
Comparisons (4)
• Choices vs. Pebble– Pebble is for complex embedded system
– Concerns about safe extensibility and low interrupt latency
– Pebbles uses a micro-kernel stucture
– Pebble uses fine-grained components
21
Comparisons (5)
• Choices vs. eCos– eCos is designed for embedded system
– eCos has its own published API
– eCos is fine-grained
– Statically reconfigurable
– eCos has very good tool support (analysis and configuration tool)
22
Conclusion
• Relatively old research work• Limited work on constraints• No clear description of how to build a system
23
Choices
• Reference:– Choices, Frameworks and Refinement
– Getting Started with Choices
– An Object-Oriented Nano-Kernel for Operating System Hardware Support