Processes and Communication (2)

Dennis Marer dmarer@td2cad.intel.com
Thu, 11 Mar 93 09:13:39 PDT


> > =>What is the advantage of having no kernel as opposed to a micro-kernel?
> > ...I think the basic idea it that if

> > you can build a system that is quick and efficient without a kernel,
> > then you'll end up with a more flexible system if you get rid of it.

> I've read the paper.
> The main argument seems to be that there is benefit in having a system wide
> address space as opposed to a separate address space for each program.

That does keep things simple enough, but what about security?  If each program
shares the same address space and one of them goes awry (due to a pointer error
or something) other programs could get trashed.  One of the nice things about
separating each task is that they can't interfere with each other and no one
task can bring down the whole system.  If it begins to overstep its bounds,
the kernel can kick it out.

I'm not convinced on the "no-kernel" idea.  It seems there needs to be some
entity responsible for the lowest level management of the system resources.
(These resources would be: memory, I/O, and tasks <- nothing else!)  This
keeps the kernel teensy (read: micro) and everything would be an extension of
the kernel.  Without some central control of these basic resources the machine
is very vulnerable.  One of my biggest *likes* about Windows 3.1 is that a
buggy program no longer brings down the whole system (like Windows 3.0), and
when I'm writing a chunk of software which uses doubly linked lists of records
containing splay trees of objects, I'm bound to make a mistake somewhere... :-)

IMHO, I think the kernel should define the interface to the system: memory is
used in a certain way, device drivers are set up in a certain way, tasks act
a certain way.  What lies on top of this is the "operating system", and from
there the possibilities are endless.

Question: someone (michael?) mentioned that the kernel should contain *fast*
IPC - anybody have any insight to why it should be in the kernel vs. on top of
the kernel?  Just curious - I can't see any speed advantage, but maybe I just
don't see...it might fall under the "task" category of the kernel, but I'm not
sure yet.  Any input?

I guess I'm a fan of micro-kernels.  Could you tell?  :-)

Dennis