Re: A89: Ram vs. Archive


[Prev][Next][Index][Thread]

Re: A89: Ram vs. Archive




>>  When a program is to be run, it is moved from the
>>  "hard drive" - the archive - to the RAM and executed.  When it is done,
it
>>  is copied back to the archive.
>
>Is this why whenever i typically run a large archived program (ie:smq) or
in
>some cases even a small program not much more than 3k, w/ plenty of archive
>space free, i get a "warning: about to garbage collect archive" message
upon
>exit of the program...if i select yes then it garbage collects (can't be
too
>healthy to garbage collect every time a program is run) and then returns
back
>to the shell...but if i select no it gives a memory error and exits BUT W/O
>re-archiving the program???

Exactly.  If when an archived program is unarchived, it isn't truly
"deleted" from the archive - TIOS just conveniently forgets about it while
it remains in the archive.  When the archive is full, TIOS does a garbage
collect where all the unarchived programs are deleted from the archive and
the other programs are moved closer together to eliminate wasted space -
making room for the program to be archived.  If your archive is full and you
unarchive a game to play, then when you finish and the game is to be
rearchived the archive is still "full" - so it garbage collects.
Afterwards, the archive is full again so the next game will cause a garbage
collect.  The end result is a garbage collect after EVERY time you exit a
program.  Too many garbage collections is NOT healthy for the archive memory
at all. . .

If you refuse to garbage collect, then the archive remains too "full" to fit
the program and you get a memory error because there isn't enough free
archive memory to fit the program.  And since the program couldn't be fit,
it will remain in RAM.

>  oh, and what complications then are you referring to?

As I wrote above, garbage collections are NOT good for the archive memory.
After some 10,000 times being written to, each bit in the archive will stop
functioning.  If you emptied and refilled the entire archive - causing a
garbage collect - once a day, it would still take some 27 years or so to
fully destroy the archive memory, so it's NOT something to worry about, but
it's not a good idea to test the system to the limits anyway.

Also, Fred - one of the guys writing Archive Utility - has been complaining
that if the program is unarchived to be run, then if it crashes it will be
lost even with Archive Utility.  I'd think that if a program crashes it
shouldn't be on my calc, but the principle remains.  Archive Utility 3 has
an undelete feature meant to handle an instance like this that can restore
some lost programs that were archived.  This works like the old undelete
program I used to use back on my old Windows 3.1 system (which recently
stopped booting and gives a CMOS checksum error - the thing is shot.
Couldn't quite make it to be 10 years old =(  I learned to program on that
thing in QBASIC <sniff>). . .

    -Scott