ukernel complexity metrics

David Leimbach leimy2k at mac.com
Thu Feb 24 16:21:38 CET 2005


On Feb 24, 2005, at 6:52 AM, Espen Skoglund wrote:

> [Jonathan S Shapiro]
>> On Thu, 2005-02-24 at 09:15 +0100, Ronald Aigner wrote:
>>> I disagree with the opinion that the complexity of a microkernel
>>> should be measured by the number of its system-calls. I find it
>>> rather complex to multiplex dozen flavours of IPC via one
>>> systemcall.
>
>> I am not sure quite what motivated this comment. We have argued in
>> the EROS design that having exactly one system call ("invoke
>> capability", in our case) is good, but not because it reduces
>> microkernel complexity -- in fact, it complicates it.
>
> Would also like to add that the reason for multiplexing all these
> operations in the IPC mechanism is not really to reduce complexity.
> We multiplex all these operations because the operations are similar
> enough in nature to share the same codepath and thereby reduce the
> cache/memory footprint of the kernel.
>
> I don't think anyone has ever stated that the number of system calls
> is a measure for the *complexity* of the kernel.

Just to chime in quickly here... At the most primitive levels of the 
kernel
everything can be multiplexed to one system call and I don't think this 
would
really "bother" me in trying to understand how to use the kernel 
because it
always seems that someone comes along and wraps that one system call 
with
normally very lightweight abstractions to help demystify the heavy 
amount
of multiplexing.

In this way that perceived complexity can be reduced with little 
overhead.

Can't this sort of thing be "generated" either by macro or IDL to add an
artificial abstraction layer to make it more clear to the higher level 
L4
coder what exact functionality is being called upon?

I'm not sure I see how heavy multiplexing has to be a problem for 
anyone.
If it's possible to do it all in one syscall, I'd go for it :).  After
all increasing the complexity of the upper layers is traditionally what
modern microkernels do but once you have a really decent library of 
tools
I bet a lot of the perceived complexity falls away. [maybe not so much 
as
to make it as "easy" to code for as a monolithic kernel but good enough 
:)]

Is this consistent with the current philosophy of microkernels?

Dave
>
> 	eSk
>
>





More information about the l4-hackers mailing list