Method and apparatus for “Just-in-Time” dynamic...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000, C709S241000, C709S241000

Reexamination Certificate

active

06314566

ABSTRACT:

LIMITED COPYRIGHT WAIVER
A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever.
FIELD OF THE INVENTION
The invention relates generally to the loading and unloading of software library modules on a computer system and, more specifically, to a method and apparatus for dynamically loading and unloading software library modules as needed on a “just-in-time” basis.
BACKGROUND OF THE INVENTION
Generally, a software library module (herein called a “library”), a collection of software routines, is formed so that software routines can be used by a plurality of applications without rewriting the software routines for each application. There may be a plurality of libraries and each library can be either shared or non-shared. A shared library is one which can be used by more than one application. A non-shared library is one which is only used by the application that calls it. Traditionally, shared libraries are dynamically loaded during runtime, while non-shared libraries are linked into a program during creation of the program's executable file.
Some systems dynamically load libraries which are needed by applications or other software modules. For example, when loading a particular software application or module, herein denoted as “Software A” for illustrative purposes only, these systems check whether there are any libraries which will be needed in order to execute Software A. These systems then load those needed libraries into memory, load Software A into memory and begin execution of Software A. The libraries remain loaded in memory until execution of Software A completes. After the execution of Software A is complete, Software A and the loaded libraries are unloaded from memory.
The loaded libraries in the above example occupy memory space during the entire execution of Software A, regardless of whether Software A uses them all of the time. Even if Software A were to use a particular library for only a fraction of the execution time of Software A, that particular library would remain loaded in memory for the entire execution of Software A, resulting in an undesirable waste of memory resources.
Thus, depending on the amount of usage of a library by a particular application or module, the above approach undesirably results in inefficient use of memory resources. It is desirable therefore, to provide a mechanism which is capable of loading libraries in a manner which promotes efficient use of memory resources.
SUMMARY OF THE INVENTION
Briefly, in accordance with the present invention, this objective, among others, is achieved by a method and system which provides “just-in-time” dynamic loading and unloading of libraries. A library is loaded into memory just prior to the actual execution of a routine in that library and is unloaded from memory when the execution of the library routine is completed. Thus, a library occupies memory while in use during execution of a routine in that library and does not unnecessarily occupy memory during periods of non use when no routines in that library are executing.
To achieve “just-in-time” loading of libraries, the present invention extracts the entry points of the library and each library is split into two components, a library loader and a library implementation module. The library loader provides the same entry points as the library and contains code to drive the loading and unloading of the library implementation module which actually contains the code to implement the library call. Preferably, at the beginning of the execution of an application or other software module, the library loaders for libraries needed by that application or other software module, are loaded into memory and unloaded upon completion of that application or other software module. The library loaders control the loading and unloading of the library implementation modules, which contain the actual code which implements the library call, so that the library code itself is only in memory while in use during execution of the library call.
According to an aspect of the invention, a sequence of library calls to the same library is detected and managed so as to avoid unnecessary unloading/reloading of the same library and to avoid substantially degrading execution performance.
By deferring the loading of a library until just prior to when a routine in the library is actually executed by the application or other software module, the present invention advantageously provides more efficient use of memory resources. By only loading into memory at any given time libraries which are actually in use, the invention reduces the overall memory requirement to execute a particular application or other software module. This produces the further advantages of either being able to execute more software in the same amount of memory or in being able to execute the same software in less memory, ultimately reducing the cost of producing the device that runs the code module.
Although the invention is particularly advantageous in hardware/software systems with limited memory, the advantages of the invention can be realized in other hardware/software systems as well.
These and other features of the present inventions, and the advantages offered thereby, are explained in detail hereinafter with reference to specific embodiments illustrated in the accompanying drawings.


REFERENCES:
patent: 5410698 (1995-04-01), Danneels et al.
patent: 5414854 (1995-05-01), Heninger et al.
patent: 5561800 (1996-10-01), Sabatella
patent: 5708811 (1998-01-01), Arendt et al.
patent: 5838972 (1998-11-01), Matsuzuka et al.
patent: 5901315 (1999-05-01), Edwards et al.
patent: 5953534 (1999-09-01), Romer et al.
patent: 5960204 (1999-09-01), Yinger et al.
Gordon Letwin,Inside OS/2. Microsoft Press, 1988, pp. 89-116.
Ed Iacobucci,OS/2 Programmer's Guide. Osborne McGraw-Hill, 1988, pp. 131-138.
Inside Macintosh, vol. 1, pp. I-12, I-13, Addison-Wesley Publishing Company, Inc., 1985.
Inside Macintosh, vol. 11, pp. II-53—II-64, Addison-Wesley Publishing Company, 1985.
PR Newswire; “The Open Group Releases High Performance Java(TM) Byte Code Compiler for HP's HP-UX Operating System”. PR Newswire, p1203NEW034, Dec. 1997.*
IBM Corporation; “Mapping Imported Symbols at Link Time to Improve Load Time on the Office Systems/2 Operating System”. IBM Technical Disclosure Bulletin, pp. 539-540, Sep. 1995.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for “Just-in-Time” dynamic... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for “Just-in-Time” dynamic..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for “Just-in-Time” dynamic... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2589337

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.