*BSD News Article 79699


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