Composite is an Operating System (OS) with a focus on
reliability, predictability, security, and flexibility. System
policies, abstractions, and mechanisms are defined and implemented
as user-level components. Components are hardware isolated from
each other and execute at user-level thus increasing both system
reliability and security. The component graph to the right is a
component-based
web-server. 
A few of the research focuses of Composite include:
- HiRes. CPU, Memory, and I/O resources are
managed hierarchically in Composite. This system
for Hierarchical Resource management
called HiRes enables individual subsystems to customize
fundamental resource management policies efficiently and predictably
while also isolating different subsystems from each other. A
web-server might customize its scheduling and I/O management
policies, while a data-base uses specialized memory management
policies. Fine grained resource control is maintained, while
ensuring isolation between subsystems. As opposed to Exokernels
that place all resource management in processes, and monolithic
kernels that place management in the single kernel, HiRes
enables components to define the appropriate hierarchy for the
system's goals.
- Memory Scheduling. We are investigating manipulating a
form of memory in Composite called transient memory.
This dynamically allocated memory simply has a bounded interval
between allocation and deallocation. Transient memory enables
memory to be dynamically added and removed from specific
applications and scheduled throughout the system, while meeting
application end-to-end constraints (i.e. deadlines). By
intelligently shuffling memory around the system, we show that --
without swapping -- you can significantly increase the amount of
usable system memory even in embedded systems.
- User-level Scheduling. The kernel includes no
policies, instead implementing them in user-level components. Thus
system policies including those for low-level resource management
are redefinable, and isolated. The Composite kernel does not
have a scheduler. Scheduling policies and synchronization protocols
are defined by user-level schedulers. They can be replaced, and
redefined for specific systems and applications -- a useful
capability in real-time and embedded systems. Additionally, faults
in other parts of the system, or in the scheduler itself will not
propogate to the rest of the system. To enable efficient and
predictable component-based scheduling, special care is taken to
ensure accurate accountability, and low overhead for interrupt
scheduling.
- Mutable Protection Domains. To maintain high isolation,
invocations between components require IPC, which causes some
overhead. The web-server makes between 50-70 IPCs to serve a
webpage. Composite supports
Mutable Protection Domains (MPD), which enables the system to
dynamically construct and remove protection domain boundaries
between components in response to where communication (IPC)
overheads exist. Using MPD with the webserver, we increase
performance by 40% while removing only 15% of the protection
boundaries. MPD enables the system to optimally trade-off fault
isolation for performance.
- Secure Bulletin Board System. Composite was used
in the verifiable
election based
on Scantegrity for Takoma
Park, MD. It provided a secure webpage for verifying ballots after
the election.
- Current research in progress includes how to design a system to
fundamentally support the unique characteristics of massively
multi-core systems, and system designs for predictable fault
recovery from low-level OS faults.
See our github
page.
Please click on the headings below to expand them.
Reference Material
Please see the publications tab for a
limited set of publications on
Composite. Documentation on how to setup Composite,
execute programs, and program components can be found in the
doc/ directory of the source code.
Please also see the Advanced Operating
Systems course that uses Composite in semester-long
projects.
View and subscribe to the CompositeOS mailing list
Source code and documentation on github.
The Composite Style Guide is
found here.