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