next up previous
Next: Conclusion Up: Future work Previous: Operating system ports

UML as a development platform

A recent possibility, and possibly the most interesting, is that UML might make a good process-level development platform. The Linux kernel includes a good threads implementation, general interrupt-driven I/O, memory management, and a variety of other things. UML, as a Linux kernel, makes all of those available in userspace.

Obvious applications for this sort of platform would be ones that require a virtual-machine-like environment. Examples include interpreted language environments such as Java and Perl. These would not require the full-blown virtual machine that's isolated from the host that UML currently provides. So, this could provide an impetus to figure out how to configure out pieces of the kernel which are now considered essential, like virtual memory support or the scheduler. Making the kernel more configurable in this way would make UML a better candidate for this sort of application.

The facilities in the kernel, particularly threads and high-performance I/O, are also required by high-performance servers. So it's possible that UML would make a good platform for userspace servers.

The fact that the core kernel is a relatively small piece of code that's been worked on by a large number of talented programmers adds to the attraction. Any application that's based on UML would get for free the speed, efficiency, and robustness of the Linux kernel.

There is also the possibility of using existing kernel subsystems to manage completely different sorts of resources. For example, the memory management system could be used to manage language objects instead of raw memory and the scheduler could be used to schedule task-like things which are not processes. Since the true nature of the resources that the generic kernel is managing is not totally evident to it, but it evident to the architecture layer beneath it, a fair amount of fakery can be pulled off by the architecture layer. It would be coded to know what the resources really are, while the generic kernel remains unchanged and manages them just like it currently manages raw memory and machine processes.


next up previous
Next: Conclusion Up: Future work Previous: Operating system ports
Jeff Dike 2001-05-04