Hi Neal,

On 05.11.2013 14:48, Neal H. Walfield wrote:
>> In this design, the "kernel" is not a
>> self-sustaining piece of software but a mere library that provides
>> back-end functionality for roottask. I.e., it performs no allocations
>> and becomes active only when called by the roottask code (via one of the
>> roottask-local system calls) or by IPC operations. All the dynamic (and
>> complicated) stuff like memory management is handled by roottask code
>> using Genode's user-level abstractions.
> Is the library running in kernel space and the "kernel" running in
> user space?  Do they directly share data structures?
>
The single "kernel"-thread executes solely in privileged CPU mode.
Initially it disables the MMU and runs in physical address space.
Before leaving privileged CPU mode the first time, it enables the
MMU, using the address space of the root-task (core). Thus
both, threads of the non-privileged root-task and the single "kernel"
thread use the same virtual address space. For the purpose of
simplification "kernel" thread and root-task threads also share data
structures (e.g. raw page-tables or the interrupt-lookup table). This
must be done carefully because "kernel" thread can always interrupt
root-task threads and access shared objects without synchronization.

Martin

------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to