Create multiple processes.

Chen Tian - SISA chen.tian at ...58...
Thu Jun 16 02:57:09 CEST 2011


Thanks for the reply. 

I printed "env()", "env->ram_session()" and "env()->rm_session()" of core, init, and another three apps: test-timer, myapp1 and myapp2.
I don't understand why I get the same set of values for myapp1 and myapp2? The sets of value for others are different.

Best,
Chen 

-----Original Message-----
From: Norman Feske [mailto:norman.feske at ...1...] 
Sent: Wednesday, June 15, 2011 1:18 AM
To: genode-main at lists.sourceforge.net
Subject: Re: Create multiple processes.

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

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Genode-main mailing list
Genode-main at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main




More information about the users mailing list