NetBSD vs. Microkernels - From Kernel to Userspace and Abroad
A few weeks ago
I made a comment about NetBSD not being a "microkernel" despite
it's move to kernel modules. Antti Kantee wrote back to me (Hi Antti!)
reminding me of his work on RUMP, PUFFS and the like, which I think
does definitely deserve mentioning in that context:
With RUMP, PUFFS and the like, Antti is set on a mission to define
interfaces between kernel components, and move those kernel
components from inside the kernel to the userland. As a result,
the (once) kernel-code is now running as
processes that have all the benefits like memory protection
and not taking down the whole system in case of an error.
Examples that Antti has been bashing on started with
moving file systems to the userland, which resulted in PUFFS and
ReFUSE, an implementation of the Linux inferface of
File systems in USErland (FUSE). Not stopping at file systems
(which are traditionally used for accessing data on storage media,
like e.g. for ntfs-3g), Antti went further and moved into
getting network services like SSHFS going - in userland,
based on FUSE.
Not stopping there, more recent works include:
Remember when NetBSD got (re)FUSE? All of a sudden we got a
bazillion of filesystems back then. So why not turn this development around, and
make RUMP available as an interface for all sort of drivers
to other operating systems. That way, they can get our
file systems, usb stack and drivers, etc., and run them
in userspace as well. Developing a driver on one operating
system, and using it on many - a wet dream would come true!
Sounds impossible? Ye fear not, it's been done!
Arnaud 'stacktic' Ysmal already has ported RUMP to FreeBSD and Linux,
the work is available via
and there is also
Arnaud's page on
Rump on non-NetBSD Operating Systems for more information.
Whew... lots of research and development going on in this area,
and - getting back to the initial topic - we may well see an
operating system in the future that moves from the monolithic
to a microkernel approach, and it may or may not be called NetBSD.
Fact is, that a lot of research is going on in that area, on NetBSD,
here and now. Hats off, Antti!
[Tags: fuse, microkernel, nfs, ntfs-3f, puffs, refuse, rump, sshfs, tcp/ip, ukfs, usb]