How does NoKernel work?

Francois-Rene Rideau rideau@ens.fr
Tue, 20 Aug 1996 23:39:16 +0200 (MET DST)


[Note: I'm sending this reply to a personal mail over the mailing list;
please tell me if I did wrong]

Peter Bakke (pb@europa.com) wrote:
> 	I suppose the subject says it all --
> how does the NoKernel system work?
Just like any system:
various objects interact, each doing its part of the work.
The difference?
There is not a one centralizing entry point like the UNIX syscall()
or DOS interrupts, whose overhead, limitations, bugs and misdesign
you must cope with or work around.
Instead, objects can directly interact one with the other,
and you can upgrade/extend/modify any unlocked part of the system anytime.
Surely, there are objects that control other objects,
for security reasons,
and may be that at a given moment on a given host running TUNES,
a given object is such that it controls "most" other objects
as far as a criterion of number of entities, space used, time used,
or combination thereof is concerned.
Still, none of these possible objects constitutes a "kernel":
none is a permanent system-wide totalitarianly centralizing invariant entity,
through which all non-local information is bound to pass;
any may be replaced anytime by another, better,
more suited and/or more advertised.


> I'm currently a student .. not even in college yet .. so just about all the
> information on OSs I can get is on kernel based systems.
>
Because the OS world is stubbornly dominated by the kernel paradigm,
everyone is as much prepared for the NoKernel idea as anyone else:
not at all by education,
completely by nature, because it is a most natural idea.


> 	I can take a few wild guesses as to how the system might work, but
> thats all they are -- wild guesses.
If my explanations are bad, please tell me how wrong they are,
please suggest how I can make it better,
so I can spread these ideas better and faster.
And of course, if there's any flaw in my ideas, please warn me, too!

> I assume that each thread has its own task switching code ..
Yes.

> but how does a task get preempted by another?
Because the task-switching code does not float over the void.
Rather, objects are built from other objects.
Hence, when you built an object,
you chose an execution meta-object that controls task switching.
Most probably, you let the system implicitly choose it for you;
and because a development system is open,
unless you explicitly gave the execution meta-object,
the one given to you by default allows you to later migrate
your object to another meta-object, that will better suit
the needs that you've realized you had in the meantime.

As an example, typical commands run from the user-interface
will be interpreted by a shell that cooperatively
switches to other tasks inside the same pool
optional passes of partial evaluation might compile (part of)
the commands into cooperatively taskswitching code.
Unsecure tasks, such as unix/dos programs running in an emulation box,
or a low-level reflected implementation of the system being under development,
will be isolated from the rest of the system by the traditional protection
barrier, and be fully preemptively taskswitched.


> Or is it a preempting system?  If it was cooperative,
> and when ever an application
> was in a wait state it switched itself over to the next task in line ..
> that would work.  Or not.  Heh.
>
Tunes needs not be preemptive or cooperative. It can be either,
or any combination of the two, or anything you can imagine and implement.
Because Tunes is reflective,
meta-objects, that control the behavior of objects,
are fully accessible like any other object,
and you can choose whichever you want (among implemented ones),
to control the taskswitching of your own Tunes system;
or you can use default taskswitcher provided with your system
by whichever distributor you chose.
I can imagine that the Yggdrasil Tunes distribution won't be quite the
same as RedHat Tunes, etc.

> 	Anyhow, if you could explain how it works, it'd take quite a load off
> my brain. I've been attempting to figure this all out for about a year now.
>
You mean there's about a year you've heard about Tunes,
and you are only asking now? Wow.

> 	Thanks!
You're welcome.

> -Peter
== Fare' -- rideau@ens.fr -- Franc,ois-Rene' Rideau -- DDa(.ng-Vu~ Ba^n ==
Join the TUNES project for a computing system based on computing freedom !
                TUNES is a Useful, Not Expedient System
URL: "http://www.eleves.ens.fr:8080/home/rideau/Tunes/"