[comp.sys.atari.st] GEMDOS memory allocation

LINDAHL@brandeis.BITNET (01/19/87)

Date:     Sun, 18 Jan 87 23:38 EST
From:     <LINDAHL@BRANDEIS.BITNET>
Subject:  GEMDOS memory allocation
To:       info-atari16@score.stanford.edu
X-Original-To:  info-atari16@score.stanford.edu, LINDAHL



has anyone looked into the way that GEMDOS manages memory? i seem to lose
RAM over time, especially after running programs like micro emacs which
do lots of Malloc calls (you are only allowed to allocate 20 blocks per
process according to the GEMDOS manual). i think that GEMDOS "loses" memory
when you do too many Mallocs, so i would like to look at the memory free
and memory allocated lists and see what blocks aren't on either list.

i looked into the Getmpb() bios function, but it seems that as far as the
bios is concerned, GEMDOS allocates all memory. obviously GEMDOS is
managing this memory internally.

i next tried to trace a Malloc() call using MonST in trace-walk mode,
but my machine freezes up when the rom routine tries to change register a7.
(i guess that MonST isn't preserving it's stack or something.) no doubt the
answer lies in the rom somewhere, but i'd rather spend lots of time looking.

does anyone have any idea where GEMDOS keeps its list?


Greg Lindahl

us snail:    box 2522 brandeis university      bitnet: lindahl@brandeis.bitnet
             waltham mass 02254                cps:    [76515,1122]

[NSA CIA Cray hackey-sack tie-dye divestment radical civil disobedience
 Thoreau Locke Hobbes flower-power frisbee physics star wars Teller
 long hair vegetarians 'and to think that MY tax dollars pay for this!']

apratt@atari.UUCP (Allan Pratt) (01/20/87)

*** FLAME ON ***

> has anyone looked into the way that GEMDOS manages memory? 
> ...
> does anyone have any idea where GEMDOS keeps its list?

PLEASE don't go around publishing internal addresses like this requests,
since such addresses are GUARANTEED to change and BREAK programs which
count on them.  Some parts of an operating system are hidden from
view ON PURPOSE, so the OS can be sure that its data structures will
not be fooled with by user programs.

The correct procedure in this kind of situation is to say, "Gee, Atari,
I lose memory over time.. I wonder if there's a problem in the memory
allocator?  Here is an example program which demonstrates the problem..."
I know we won't always have a fix for the problem by next week, but
f**king around with GEMDOS' internal structures will cause more trouble
than it's worth.

*** FLAME OFF ***

As it happens, we know that memory gets fragmented strangely, and the
limit on memory blocks you can Malloc is a function of statically-allocated
data structures.  In future ROMs, we may increase the limit, but we
can't get rid of it without a new, more fragile memory allocator (one which
assumes that you haven't changed memory locations immediately before and
after blocks you allocated).

/----------------------------------------------\
| Opinions expressed above do not necessarily  |  -- Allan Pratt, Atari Corp.
| reflect those of Atari Corp. or anyone else. |     ...lll-lcc!atari!apratt
\----------------------------------------------/

fouts@orville (Marty Fouts) (01/21/87)

In article <525@atari.UUCP> apratt@atari.UUCP (Allan Pratt) writes:
>*** FLAME ON ***
>
>> has anyone looked into the way that GEMDOS manages memory? 
>> ...
>> does anyone have any idea where GEMDOS keeps its list?
>
>PLEASE don't go around publishing internal addresses like this requests,
> ...
>The correct procedure in this kind of situation is to say, "Gee, Atari,
> ...
>I know we won't always have a fix for the problem by next week, but
>f**king around with GEMDOS' internal structures will cause more trouble
>than it's worth.
>
>*** FLAME OFF ***
>

Get Real Alan.

Although I agree that programs should not muck with undocumented internal
structures, real users have to make the trade off between something which
works now but breaks later and something that's broken now but will work
someday.  If the only workaround is to hack internal data structures, than
hack the data structures, and document what you did.  I the user will decide
which course I want to take.

***  FLAME ON  ***

Putting operating systems into ROM puts the onus of responsive bug fixing on
the vendor in a major way.  I suspect that Atari is giving very low priority
to fixing existing bugs in order to get new products out. This is not how you
meet the onus nor is it how you establish repeat customers.

There are currently many 'well known' bugs in the ST software and no sign of
a ROM upgrade.  I stand unimpressed, and unlikely to be a repeat customer
regardless of the wiziness of any new product offering.

***  FLAME OFF  ***

manis@ubc-cs.UUCP (01/23/87)

In article <186@ames.UUCP> fouts@orville.UUCP (Marty Fouts) writes, in response
to remarks by Allan Pratt of Atari:

>Get Real Alan.

I'm not sure how real he has to get. Obviously Atari has vested interests
in keeping undocumented features undocumented; this lets them change them
later. Given the generally low quality of the DRI software in the ST, they
have good reasons for wanting to change much of it.

However, I as a consumer, have just as good reasons for wanting programs
not to depend upon undocumented features. If those features are changed, 
then suddenly programs don't work. Ask anybody in the IBM PC world about
the disadvantages of bypassing the BIOS in order to make the program run 
faster. 

Backward and forward compatibility are essential if the ST is to continue
to flower. There's an enormous amount of PD software available for the
machine, and some of it is really good. If programs start malfunctioning
(say by accidentally trashing a device control block that now lives where
some Malloc parameters used to live), people will stop using (and therefore
stop writing) PD software.

If programmers start depending upon undocumented features, they will force
Atari to support those features. Is that more important than having them 
rewrite GEMDOS so it works? What I want is for Atari to fix bugs, even at 
the cost of changing data structures. Allan (and Landon and Neil) have
offered to give good workarounds if we can formulate the bug reports
properly. Let's take them up on it.