On Mon, Jun 19, 2000 at 02:29:24PM -0500, Neal H Walfield wrote:

[snip]

> They question then is why does not everyone use
> microkernels?  Well, they are very slow because a lot of the time is spent in
> context switching (since all drivers are now in userspace and are not simple
> procedure calls).

The important things a microkernel does, is MMU handling (memory
management) and message passing (IIRC). As communication between
seperate user-space processes is done by message-passing, it's one of
the places where context-switches take place.

Now, can't this be done by setting up a direct communication channel
between two userspace processes? With a semaphore you can check on
incoming messages, etc. This way you only need to do a context-switch if
you ask the kernel to set up a direct message-channel.

Also, for asynchonous message passing, a complete context switch is not
needed -- you deliver the message by putting it in the queue of the
receiving process and go back to the original program. In this case
there is no loading of the receiving process state.

I don't know if GnuMach/HURD implements this, but if this is not the
case, why not or what are the problems with it? 

Erik.

Reply via email to