There are a few older systems which have had features that are a bit like those people are describing for the "free" operator. Let me describe two of them.

OS/360 and the PL/I language had the idea of "subpools". Many small objects could be allocated in a subpool, and all freed with one call, a high performance way of freeing storage. Neither of these systems actually NULLed existing pointers, so it was easy to make programming errors.

The KeyKOS (aka Gnosis) [1,2] depended on explicit freeing of objects for storage reclamation. As an OS, object lifetimes ranged from milliseconds to years. The reason of having an explicit free was to allow an accounting entity paying for storage to stop paying, regardless of whether others were using that storage. When the "free" call returned, all references to the storage were changed to null.

The experience in KeyKOS was that after an object had been shared for a few months, the effects of freeing it could not be predicted easily. This made it hard to decide to free an object. A combination of garbage collection and explicit free might have worked well, but was never implemented.

The naive program, using a freed object would crash. These crashes can be caught by a "keeper" object which can clean up and report failure to callers.

[1] <http://www.cis.upenn.edu/~KeyKOS/agorics/KeyKos/Gnosis/>
[2] <http://cap-lore.com/CapTheory/KK/Kernel/>

Cheers - Bill

---------------------------------------------------------------------------
Bill Frantz | "I wish there was a knob on the TV to turn up the 408-356-8506 | intelligence. There's a knob called "brightness", but
www.pwpconsult.com | it doesn't work. -- Gallagher

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to