comp.lang.ada
 help / color / mirror / Atom feed
From: OPERA <vincent.diemunsch@edf.fr>
Subject: Ada OS  : towards an Ada Micro-kernel
Date: Tue, 13 Aug 2002 11:47:35 +0200
Date: 2002-08-13T09:47:36+00:00	[thread overview]
Message-ID: <ajakjo$t02$1@clnews.edf.fr> (raw)

Hello,

I have seen many discussions about using a micro-kernel such as L4 as a
foundation for
a new OS for ADA. I believe this can be a great idea, I would like to
suggest some ideas
about that :

First of all, if you consider the GNAT Runtime environnement, (GNARL) it
si based on very
simple primitives, far less complex than the Posix primitives, because
the Posix primitives were
not compatible with ADA requirements such as abortion. These primitives
are (tell me if I'm
wrong !) :
- Mutex Read/Write Lock
- Mutex Unlock
- Sleep      -- a task is waiting to be awoken
- Awake   -- an other task
- Wait Until
There is not even a simple conditionnal variable because in the general
case, the Posix ones are
not compatible with abortion ! The whole GNARL environnement is based
upon these trivial
primitives, that are implemented by the underlying kernel.

So the first choice for an ADA  micro-kernel would be to simply
implement efficiency these trivial primitives !!
But looking carefully we can see that :
- Protected objects can be implemented efficiency with :
    Mutex Read/Write Lock and Unlock
    Condition_Wait(condition, mutex)   --wait for a conditionnal
variable
    Condition_Signal(condition)
 provided that this primitives are compatible with abortion at the
micro-kernel level.

- Simple Rendez-vous can be implemented through IPC
    Message_Send (entry)    -- entry call
    Message_Accept(entry)  -- Accept statement
    Message_Reply(entry)    -- end of rendez-vous
And the IPC capabilities of L4 can be a great basis to developp these
primitives.
But, for me, L4 primitives are not fully compatible with ADA
requirements : in particular,
they can't be used to implement multiple "select alternatives". As an
example, we need new primitives
that allow something like : Message_Accept( "list of entries").

Therefore, I believe that the creation of a new micro-kernel must follow
two steps :
1. identify what primitives ADA needs, and their level of abstraction
2. try to implement them efficiency on a given machine (= to make a
micro-kernel), by
reusing if needed existing micro-kernel such as L4 or Hurd.

Any comment on this would be greatly appreciated !

Vincent Diemuunsch




             reply	other threads:[~2002-08-13  9:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-13  9:47 OPERA [this message]
2002-08-13 11:08 ` Ada OS : towards an Ada Micro-kernel antoine terrienne
2002-08-31  3:38 ` Nick Roberts
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox