Data processing: structural design – modeling – simulation – and em – Emulation – Compatibility emulation
Reexamination Certificate
1997-07-31
2002-05-07
Stamber, Eric W. (Department: 2123)
Data processing: structural design, modeling, simulation, and em
Emulation
Compatibility emulation
C703S026000, C717S152000, C717S152000
Reexamination Certificate
active
06385567
ABSTRACT:
FIELD OF THE INVENTION
The present invention relates to electronic data processing, and more specifically concerns the loading of software modules for programs written for different processing platforms.
BACKGROUND OF THE INVENTION
Frequently, a computer application program written for one digital processor, operating system, or other platform must be executed on another platform. This requires translation of the program's instruction codes, data formats, application-program interfaces (APIs), and possibly other characteristics as well. A conventional program variously known as an emulator, simulator, translator, or interpreter translates the necessary application-program characteristics after the operating system loads the application.
Furthermore, few present programs are standalone entities. An application program almost always performs low-level functions by calling program code located in separate modules, sometimes known as dynamic link libraries (DLLs). These modules in turn may call other modules for performing lower-level functions. Because many application programs may require the same low-level functions, DLLs and similar modules are often shared among a group of applications. Applications and modules specify the modules they require in internally accessible load lists.
The growing use of emulators and other multiplatform environments results in related groups of modules, such as a first group for the platform being emulated, and a second group for the native platform upon which the emulation occurs. When an operating-system loader loads an application written for the first (emulated) platform, it must sometimes load modules for the second (native) platform rather than the first-platform modules specified in the application's load list.
Some multiple-platform systems have employed multiple loaders, one for the emulated platform and another for the native platform. Each loader recognizes only the module names in its own group, to avoid conflicts. However, this approach is error-prone. First, the semantics of the two loaders may differ. Secondly, DLL modules have a reference count indicating when they can be unloaded from memory; keeping these counts synchronized between two or more loaders ranges from very difficult to impossible.
In addition, multiplatform programs may employ a second type of DLL module, sometimes called a “thank module.” Thank modules come in pairs (or triples, etc.); one module of the pair implements a set of APIs for the first platform, while the second implements corresponding APIs for the second platform. An application-program version written for one platform loads the first module of the pair, while the version for the other platform must load the second module of the same pair. In the past, special handling has been required to load the proper one of the think modules for the application version being processed.
SUMMARY OF THE INVENTION
A software-module loader loads modules specified by an application program which are written for different platforms. The loader uses a name list having entries each containing the name of a module for one platform and the name of a corresponding module for another platform. As the loader sequences through a load list of modules, it checks the name of each module against the name list. If the name list specifies a corresponding second-platform module, then the loader loads that module instead of the one in the load list. In this way, the same loader handles modules from both platforms, and avoids requiring coordination with a separate loader for each platform. The loader keeps a reference count of loaded modules. If the same module is again encountered in the load list, its count is merely increased, instead of loading it again. Because only one reference count is used for modules of all platforms, the loader avoids system crashes which may occur when multiple counts might unload a module before all programs which use it have completed execution.
The loader may also handle a special type of translation or “think” module by recognizing the special type and bypassing a test which would otherwise prevent it from loading. This permits modules of different types to be loaded by the same loader, again simplifying reference counting.
Other features and advantages, as well as modifications within the spirit of the invention, will appear to those skilled in the art from the following detailed description.
REFERENCES:
patent: 5247681 (1993-09-01), Janis et al.
patent: 5708811 (1998-01-01), Arendt et al.
patent: 5842017 (1998-11-01), Hookway et al.
patent: 5930509 (1999-07-01), Yates et al.
Pietrek, “Windows 95 System Programming Secrets”, ISBN 1-56884-318-6, pp. 685-703, Nov. 1995.*
Hookway, “Digital FX!32 Running 32-Bit ×86 Applications on Alpha NT”, paper appearing in Compcon '97 Proceedings of the IEEE, pp. 37-42, Feb. 1997.*
Selzter, “Four Ways to Fake an X86”, PC Week, Nov. 21, 1994, pp. 93-95.*
Change Log file for the Wine Project, http://www.winehq.com/source/documentation/ChangeLog.OLD.*
“IS embraces NT 4.0 beta sight unseen”, InfoWorld, vol. 18 Issue 4, pp. 1 and 20, Jan. 1996.*
“NT 4.0 looks good in beta version”, Computerworld, vol. 30 Issue 11, pp. 45 and 52, Mar. 1996.*
Thompson, “An Alpha in PC Clothing”, Byte Magazine, pp. 195-196, Feb. 1996.
Gershony Ori
Hastings David E.
Lew Jonathan C.
Broda Samuel
Lee & Hayes PLLC
Microsoft Corporation
Stamber Eric W.
LandOfFree
Program-module substitution in a program loader for... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Program-module substitution in a program loader for..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Program-module substitution in a program loader for... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2877794