comp.lang.ada
 help / color / mirror / Atom feed
From: cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!falis@ucbvax.Berkele y.EDU  (Edward Falis)
Subject: Re: Language runtime requirements (was Re: DoD
Date: 13 Aug 93 16:15:20 GMT	[thread overview]
Message-ID: <1993Aug13.121520.1158@sei.cmu.edu> (raw)

In regard to Dave Bashford's question: "So, what's the problem with
UNIX", I'll make the following observations / HO's:

Solaris, HP-RT, LynxOS are effectively UNIX or UNIX variants.  The difference
from traditional UNIX implementations ispport for threads or lightweight
processes.  This s a key issue for mapping Ada tasking over the operating
system schedulable entities.

For starts, UNIX process switching times are quite large, because such a
process has much more context associated with it (including a separate
address space) than an Ada task does.  In view of the complaints of
the user comunity about Ada context switch and rendezvous times bac 

when these design deision were made, it  did not seem sensible to add
this overhead to operatons that were already on the heavy side.  Given
that Ada tasks can potentially share address spaces, there are additional
overheads incurred to map shareable address spaces among multiple UNI|
processes.  Both of these problems are solved by threads, since they're
defined within the shared address space of the process corresponding to
the Ada mai subprogram, and threads have much less context associated
with them than processes.  

The upside of using threads or processes for Ada tasks is that the
tasks are scheduled by the OS, so that blocking operations allow
other parts of the application to proceed.  So in light of these
considerations, threads are almost ideal.

What we wound up having to do with the approach of mapping all Ada
tasks into a single process, was to provide ways of having blocking
operations inform the Ada scheduler to switch to another task.
Initially, this was done for standard I/O operations, and Kludges
were made available on some platforms to fork off a child process
for system calls and calls to other languages that might block.
Very ugly, and it still didn't address issues like priorities
across multiple applications.

Hope this gives a little perspective on where we were coming from.

- Ed Falis, Alsys

             reply	other threads:[~1993-08-13 16:15 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-08-13 16:15 cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!falis [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-08-17 14:27 Language runtime requirements (was Re: DoD David Emery
1993-08-16 22:07 agate!howland.reston.ans.net!spool.mu.edu!sgiblab!sgigate!sgi!fido.asd.sg
1993-08-16 20:06 David Emery
1993-08-13 16:06 Mike Bates
1993-08-13  0:20 Mark Atwood
1993-08-12 22:43 Dave Bashford
1993-08-12 20:13 magnesium.club.cc.cmu.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!falis
1993-08-12 14:44 David Tannen
replies disabled

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