*BSD News Article 47724


Return to BSD News archive

Newsgroups: comp.unix.bsd.freebsd.misc
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!news.sprintlink.net!howland.reston.ans.net!torn!nott!cunews!revcan!quantum!danh
From: danh@qnx.com (Dan Hildebrand)
Subject: Re: QNX as micro kernel
Message-ID: <ygsb243t@qnx.com>
Date: Tue, 01 Aug 95 01:10:39 GMT
Organization: QNX Software Systems
References: <3uktse$d9c@hal.nt.tuwien.ac.at> <id.FFYL1.RK3@nmti.com> <3v904k$dvg$1@haywire.dialix.com> <DCFw78.HHw@medar.com>
Lines: 47

In article <DCFw78.HHw@medar.com>, Timothy W. Barney <tbarney@medar.com> wrote:
>> 
>>peter@nmti.com (Peter da Silva) writes:
>>>QNX?
>>>OK, it's an icky commercial product instead of a lovely academic research
>>>platform, but it's the closest to the ideal microkernel I've ever heard of.
>
>I have recently started using QNX at work. It truly is a micro Kernel,
>with over 100,000 installed systems.

The installed bass is significantly larger than this. :-)

>Under QNX, you configre a kernel with what ever servers you want -
>the scheduler and pager are required, but file services, serial lines,
>what ever, can be configured into the kernel or started as daemons from
>the bootup script. Or replaced by your own server.

Actually, the process of building a kernel is nothing more than "lumping" a 
number of processes together so that once the OS is loaded into memory all 
those processes can begin execution without having to be loaded from mass 
storage first.  If you know your system will have access to a network or 
local hard disk, you only need to lump enough processes into the boot image 
so that after boot loading enough OS is present to load the extra processes 
from disk or network to complete your OS.  Whether a process is started 
from the boot image, or loaded and executed, it runs identically (in a 
separate, MMU-protected address space).  A bootable OS tends to consist of 
a Process Manager (which implicitly includes the microkernel), a shared 
library and then either Net and a Network driver or Fsys and a disk driver.  
Everything else can be started by the bootup shell script.

If the OS you are configuring is intended to execute or boot from ROM, then 
it needn't have any network or filesystem servers.

>Anyways, it's a real micro kernel. One caveat, it's very insecure as an OS.

I would argue that it is comparable to most UNIX systems in that it 
implements the UNIX/POSIX standard group and member numbers and access 
control, shadow password file, etc.  Where QNX differs is that it treats 
the network as a single logical machine with any process transparently able 
to use any resource on any node as if it was local.  As a result, 
super-user for the "machine" implies super-user for the network.  Various 
"firewalls" can be erected to partition the network if necessary.
-- 
Dan Hildebrand (danh@qnx.com)               QNX Software Systems, Ltd.
http://www.qnx.com/~danh                    175 Terence Matthews
phone: (613) 591-0931 (voice)               Kanata, Ontario, Canada
       (613) 591-3579 (fax)                 K2M 1W8