Mailing List Archive

Mailing List: techdiver

Banner Advert

Message Display

To: heinzl@sw*.st*.co*
To: techdiver@opal.com
Subject: Re: Rebreather Safety
From: todd@me*.co* (Todd Leonard)
Date: Tue, 14 Mar 95 13:28:48 EST
>  Date: Tue, 14 Mar 1995 10:39:02 -0500
>  From: Carl Heinzl <heinzl@sw*.st*.co*>
>  
>  Seriously though, allowing anything to run on one of these computers
>  other than the task at hand would be asking for trouble, you now have
>  a multitasking OS that has REAL TIME work to do.  Think of it - how
>  can you guarantee that a user wouldn't crash the machine?  (this is
>  possible, but it makes the operating system a LOT more difficult to
>  write).

Agreed!  This was an issue I tried to raise during one of the
computer sessions at tek, but I don't think I expressed it very
well then.  It came out of a discussion concerning a device
called the Dive Tracker, which is a general-purpose submersible
computer with a lot of nice flexible capabilities.  It's creator
mentioned that the user could load it with their own software
written in C, and someone also mentioned that it might be nice
to run dive profiling or gas absorbption software on it. 

Everyone who works with C will realize just how easy it is to
munge pointers and trash memory, despite even the most talented
programmers' efforts to the contrary.  All software has bugs,
and in a multitasking computer a bug in one program is sometimes
capable of affecting another program.  Protected-mode operating
systems can help, but aren't foolproof and carry a significant
overhead.  Tools (like Purify) are available to help catch some
bugs, but not all of them.  Testing also is important but
imperfect.  Therefore, when the impact of bugs is extremely
high (as with life-support software), it seems wise to try to
reduce the instance and mitigate the impact of bugs in other
ways as well, such as encapsulating components into independant
(and perhaps redundant error-cancelling) chunks that are each
as *simple* as possible.  This almost certainly means separate
memory spaces and CPUs, and limited and well-defined interaction
with the other components.

Someone at tek pointed out that the redundancy that could be
attained by having two of these devices would address the risks
I described.  I don't agree -- bringing two (or more) is a good
way to address "random" infrequent failures of a component, but
it would still leave one open to deterministic (though uncommon)
failure modes present in each of the identical devices.  One can
envision a situation where exceeding a certain depth or time
would cause a program to overwrite an array bound, for example.

I have nothing at all against general purpose devices like
the Dive Tracker -- actually, I thought it was a really great
idea.  I'm only concerned about mixing life-support software
and non-life-support software in a manner allowing significant
interaction between the two.  Encapsulation is our friend!

p.s. I don't think anyone was actually suggesting that we go
     down this route.  However, as underwater computers become
     increasingly flexible and powerful, the temptation is
     going to present itself to wider and wider audiences...

Navigate by Author: [Previous] [Next] [Author Search Index]
Navigate by Subject: [Previous] [Next] [Subject Search Index]

[Send Reply] [Send Message with New Topic]

[Search Selection] [Mailing List Home] [Home]