comp.lang.ada
 help / color / mirror / Atom feed
From: eachus@spectre.mitre.org (Robert I. Eachus)
Subject: Re: Ada replacements for DOS I/O
Date: 2 Nov 94 15:20:33
Date: 1994-11-02T15:20:33+00:00	[thread overview]
Message-ID: <EACHUS.94Nov2152033@spectre.mitre.org> (raw)
In-Reply-To: dennison@romulus23.DAB.GE.COM's message of 28 Oct 1994 12:17:34 GMT

In article <38qq4u$as2@theopolis.orl.mmc.com> dennison@romulus23.DAB.GE.COM (Ted Dennison) writes:

 > Don't be so hard on Alsys (at least not for this). I know of NO Ada system
 > on any platform that handles tasks and I/O that well. VAX Ada comes close, 
 > but simultanious Text_IOs will kill the application. Tasks and I/O are 
 > NEVER a no-brainer.

   There are several versions of the Verdix compiler targeted to
multi-processor systems which do this, and do it very well.  The first
was for the National chip-based Sequent machines.  And the same
run-time has been ported to several other systems.

   But this is, and always has been, an issue outside the scope of the
language.  If the operating environment supports multiple processes
doing I/O to the same devices at the same time, it is nice to have a
compiler which recognizes that and takes advantage.  But the overhead
to do that under "vanilla" Unix is harsh, and under MS-DOS it is darn
near impossible.

   But it has always surprised me that (especially on Unix) no vendors
have built their I/O packages around a "two process" model.  The main
program and all user defined tasks run in a single process, but you
have a package that mediates all I/O events and hands them to a second
process which does the waiting and event handling.  If done right,
most of the I/O can be done no wait from the point of view of the
second process, and only the task in the main program which made the
call does the waiting.

   While such a run-time may be overkill for most programs, the amount
of code that needs to be changed is small, and usually buried in one
or more implementation defined packages.  It shouldn't be hard for a
vendor to do a switchable implementation, and allow the user to switch
at link-time.  Or, if you are adventurous, it is about a three week
effort if you have access to the source code for the implementation
defined library units.  (Yes, I've done it.)  Of course, GNAT is going
for a full threads based run-time, but even in GNAT, this style of
run-time would better serve most users in some environments.

--

					Robert I. Eachus

with Standard_Disclaimer;
use  Standard_Disclaimer;
function Message (Text: in Clever_Ideas) return Better_Ideas is...



  parent reply	other threads:[~1994-11-02 15:20 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1994-10-27 11:25 Ada replacements for DOS I/O Elgar the Idiot aka Chris Warwick
1994-10-27 23:04 ` Robert Dewar
1994-10-31 15:08   ` Mark Bayern
1994-11-03 11:23     ` Robert Dewar
1994-11-04  8:17       ` Samuel Tardieu
1994-11-06 21:03         ` Robert Dewar
1994-10-28 12:17 ` Ted Dennison
1994-10-31 13:21   ` Robert Dewar
1994-11-03  9:24     ` Robert I. Eachus
1994-11-05  5:37       ` Robert Dewar
1994-11-01 14:42   ` David Emery
1994-11-02 14:40     ` David Weller
1994-11-02 15:20   ` Robert I. Eachus [this message]
1994-11-03 13:01     ` Bevin R. Brett
  -- strict thread matches above, loose matches on Subject: below --
1994-10-29 22:01 tmoran
1994-10-31 12:46 cwarwick
1994-10-31 19:31 tmoran
1994-11-03  3:15 tmoran
1994-11-03 23:05 ` Robert Dewar
replies disabled

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