KER arf1 What should the kernel contain

Francois-Rene Rideau rideau@clipper
Thu, 11 Mar 93 23:03:15 MET


>> To divide all the postings to get a more clear view of what we are talking
>> about I write this message.

>> Ok, how far have we come.
>> 
>> The kernel should contain:
>> - Task manangement
>> - LL Memory management (physical/virtual)
>> - A _small_ messaging system for events that araise in the kernel and that
>>   affects the running tasks.

>> Of course I know that there are others that have different meanings about
>> this, but lets agree on the most minimum kernel that is possible.
>> Ok, add your wishes and I'll sort them out in about a week, and hopefully
>> by then we shall have the next rev. from Dennis handy (or what do you say
>> Dennis. Got a shock from my last mail? Were only kidding).

I see it more like that:
- The "kernel" is only a ASM/calling convention which allows using another
objects' methods.
- Then, we have basic modules; but these modules are modules the same as
high-level modules; only what they do is more basic; they do not have
different means to communicate than the other modules. You often cannot
decide exactly where the kernel ends and where the devices begin, or where
the devices end and where the application begins, or where the application
ends and where the end-user program begins.
- For example, see memory management: we first have physical memory allocated
into blocks; inside these blocks work one or more instances of a virtual
memory manager. It's very low-level, isn't it ? Then, we may have instances
of (32 bit long) word aligned memory blocks manager; several may have
garbage collecting, etc.  Well, that's no more the kernel. But where did it
end ? We only have several layers of memory managers, each directly accessing
its memory, which is allocated from a lower manager.
- For the task manager, we'll first have a low-level object for each hardware
interrupt; a timing manager will plug into the timer interrupt; a threading
manager will each time choose a thread to run then tell the timer when to
next preempt running thread. Each thread class will have thread launcher,
thread interrupter, thread rerunner, signal takers (etc) methods. Among these
"thread" classes may be hardware tasks (if hardware implemented as with the
intel 386) and subtasks, tiny interpreter threads (for interpreters with
breakpoints such that only few registers are necessary to know the thread's
state), etc. Where did the kernel begin, where did it end ?

>> 
>> Arff
>> sig.'s in for 1000 miles service
>>         --Andreas Arff          andreasa@dhhalden.no--
>> 
>>

   ,
Fare