Real Time GC

Henry G. Baker hbaker@netcom.com
Sat, 7 Jun 1997 15:43:51 -0700 (PDT)


> The lisp machine suffered from problems with real-time GC.
> 
> 1.  The time required to incrementally scavenge wasn't really
>      bounded.  Arrays needed to be scavenged atomically, and
>      they have no bound on their size (well, they did have to fit
>      in virtual memory, but that's not what we're talking about).

Boy, ain't that the truth.  I think that if you tried to scavenge an
array that didn't completely fit into real memory, you got a hard
crash.  I think even a 'transport' from one space to another of a
large array couldn't be interrupted.  For a large array this could be
quite noticeable.

Note that this issue was recognized in my RTGC paper, but wasn't
implemented on the Lispm.  Andrew Appel and some of the Small talk
people have written additional papers about how to solve this problem.
For large enough arrays, you should just diddle the page map, and not
attempt to physically move it.

Every one on this list should read up on the GC for the Erlang
language at Ericsson's web page.  It doesn't have to face all of the
problems of a general Lisp GC, but it's pretty neat, nonetheless.
Virding and Anderson did a very good job.  Phone systems have to be
real-time, so Erlang has to do the right thing.

-- 
Henry Baker
www/ftp directory URL:
ftp://ftp.netcom.com/pub/hb/hbaker/home.html