Question about memory management in L4 Fiasco O.C + L4re

Adam Lackorzynski adam at os.inf.tu-dresden.de
Wed Jul 22 23:44:23 CEST 2015


On Wed Jul 22, 2015 at 15:19:39 +0200, Mahdi Aichouch wrote:
> According to Fiasco O.C/L4re documentation Sigma0 is the root pager,
> that is, it is responsible of resolving page fault of user-level tasks,
> right?

No. Every thread has a pager which is another thread in the system. So
whenever a thread causes a page fault, Fiasco will sent a message (an
IPC) to the pager thread of that thread. The pager is responsible to
handle the page fault to let the thread continue execution. A likely way
to resolve a page fault is to map memory at the page fault location.
That one who's mapping the memory must, of course, have this memory. And
the pager itself can also cause page faults which need to be handled. In
the end, sigma0 is the first pager in the system as it has all memory.
It does not mean that sigma0 handles every page fault in the system,
quite the contrary.
 
> Knowing that L4Linux is created as a user-level task, thus any memory page
> fault occurring
> in L4Linux or its user processes logically has to be handled through Sigma0.
> 
> However, as you previously mentioned in one of your answers, a handling of
> a page fault occurring in L4Linux does not involve any L4Re object
> including Sigma0.

Yes.

> My question is: what configuration and / or operations have been made
> in order to force that a memory page fault in L4Linux has to be handled
> only by Fiasco and L4Linux and not going through L4Re objects?
> And where these operations are written in the source code.

It's nothing about forcing anything, it's just how things work. Any task
can map out memory it has itself, and a thread in a task can receive
page-faults, thus they can resolve page-faults by mapping memory to this
other task. This functionality provided by the kernel, so no other L4Re
component required. I unsure what you're exactly looking for, but the
page-fault handling is implemented in arch/l4/kernel/dispatch.c in
L4Linux.




Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/



More information about the l4-hackers mailing list