6 Summary and Conclusions

The objective of this work has been to advance our effort of porting the Lites single server to the L3 microkernel. We discussed various steps required to carry out the port, and the problems connected to them.

Emulation of the Mach port abstraction, and Mach IPC emulation
With the development and Mach emulation environment we've created, it is possible to run simple single-threaded Mach servers (and clients) on L3. MIG now is the first RPC stub generator for the L3 microkernel.

The IPC and port emulation library works, but needs debugging and profiling. It proved tricky to emulate all facets of Mach IPC, mainly because of a lack of documentation (most Mach programmers seem to use MIG-generated stubs these days and don't care about the trifles of the underlying IPC system), and no doubt there are bugs in there.

Emulation of Mach's virtual memory and external pager interface
We found emulating Mach's external pager interface to be an unnecessarily complex task. We estimated that it would be easier to completely replace its use with an adaption to employ L3's VM interface directly.

Because of the perceived complexity of the Mach interfaces, we decided not to extend this work beyond a study of the feasability of porting a Mach server to another microkernel.

We implemented an emulation environment to make IPC-based Mach servers run on L3, and studied the performance which can be expected from such a framework. We found that it is possible to achieve RPC performance similar to Mach's.

In retrospective, the decision to use a Mach single server to start a porting effort towards a Unix single-server system on L3 proved questionable.

There are indications that it is well possible and feasable to port a monolithic Unix system to a microkernel [17]. Compared to a port of Lites from Mach to L3, this approach may have some advantages:

Consequently, our group started a project to port the monolithic Linux kernel to the L4 microkernel.

Michael Hohmuth, Sven Rudolph
April 9, 1996