From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b80f9d510e95d880,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-08-13 03:05:03 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!logbridge.uoregon.edu!fr.usenet-edu.net!usenet-edu.net!jussieu.fr!news.edf.fr!not-for-mail From: OPERA Newsgroups: comp.lang.ada Subject: Ada OS : towards an Ada Micro-kernel Date: Tue, 13 Aug 2002 11:47:35 +0200 Organization: EDF Message-ID: NNTP-Posting-Host: cnn00007.cnen.de.edf.fr Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: clnews.edf.fr 1029232056 29698 144.165.69.7 (13 Aug 2002 09:47:36 GMT) X-Complaints-To: newsadm@news.edf.fr NNTP-Posting-Date: 13 Aug 2002 09:47:36 GMT X-Mailer: Mozilla 4.5 [fr] (WinNT; I) X-Accept-Language: fr Xref: archiver1.google.com comp.lang.ada:27972 Date: 2002-08-13T09:47:36+00:00 List-Id: 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