comp.lang.ada
 help / color / mirror / Atom feed
From: mcsun!uknet!stl!crosfield!pdg@uunet.uu.net  (paul goffin)
Subject: Re: Using Global Variables
Date: 21 Sep 92 08:10:26 GMT	[thread overview]
Message-ID: <15452@suns5.crosfield.co.uk> (raw)

In article <16864C1E7.M19481@mwvm.mitre.org> M19481@mwvm.mitre.org writes:
>In article <1992Sep16.152620.9286@nosc.mil>
>sampson@nosc.mil (Charles H. Sampson) writes:
#>In article <15390@suns5.crosfield.co.uk> pdg@crosfield.co.uk (paul goffin)
#>writes (in an article on Ada compiler pricing):

#>>new way of managing "global variables" - Yes, nasty as they are,
#>>you do sometimes have to use global variables in the real world!)
#>>there was a nasty shock in the price of the compilers.

#>     I'd like to hear more about this need to use global variables in
#>the real world, from Mr. Goffin and anyone else.  I can't remember the
#>last time I used one in an Ada project, and I think what I do is pretty
#>real world stuff.  (Well, I do contract to the U. S. Navy, but that's
#>close.)

#The main reason I've heard used to justify the use of global variables is
#performance of a real-time system.  The argument goes that the overhead of

Yes, that's part of it.  I worked in flight simulation.  As well
as the (perceived) need to avoid paramter passing delays, (actually
we measured those, they're not as bad as folklore would have one
believe)  the big need is to share large amounts of data at high
speed between multiple computer systems.

In a flight simulator, nothing is actually encapsulated.  Although
one might like to model the aircraft aerodynamics as a closed task
which only replys to requests for, say "current aircraft latitude"
the actual requirement is quite different.  Not only must those
requests be satisfied, but quite a lot of what _should_ be internal,
local data must also be exported.  I'm talking about last times
values, intermediate values etc.  This is to service the
"record/replay" system.  Here, the simulator is required to replay
the last few mins of a flight and then the pilot takes over and
tries again.  The number of things that have to be stored is
huge.  Making the computer hardware architecure fit a nice _closed_
software model would be amazingly expensive.  So it's not done.

The tried and trusted way to do this in the industry is to share
memory by high speed DMA systems.  In FORTRAN systems, these
shared memory areas are overlayed with COMMON blocks.  In Ada,
I used address clauses to point at data in those areas.  The memory
is global;  the data is global and is accessed (read by) many systems;
only a very few systems actually write to specific data items.

It does require a lot of planning to manage that global data.  On
large simulators it has become a full time job just to adapt a
standard "database" to the new simulated system.

Most people in simulation would like to get away from this
way of doing things (well, actually those who have made a
career out of managing the data are quite happy, but then
they would be!).  Unfortunately, the hardware just ain't
good enough yet.  (It may never be,  as the hardware improves
the requirements of the simulator increase too!)

Paul
-- 
+-------------+-------------------------------------------------------+
+ Paul Goffin +  Crosfield Electronics Ltd. U.K.  +44 442 230000x3357 +
+             +  Opinions expressed are mine! (Yours for a small fee) +
+-------------+-------------------------------------------------------+

             reply	other threads:[~1992-09-21  8:10 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-09-21  8:10 paul goffin [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-09-29 15:05 Using Global Variables Charles H. Sampson
1992-09-28 20:56 crispen
1992-09-28 15:53 Victor Giddings
1992-09-28 14:51 Jeffrey Stewart
1992-09-28 12:52 crispen
1992-09-25 22:58 netcomsv!iscnvx!news
1992-09-25 21:16 Charles H. Sampson
1992-09-25 17:50 Charles H. Sampson
1992-09-25 17:36 Charles H. Sampson
1992-09-25 16:30 David A. Hasan
1992-09-25 14:01 crispen
1992-09-24 20:02 netcomsv!iscnvx!news
1992-09-24 18:10 crispen
1992-09-24  6:51 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!rpi!utcsri!geac!torsqnt!uuno
1992-09-24  3:52 Michael Feldman
1992-09-23 21:13 haven.umd.edu!darwin.sura.net!zaphod.mps.ohio-state.edu!cis.ohio-state.ed
1992-09-23 19:11 Charles H. Sampson
1992-09-23 15:01 crispen
1992-09-23 14:26 munnari.oz.au!ariel!ucsvc.ucs.unimelb.edu.au!phillip.edu.au!x01233
1992-09-23 14:19 crispen
1992-09-23 13:24 wupost!spool.mu.edu!olivea!bu.edu!inmet!inmet!shafer
1992-09-23  2:44 Holmes S. Liao
1992-09-22 20:14 LEE MARDEN
1992-09-22 17:08 dog.ee.lbl.gov!hellgate.utah.edu!cs.utexas.edu!csc.ti.com!tilde.csc.ti.co
1992-09-22 14:54 van-bc!ubc-cs!destroyer!caen!spool.mu.edu!umn.edu!The-Star.honeywell.com!
1992-09-22 12:19 Robert Firth
1992-09-21 21:30 fred j mccall 575-3539
1992-09-21 20:58 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!darwin.sura.net!spool.mu.edu
1992-09-21 20:37 Michael Feldman
1992-09-21 20:36 Michael Feldman
1992-09-21 20:31 Michael Feldman
1992-09-21 19:23 Robert Firth
1992-09-21 18:32 agate!linus!linus.mitre.org!mwvm.mitre.org!M19481
1992-09-21 16:51 Doug Smith
1992-09-21 14:43 haven.umd.edu!darwin.sura.net!spool.mu.edu!umn.edu!The-Star.honeywell.com
1992-09-21 11:49 cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!wellerd
1992-09-21  4:08 cis.ohio-state.edu!news.sei.cmu.edu!lph
1992-09-19  2:28 Michael Feldman
1992-09-18 23:52 Charles H. Sampson
1992-09-18 22:50 Robert I. Eachus
1992-09-18 13:12 crispen
1992-09-17 18:34 Charles H. Sampson
1992-09-17 14:24 kronos.arc.nasa.gov!iscnvx!news
1992-09-16 17:47 agate!linus!linus.mitre.org!mwvm.mitre.org!M19481
1992-09-16 15:26 Charles H. Sampson
replies disabled

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