Path: utzoo!utgpu!water!watmath!clyde!att!rutgers!gatech!ncar!ames!oliveb!sun!pepper!cmcmanis
From: cmcmanis%pepper@Sun.COM (Chuck McManis)
Newsgroups: comp.sys.amiga.tech
Subject: Re: resource reclamation
Message-ID: <64608@sun.uucp>
Date: 17 Aug 88 18:33:41 GMT
References: 
Sender: news@sun.uucp
Reply-To: cmcmanis@sun.UUCP (Chuck McManis)
Organization: Sun Microsystems, Mountain View
Lines: 42

[Mr. Hoogerbeats, add this one to your list ...]
In article  (Miles Bader) writes:
> How come simple resource reclamation isn't done?  It seems like it
> would be pretty simple to hang a list of allocated resources off a
> task...
> -Miles

Because it isn't. The original DOS specified for the Amiga included 
resource reclamation, however when time got tight and Commodore had
to go with MetaCompCo's modified version of TriPOS, there wasn't time
to put it in. If you look at some of the structures you will notice
that there entries for Tasks such as tc_MemEntry which were for this
kind of stuff. 

That is not to say that it isn't possible. The ARP project (AmigaDOS 
Replacement Project) has created a library which allows you to track
resources and free them on exit. The ARP stuff in on a Fish disk #???
and available thru the amiga archives. 

The question Miles didn't ask but always follows is :

How come I can't kill a hung process with ^C or something? And when 
the program breaks why do I have to reboot the machine? 

The reason is that the Amiga does not have memory protection between
tasks. And when a program goes astray, you do not know what sort of
damage it may have caused to internal memory structures. It can damage
the memory free list, trackdisk buffers, the stack of other programs,
and a host of other "sensitive" areas. Consequently, if you continue
to run the machine after a program has died, you run the much greater
risk of destroying completely unrelated data. For most people this
is unacceptable and that is why you have to reboot. For those people
who like to gamble, there is a commercial program called GOMF which
attempts to recover from these situations. It does keep the machine
running, however if another program you are running crashes, you should
be aware that it is much more likely that the originally crashed program
probably is responsible, not a bug in the code that just ran.


--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.