comp.lang.ada
 help / color / mirror / Atom feed
From: eachus@mitre-bedford.arpa  (Robert I. Eachus)
Subject: Re: Ada and Unix--Blocked Tasks
Date: 10 Aug 91 04:59:28 GMT	[thread overview]
Message-ID: <EACHUS.91Aug9215928@Dr_No.mitre.org> (raw)

     Since Mike Feldman asked, and since I was involved in the early
years, I'll tell you what I expected at the time.  On systems which
supported sharing of memory between tasks and with relatively low-cost
OS task or process switching, everyone expected Ada tasking to be
mapped to OS tasking, even if entry call parameters had to be copied.
For example, the DPS6 Ada compiler put the parent tasks environment
(and the global heap) in the child's address space.  This meant that a
parameter, such as a record normally passed by reference, needed to be
copied to the global heap if the call was from child to parent.

    On tasking hostile OS's such as OS/370 and the then current
version of VMS, Ada programs were expected to run inside a single OS
process.  Things like MS-DOS (I won't call it an OS then...still might
not now.) had no concept of tasking, so it would all have to be done
in the Ada run-time and the "interesting" question was how close you
could come to doing non-blocking keyboard I/O right.

    Unix was the interesting case.  On some versions it was almost
possible to do it "right," on others clearly impossible.  What I
expected, but never saw, was for vendors to have a single process
which contained all the user written tasks, and hide additional
processes in the vendor supplied IO package bodies.  For example, a
run-time could do its own local buffering and only call (or create)
another process when there was a probability of a long wait.  If done
right, the run-time would figure out when it needed to create another
child process and otherwise pass data to a process on the free list
and wake it up.  Has anyone ever done this?  On current versions of
Unix it should work quite well, and give you the illusion of one
process per task without the process switching overhead.


--

					Robert I. Eachus

with STANDARD_DISCLAIMER;
use  STANDARD_DISCLAIMER;
function MESSAGE (TEXT: in CLEVER_IDEAS) return BETTER_IDEAS is...

             reply	other threads:[~1991-08-10  4:59 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1991-08-10  4:59 Robert I. Eachus [this message]
  -- strict thread matches above, loose matches on Subject: below --
1991-08-16 15:43 Ada and Unix--Blocked Tasks bu.edu!inmet!offer
1991-08-14 15:24 torolab4.vnet.ibm.com!jrussell
1991-08-07  1:35 Bob Kitzberger @midnight
1991-08-06 20:12 mcsun!corton!chorus!nocturne.chorus.fr!jloup
1991-08-06 18:48 Mike Murphy
1991-08-06 17:23 David Emery
1991-08-06 14:57 Drew Johnson
1991-08-06 14:32 Dan L. Pierson
1991-08-06 14:17 mcsun!corton!chorus!nocturne.chorus.fr!jloup
1991-08-06 12:32 Arthur Evans
1991-08-06  9:17 Jim Showalter
1991-08-06  4:05 Mike Feldman
1991-08-05 19:56 Howard E. Turner, Jr.
1991-08-05 19:04 EDWARD CRAGG
1991-08-05 16:06 David Emery
1991-08-05 15:25 Fred Stluka
1991-08-05 14:14 Paul Stachour
1991-08-05  5:08 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!sdd.hp.com!news.cs.indiana.e
1991-08-02 18:17 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!sdd.hp.com!spool.mu.edu!cs.u
1991-08-02 13:28 Dennis Doubleday
1991-07-30 19:35 Dave Lewicki
replies disabled

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