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!]