The feel of a LispM/List of running machines
David Gadbois
gadbois@cyc.com
Fri, 2 May 1997 05:38:04 -0500 (CDT)
From: marcus@cathcart.sysc.pdx.edu (Marcus G. Daniels)
Date: 01 May 1997 20:23:06 -0700
Hrmm. This seems to raise another issue: even with threads for
CMUCL, even with layering LispOS on top of a Unix system or
microkernel, an overriding goal here is to get as much as possible
in to one Lisp address space, right? If we are pointing all these
system services into one Lisp process, doesn't this mean that we'll
run in to sluggishness without some kind of non-blocking GC?
Sure, so we'd need to have an incremental GC. That implies a
read-barrier, probably implemented via page-level protection bits.
The nice thing about a single address space and no kernel/user
distinction is that such tricks are reasonable to do: You don't have
to do zillions of context switches and argument validations in order
to change page protections and take read traps.
I have been hacking garbage collectors a lot lately, and I'm just
drooling over the possibilities for the things you can do when you
have real system support for them: cheap access to VM services,
getting to define atomicity, precise pointer/non-pointer distinctions,
and so forth.
Perhaps we'd be better off coming up with a good-performance way to
share Lisp objects across multiple Lisp processes?
That would be nice to have anyway. Imagine a generic distributed
object system analogous to the Symbolics generic file system interface
folks have been discussing. No sweat fretting over which camp (CORBA,
XCOM, etc) to join: We'll do 'em all, and not care.
--David Gadbois