Runtime invariance (was: Re: What is a kernel?)

Jason Marshall jmarsh@serv.net
Tue, 17 Aug 1999 07:59:14 -0700


"Thomas M. Farrelly" wrote:

> One important point in TUNES is fine grain modularity. I don't see how a
> monolithic kernel could be fine grained. Wouldn't that be no kernel at
> all, or even, dependent on our definition of kernel, a micro kernel with
> some framework added.

It can't, but it is my belief that a kernel isn't necessary.  I have been
formulating
techniques (someone may well have beaten me to this punch, I really need to do
some in-depth searching on this) for turning loosely-coupled, dynamically loaded
code
into a, well, a temporary monolith, through the idea of runtime invariance.

Runtime invariance, in a nutshell (and by my definition), is a special case of
low-volatility
variables within a system of objects.  Many robust, modular systems have sets of
features
the user (be it human, or another object) never use, either in a global frame, or
within a
certain class of usage, and yet they pay a premium to have those features
available.  A fully introspective system should, over time, be able to determine,
for instance, that the computer
has only one hard drive, so it can eleminate a number of enumerations and thread
safety constructs and just assume one drive.  It should be able to determine that
the user is using
iso-latin1 ubiquitously, and short-circuit Unicode support within the system,

For the 'highly unlikely' contingencies, one can set write-barriers in appropriate
places (this may require some avoidance of mutator inlining)

Jason Marshall