Moving code into applications (was Re: Information on implementing L4)

Paul Boddie <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <11060697.iCfVB6EPyV@jeremy>
On Friday 14. September 2018 19.04.10 Andrew Warkentin wrote:
> On 9/14/18, Paul Boddie <[email protected]> wrote:
> >
> > It is interesting to consider Nemesis, which evolved into Xen, in this
> > regard:
> > 
> > https://en.wikipedia.org/wiki/Nemesis_(operating_system)
> > 
> > One of the goals was to support POSIX applications, and it was apparently
> > a usable system in its day, maybe still is.
> 
> I knew Nemesis and Xen were from the same group at Cambridge but I
> didn't know that there was much of a connection other than both being
> somewhat exokernel-ish.

Digging slightly deeper, my recollections may have been wrong: there may not 
be a strong technological connection between the two. But reading a little 
about Nemesis reminds me of certain things about L4Re:

"The guiding principle in the design of Nemesis was to structure the operating 
system in such a way that the majority of code could execute in the 
application process itself."

From what I've seen in L4Re in various places, there is a certain amount of 
device driver code registering itself for incorporation by application 
programs. I feel that this is a bit awkward - code getting run at program 
start-up to register itself in fixed-length arrays enumerating the available 
drivers (many of which may be irrelevant to a given platform) - and it surely 
blends different responsibilities into the same process, potentially leaving 
applications with access to I/O memory regions.

What my own rather elementary work does is to separate drivers out into 
separate servers. Since many of them do not need to actively communicate with 
other components - they either initialise peripherals and do practically 
nothing or they share designated memory with other tasks - the only cost of 
employing multiple servers is the accumulation of duplicate or superfluous 
code contributed by each one of them in their standalone form, which is why I 
have been trying to use shared libraries as much as possible.

The virtual filesystem libraries also seem to promote a "client-side" approach 
to providing such functionality. Looking at different filesystem architectures 
is another of my current activities.

Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.