Question about system architecture, noux and interprocess communication

Norman Feske norman.feske at ...1...
Fri Nov 1 18:27:43 CET 2013


thanks for the compliment and your interest in Genode!

> My question has to do with Noux and how communication is done between
> processes, and the eventual porting of D-Bus.  I'm unsure about just how
> isolated each noux process is, from other noux processes, and how
> something like d-bus could share information between running processes.

Noux is a runtime environment that can host one or multiple Unix
processes. From such a process' point of view, Noux behaves like a Unix
kernel, implementing the typical Unix system calls (open, read, stat,
fork, execve, select etc.), a virtual file system (VFS), pipes, and a
BSD socket interface. From Genode's point of view, however, a Noux
instance is just a normal Genode subsystem. That means, there can be any
number of Noux instances running on the same Genode system. By default,
each Noux instance is isolated from the rest of the system. However, if
the parent component of two Noux instances agrees, those instances can
be connected to a shared file system (such as a 'ram_fs' component).
This way, they can share information according to the policy of their
common parent component.

Noux is primarily meant to execute command-line-based GNU software on
Genode. In the designated usage scenario, there exist many Noux
instances whereby each instance serves a specific purpose. For example,
one instance has the sole purpose of editing source code (it has write
access to the source-code directory and comes with a text editor).
Another instance has the purpose of executing the tool chain (it has
read-only access to the source code, write access to the build
directory, and comes with GCC). A third instance is meant to test the
binaries (it has no access to the source code, and read-only access to
the build system). None of those instances has network access. An
instance can be started in fractions of a second on demand, similar to
how we are used to starting a shell on a Unix system. But unlike a shell
on Unix, which has a global view on the Unix system, a Noux instance can
access only those parts of the system that are relevant for its specific

> In addition does each process always execute in it's own noux?  and if
> so how could something like a ps command get information about all
> running processes?  I'm just trying to get a handle of things before
> jumping in and attempting to port additional components.

On Genode, no ordinary process to obtain information about all running
processes. Of course, one Noux instance knows the Unix processes that
are running within this particular instance. But for a process running
on one instance, there is no way to obtain information about processes
running in other Noux instances or about other parts of the Genode system.

I'm curious, what is your intent behind bringing D-Bus to Genode and
Noux in particular? Could you share the motivation behind this idea?


Dr.-Ing. Norman Feske
Genode Labs ·

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