Vasily Sartakov
Imperial College London
CubicleOS: Need More Partitioned Systems, Not Microkernels
Messaging-based microkernels offer lean but powerful interfaces. Low-footprint formally-proven kernels allow building fast and secure solutions. However, they are rarely compatible with legacy software, require considerable engineering effort to port, and impose the burden of porting legacy software. This results in microkernel-based systems being expensive and only suitable for special-purpose solutions.
So why is it complicated to port and support legacy software in microkernel environments? The answer is simple: function-call interfaces used in monolithic kernels are incompatible with the messaging-based interfaces of microkernels. No doubt, some subsystems of monolithic systems can be accurately extracted, properly wrapped, and turned into user-level components. However, this requires considerable effort and works only at the coarse-grained subsystems level and only with tiny interfaces where it is possible to replace "jump-and-returns" by messages.
If messages are the problem, can we build a partitioned system without them? We ask this question in the CubicleOS project. CubicleOS is a prototype of a LibOS that allows one to partition a monolithic system without the use of message-based IPC. In this talk, I will present CubicleOS and describe the partitioning processes, the isolation primitives we applied, and requirements placed on monolithic software. Finally, I will compare the performance overhead caused by these techniques on CubicleOS as compared to that of classical microkernels.