Transcript choices

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
1
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
2
Where could Choices run?
• Bare networked SPARC stations
• Shared memory Encore Multimaxes
• Personal computers using the Intel 386 and
MC68030 processors
• Tapestry hypercubes
3
Frameworks
•
•
•
•
An architectural design of a system
Components and interactions
From general to specific
Advantages
– Code reuse, Portability, Rapid prototyping
4
Building Frameworks
•
•
•
•
•
•
Abstract classes for generalized interfaces
Inclusion polymorphism
Constraints between classes
Dynamic code loading
Delayed binding and virtual functions
Conversions
5
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
6
Choices Framework
•
•
•
•
•
MemoryObject
Process
Domain (Kernel domain, User domain)
Relationship between these three
NameServer
7
Choices Subsystems
•
•
•
•
•
Virtual memory
Persistent storage
Process management
Message passing
Device management
8
Virtual Memory
• Features
– Multiple 32 bit virtual memory address spaces
– One and two level paging
– Shared memory
• Components
–
–
–
–
MemoryObject
Domain
MemoryObjectCache
Address Translation
9
Process Management
• Features
– Multi-threading support
– Grouping of processes (Gang)
• Components
–
–
–
–
–
Process (System, Application, Interrupt)
ProcessContext (machine dependent state)
Processsor
Gang
ProcessContainer (implements scheduling)
10
Persistent Storage
• Features
– Support both standard and customized storage systems
• Components
–
–
–
–
–
PersistentStore (random access)
PersistentObject
PersistentStoreContainer
PersistentStoreDictionary
PersistentArray, RecordFile, AutoloadPersistentObject
11
Message Passing System
• Features
– Different reliability models
– Support multiprocessor and distributed system
• Components
–
–
–
–
–
MessageContainer (Mach ports, communication entity)
ContainerRepresentative
MessageSystemInterface
Transport
DataTransfer (buffering strategy)
12
Device Management
• Features
– Processes communicate with devices
– Similarities and differences with UNIX
• Components
– Device (server)
– DevicesControllers
– DevicesManager
13
Further Work
• uChoices
– Micro kernel OS
• Adaptive file systems that provide different
caching and network protocol support
• A fast process migration facility
14
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
15
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
16
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
17
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
18
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
19
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
20
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)
21
Conclusion
• Relatively old research work
• Limited work on constraints
• No clear description of how to build a system
22
Choices
• Reference:
– Choices, Frameworks and Refinement
– Getting Started with Choices
– An Object-Oriented Nano-Kernel for Operating System
Hardware Support
23