We built upon the Exokernel idea by utilizing virtualization to implement resource multiplexing, and specialized application kernels with operating system services linked in as libraries (libOS). This allowed us to take advantage of hardware partitioning features present in the PowerPC as well as more recent Intel and AMD processors. The use of preexisting virtualization solutions such as IBM's Virtualization Engine and Xen allowed us to run mainstream operating systems alongside our libOS partitions giving end-users familiar development and use environments. Additionally, hardware virtualization support on certain chip architectures lets us configure logical partitioned dramatically differently -- for example, we are able to run libOS partitions in real-mode with translation disabled avoiding TLB miss penalties. Finally hardware virtualization lets us dedicate processor cores to specific applications providing increased levels of determinism by removing OS-related and I/O interference to computation.

Figure 1: Design Overview
Instead of requiring all device support be present in each libOS partition we leverage preexisting drivers running on the mainstream operating system partition or drivers running in specialized virtual I/O partitions. 9p, a simple, flexible communication protocol is used between partitions to provide access to disk, network, and other hardware resources. System services can be remoted in a similar fashion allowing peer partitions to provide file systems, networking stacks, and application services. In this manner a libOS application may chose to use a local custom device driver or service, or remote that service to another partition. Access to these hardware resources or system services can be provided by multiple peer partitions allowing for the possibility of redundancy and recovery during partition failures. The protocol used to communicate between partitions should be generic enough to be usable across the network allowing the same infrastructure to be deployed on scale out clusters of systems as well as large-scale SMP systems.
