Persistent Segments

Jecel Assumpcao Jr jecel at merlintec.com
Wed Feb 21 20:36:33 UTC 2001


On Tue, 20 Feb 2001, ajh18 at cornell.edu wrote:
> Using a directory service is analogous to using an ObjectTable as in the
> original Smalltalk-80.  If a segment moves you only have to tell the
> directory service (ObjectTable).  But with direct pointers you have scan
> all databases and update segment pointers.  So I would agree that global
> IDs and a directory service is better.  Especially if you consider a lot
> of databases will be private, but have pointers to public segments.

One problem with my idea is that my global IDs form a flat space, which
makes a directory service much harder to implement than DNS. In my
design the system will scan a given directory (could be a list of
directories) when it starts up: at the begining of each segment or
database is its global ID. So we can create a table of local file name
to global ID mapping. When we need an ID that is not in that table, we
broadcast a request to other systems in the local network. If that
doesn't work then we go to the Internet.

The idea is that the users can use any tools they want to copy stuff
from a CD-ROM or the Internet and these tools can damage arbitrarily
the file names and the system will still work. Have you seen how many
broken URLs have come through this list? I don't want to have to rely
on that, but also don't want to build a system where the user can't
simply point Internet Explorer at some address indicated in an email
and then copy the result to a floppy and from there to a machine that
has no network connections.         

> If you are changing your own system, you would normally copy the Squeak
> Central segments you want to change or maybe copy the whole Squeak
> Central database (similar to an image download today).  Using Squeak
> Central mirrors in your image is like automatically saying yes to any
> updates they release.  If your not changing String but just using String
> I would argue that it is good to see its updates right away, if you want
> your code to keep up with Squeak releases.

What happens when you need to run an application which uses a modified
String class *and* another which uses the original String at the same
time? I know that can't really be done in the current Squeak, though
there are efforts to make projects work this way and Collage might be a
future solution (http://minnow.cc.gatech.edu/squeak/745)

> > ["compressed memory cache"]
> For small segments, it may not be worth the extra complexity.  Maybe for
> pages of segments it would be worth it.  Can you point me to some design documents?

This is a good start:

   http://www.cs.utexas.edu/users/oops/compressed-caching/index.html

I don't have any documents of my own, yet. Sorry.

-- Jecel





More information about the Squeak-dev mailing list