next up previous
Next: Shared subsystems Up: Future work Previous: Block driver improvements

Operating system ports

In principal, UML could be ported to operating systems other than Linux. In practice, whether this is possible depends on whether the target OS provides some of the specialized capabilities, such as Linux system call interception, that UML requires.

Currently, there are no efforts underway to do any UML ports, although there has been sporadic interest in doing a Windows port. Windows appears to be capable of running UML, although its memory mapping capabilities are not as general as those of Linux. Windows processes can only map files on 64K boundaries, while Linux requires page granularity (4K). This can be worked around by mapping an entire 64K block of memory on each page fault. This requires that the entire 64K block be mapped from a single source and that it be contiguous in that source. This is the case for almost all processes, so this won't impose any major restrictions on what UML/Windows would be able to run.

There has also been some investigation of a FreeBSD port. FreeBSD is interesting because most of the specialized facilities of Linux that UML uses have almost exact analogs in FreeBSD. The exception is system call interception. FreeBSD does have the ability for a process to load a new system call vector, which would allow UML to use a new vector make its processes call back out to userspace whenever they execute a system call.

As far as I know, there has been no investigation into porting UML to the commercial Unixes or the major non-Unix operating systems.


next up previous
Next: Shared subsystems Up: Future work Previous: Block driver improvements
Jeff Dike 2001-09-15