FYI .... Here is what I sent to Trevor

Dear Trevor

A colleague sent your note from comp.realtime to me.  I can not access the newsgroup directly so I thought that I would drop you a short note to explain a 
bit 
about how Ada tasking is implemented.  One of the most interesting featurens of the Ada language is that it can be executed on "barre metal"  That is to 
say 
that Ada language vendors have implemented an Ada runtime system that facilitates the execution of multiple threads of execution and the exchange of 
data between threads following the Ada runtime model.  So, for example, the Ada runtime implements a priority driven model and can be written to offer 
alternative execution models.  

As the computing environments have become more tightly coupled to operating systems, the Ada language vendors have move to supplying an Ada 
runtime 
system that is integrated with the underlying O/S.  There are several different models that are in use in these environments.  For example, when running on 
a 
Windows based O/S, the Ada runtime is often encapsulated within a single Windows thread because Windows threads are not directly compatible with the 
Ada model.  In the ARINC 653 domain, each partition may be using different flavors of O/Ses within the partition. So, for example, one partition may be 
executing an Ada application that is using the Ada Ravenscar profile as its operating environment whereas another partition may be running a C application 
that is utilising POSIX threads.

Some of the Ada vendors have constructed runtime system interfaces that enable the mapping of the Ada runtime system to a variety of different underlying 
operating systems without user intervention.  The intent of the Ada language is to support the ease of migration of Ada applications between vendors and 
execution platforms.  So, in many cases, an Ada application can be easily ported to a new execution environment and will only require modification at the 
machine-level such as representation specifications.

Please feel free to contact me if you have any additional questions.  Also, feel free to forward the above text to the newsgroup if you think it adds value to 
the discussion.

Sincerely Yours,


Joyce L Tokar, PhD
Pyrrhus Software
[log in to unmask]

On Wed, 16 Mar 2005 11:12:23 -0500, Stephen Leake wrote:

>(feel free to post this reply in any newsgroup)

>> From: Trevor Barton <[log in to unmask]>
>>
>> My knowledge of Ada is pretty much limited to information gleaned from
>> the ongoing discussion in this group.

>A better discussion forum is comp.lang.ada

>> AIUI, Ada natively supports multithreading.  How is that implemented
>> relative to the underlying oprtating system?  

>The implementation is not dictated by the language; it is up to the
>compiler vendor.

>> Does it use the OS's multi-taking environmant to implement stuff
>> like scheduling and task synchronisation, or does it use its own, or
>> is that something that can be chosen by the user, or is it
>> implemntation defined?

>Some vendors use Posix threads, others use whatever the target OS
>provides, others provide their own threading runtime.

>_All_ of them meet the Ada standard for how Ada tasks behave. "task"
>is Ada's name for "thread"; it is helpful in this context to
>distinguish between the two, since they have somewhat different
>semantics. Each vendor typically needs to add some "glue" on top of
>the underlying thread implementation to make it meet the "task"
>semantics. 

>> What about Ada running on single-tasked OSs, or indeed on no OS at all?

>Some vendors do that, as well.

>For a list of Ada vendors, see www.adaic.com, in particular
>http://www.adaic.com/compilers/comp-tool.html 

>-- 
>-- Stephe

>__________ NOD32 1.1027 (20050316) Information __________

>This message was checked by NOD32 antivirus system.
>http://www.nod32.com