Am 27.03.2015 um 16:17 schrieb Antti Kantee:
> Let me try to offer some insight.  I've been working on something similar in 
> mainline NetBSD for almost 8 years now, so in addition to ideas popping into 
> my head I've also tested
> them out in the real world.  I do think that all operating systems should be 
> structured to support a lib mode, and hopefully integrating Hajime's work 
> into Linux will get on the
> right track.

IMHO it depends on the maintenance burden.
Linux source changes magnitudes faster than NetBSD's.

>> What about putting libos into tools/testing/ and make it much more generic 
>> and framework alike.
>> With more generic I mean that libos could be a stubbing framework for the 
>> kernel.
>> i.e. you specify the subsystem you want to test/stub and the framework helps 
>> you doing so.
>> A lot of the stubs you're placing in arch/lib could be auto-generated as the
>> vast majority of all kernel methods you stub are no-ops which call only 
>> lib_assert(false).
>>
>> Using that approach only very few kernel core components have to be 
>> duplicated and
>> actually implemented by hand.
>> Hence, less maintenance overhead and libos is not broken all the time.
> 
> Stubbing things might be the way to get things initially rolling, but you 
> don't want to aim for that or spend energy on fancy ways to do it. 
> Autogenerating stubs only means that
> the libos will build, not that it won't be broken.  Figuring out how to make 
> the libos as close to zero-maintenance as possible is indeed the trick.
> 
> What I ended up doing is coining the term "anykernel architecture", which 
> simply means that in addition to the monolithic architecture, the kernel can 
> now be used as in exokernel,
> microkernel, multikernel, etc. (which are really just different frontends for 
> the lib mode).  I'd recommend diving head-first into the issue and thinking 
> "how can we adjust the
> kernel architecture to support the libos mode" instead of "how can we tip-toe 
> around the kernel and invent clever ways to stub things".  The anykernel is 
> not really that different
> from a monolithic kernel once you figure out which bits are important, and 
> support will not require a whole lot of "duplicated" code.  There are 
> practically no stubs in the NetBSD
> implementation; somewhere between 0 and 20 depending on what you count as a 
> stub.  There is a few thousand lines of "duplicated" code, the majority of 
> which is a direct result of
> the rump kernel (which is the name of the libos mode) running on top of an 
> external thread scheduler, so that code from the monolithic kernel doesn't 
> apply.

I agree that this would be nice but without actual patches I'm very doubtful.

> Continuous testing is paramount.  Running the kernel as a lib provides an 
> unparalleled method for testing most of the kernel.  It will improve testing 
> capabilities dramatically,
> and on the flipside it will keep the libos working.  Everyone wins.

If it can be done cheap, yes. But our in-kernel tests improved over the years a 
lot.
Now have lockdep, KASan, kmemleak, etc. to find *real-world* issues and the 
need for stubbed testing
decreases.

Thanks,
//richard
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to