`free` operator

Bill Frantz frantz at pwpconsult.com
Sat Oct 27 10:21:57 PDT 2012

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

More information about the es-discuss mailing list