On Thu, Feb 12, 2015 at 6:57 AM, Keean Schupke <[email protected]> wrote:

> Interrupts and exceptions use the kernel stack, not the user stack, so
> kernel entry point from the bootloader is valid.
>
That may be true in kernels you find in a textbook. It is generally not
true in microkernels, and it is *rarely* true in high-robustness kernels.
It is also very problematic in multiprocessor kernels.

I think you are imagining that every process has both a user-mode stack and
a kernel-mode stack. This is not true in high-performance kernels. You may
wish to read Bryan Ford's paper "Interface and Execution Models in the
Fluke Kernel". Bryan was early in his career when he wrote that, so the
paper does not consider the atomic action kernel model (which is curious,
because he was an active participant on the EROS list at the time).

In Coyotos, there is a per-processor stack rather than a per-user stack.
When a process in the kernel blocks, the stack is *erased*. The process
re-enters at the user/supervisory boundary instruction.

Truly, in these kernels, there is no stack that survives to be owned by the
kernel in the sense you imagine.


shap
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to