Create multiple processes.

Norman Feske norman.feske at ...1...
Wed Jun 15 10:18:12 CEST 2011


Hi Chen,

> the creating process.   Is that true that all  applications launched by
> init currently have the same RM/RAM session? Even so,  each application
> should have its own region map and pager, right? I launched two
> applications, but the kernel debugger shows that only one pager exists
> except core.pager.  Please help me understand this.

each process has a distinct RAM, CPU, and RM session, created by its
parent process. The procedure of process creation is described here:

  http://genode.org/documentation/architecture/process

Speaking of the init process, the child's RM, CPU, and RM sessions are
created when the 'Child' class is constructed ('see
os/include/init/child.h'). In the 'Child' class, you find the
'_resources' member, which is a compound object comprised of a
'Ram_connection', a 'Cpu_connection', and a 'Rm_connection'. These
connection objects represent an open session each. The session
capabilities of these sessions are then passed to the 'Process'
constructor, which performs the procedure as described in the document
above.

On most base platforms including Fiasco.OC, Genode uses one pager thread
(called pager activation) for all user threads. Each time a page fault
occurs (regardless of which thread caused the page fault), the pager
activation thread within core receives the page fault information from
the kernel, looks up a page-fault resolution via the code in
'rm_session_component.cc', and installs a mapping if possible. Please
note that the core.pager thread you have just observed in the kernel
debugger handles page faults for core only. It does not deal with normal
user-level threads.

BTW, using a global pager thread is not an inherent property of Genode.
For example on NOVA, each user thread has a distinct pager thread within
core. As another example, L4Linux running on Fiasco.OC acts as pager for
the Linux user-level programs. OKLinux on OKL4 functions similarly. On
an MP system, it would possibly be sensible to have one pager thread per
CPU.

Best regards
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list