Browse Prior Art Database

Space Recovery when Concurrently Linking Program Modules

IP.com Disclosure Number: IPCOM000111067D
Original Publication Date: 1994-Feb-01
Included in the Prior Art Database: 2005-Mar-26
Document File: 4 page(s) / 103K

Publishing Venue

IBM

Related People

Satin, RH: AUTHOR

Abstract

Disclosed is a method to recover the space used by a previous copy of a computer program module when the module is replaced during normal computer usage. The method interrogates every task executing on the computer at the time a module is being replaced for references to that module, and keeps track of the usages of the old module until the number of usages goes to zero. The method avoids keeping usage counts until the module replacement actually occurs, and requires only one interrogation of each task.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Space Recovery when Concurrently Linking Program Modules

      Disclosed is a method to recover the space used by a previous
copy of a computer program module when the module is replaced during
normal computer usage.  The method interrogates every task executing
on the computer at the time a module is being replaced for references
to that module, and keeps track of the usages of the old module until
the number of usages goes to zero.  The method avoids keeping usage
counts until the module replacement actually occurs, and requires
only one interrogation of each task.

The method proceeds as follows:

1.  Read in all modules being replaced.  Bind all references between
    the new copies of the modules;

2.  Replace all current references to the old modules/entry points
    with the new modules/entry points (when this is complete, all
    subsequent activations will reference the replacement copy of the
    program).

3.  Block new task creation;

    o   Create a list of all running tasks;

    o   Set up an interrupt for each task at the next breakpoint
        window; (A breakpoint window is a hardware enabled interrupt
        set by software external to the task being interrupted.)

4.  Allow new task creation; (At this point, any new tasks will
    reference the new copies of the replaced modules.)

    Refer to the Figure that illustrates the following steps:

5.  For each task in the list DO

        Wait for the interrupt; (shown in step (1))
         When the interrupt occurs DO
          Examine the invocation stack for references to the old
module;
             (If a module is active, its location will be stored in
the
             register save area for that activation:  see step (2))
             IF the entry point is in use DO
        Increment in use count for that entry point (in a separate;
               table); (as shown in step (4))
               Adjust the return point in the invocation stack entry
to
               return to a special trap point that will decrement the
               in-use count;
               Save the real return address from above;
               (as shown in item (3))
            END DO ("if the entry point is in use");
      END DO ("when the interrupt occurs");

As each return occurs from the old entry point, the in-use count is
decremented.  When the in-use count goes to zero, delete the space
used by the old copy.  This information is kept in the in-use module
list shown in step (4) in the Figure.  The k...