Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!nntp.coast.net!news-peer.gsl.net!news.gsl.net!swrinde!cs.utexas.edu!www.nntp.primenet.com!nntp.primenet.com!news1.best.com!nntp1.best.com!flash.noc.best.net!not-for-mail
From: dillon@best.com (Matthew Dillon)
Newsgroups: comp.unix.bsd.freebsd.misc,comp.os.linux.misc,comp.unix.solaris
Subject: Re: Benchmarking different Unix Operating Systems
Date: 1 Oct 1996 13:47:29 -0700
Organization: Best Internet Communications, Inc. (info@best.com)
Lines: 50
Distribution: inet
Message-ID: <52s011$d9o@flash.noc.best.net>
References: <aak2.842008017@isis.msstate.edu> <52csjt$lui@panix.com> <52d9mq$13a@cucumber.demon.co.uk> <324A665F.62319AC4@FreeBSD.org>
NNTP-Posting-Host: flash.noc.best.net
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.freebsd.misc:28393 comp.os.linux.misc:132936 comp.unix.solaris:84409
:In article <324A665F.62319AC4@FreeBSD.org>,
:Jordan K. Hubbard <jkh@FreeBSD.org> wrote:
:>Andrew Gabriel wrote:
:>> Yes. I spent a number of years working with a proprietry real-time
:>> operating system where all device drivers ran in user space, with all
:>> the normal user space protection, and the ability to use debuggers,
:>> reload if crash, etc, without the whole OS keeling over.
:>
:>You wouldn't be a QNX hacker by any chance, would you? :-)
:>
:>I'm not sure I'd find much merit in putting all the drivers up into user
:>space, though it might be interesting to come up with some sort of
:>"driver test harness" which allowed you to prototype a new driver in
:>user mode then preserve much of the code unchanged when turning it into
:>a normal kernel resident driver.
:>--
:>- Jordan Hubbard
:> President, FreeBSD Project
An unix-like operating system I did for a telemetry system a few years ago
used message-passing for the basic I/O-Device interface. Some of the
device drivers were built into the kernel, some were built on top of
kernel threads, and some ran in protected user space as their own
processes. Potentially, device drivers could even reside off-machine.
ALL used the *same* I/O interface calls.
The best solution is to create an API that uses an interface that is
compatible with all three. You then have the option of running your
device driver any way you like. A device driver under development could
run in user space. A proven driver or one requiring performance
could run in kernel space. And, yes, you can even make it work for
interrupts. Unfortunately, UNIX's signalling mechanism is a bit too
primitive to really make it shine (the OS for the telemetry project
had prioritized user-process-level vectored software interrupts on a
per descriptor basis... extremely powerful stuff!), so I would recommend
a revamping of FreeBSD's signalling stuff first. But it is doable.
The ultimate goal of doing so would be to construct the 'uncrashable
kernel'. This is something no OS has ever really been able to achieve.
It would also make device driver / filesystem development a whole
lot quicker. I've been toying with the idea for years. It's kinda a
cross between a mach styled microkernel and the monolithic UNIX styled
kernel.
-Matt
--
Matthew Dillon Engineering, BEST Internet Communications, Inc.
<dillon@best.net>
[always include a portion of the original email in any response!]