Computer graphics processing and selective visual display system – Display driving control circuitry – Controlling the condition of display elements
Reexamination Certificate
2000-01-28
2003-04-01
Nguyen, Cao H. (Department: 2173)
Computer graphics processing and selective visual display system
Display driving control circuitry
Controlling the condition of display elements
C717S151000, C345S215000
Reexamination Certificate
active
06542167
ABSTRACT:
BACKGROUND INFORMATION
In computer systems, and in particular, as part of computer operating systems and software development environments, tools may be provided to allow the “loading” and “linking” of “software modules” (e.g., object files) for execution, for example, as part of an application program. Such software modules may include instructions and/or data structures, each positioned at particular locations in the software module. Instructions in software modules may make references to instructions or data structures both inside and outside of the software module (for example, in another software module). “Linking” involves “resolving” these references, so that an instruction making a reference will include the location of the instruction or data structure to be accessed.
References are typically indicated by “symbols” used to represent the desired location. The resolution process includes “defining” a symbol—assigning a value (e.g., a memory address) to the symbol by the software module that contains the locations to which access is to be allowed—and then substituting the symbol value for any references to the symbol used in other software modules.
In previous linking implementations, software modules needed to be linked in an order such that the symbol definition was established before the symbol was referenced by the software module being linked. For example, if a symbol “A1B2C3” were referenced in a particular software module, the symbol “A1B2C3” must have been defined by a previously loaded software module, so that a value for the symbol would be known by the linker. Where the symbol was not previously defined, the linker could abort the linking process, or could simply skip the resolution step for the particular symbol, leaving a “dangling” reference in the software module being linked—the instructions using the symbol reference would contain an undefined value for the memory location to access. Dangling references may cause abnormal execution (since they are undefined), and may cause corruption of other parts of the system.
Moreover, once a set of software modules has been completely linked, it heretofore has been extremely difficult to “unlink” one or more of the set of software modules without compromising the integrity of the application using the software module or the system itself. Once software modules are linked, the linker generally discards all information about the linking process in order to conserve memory (information that is not necessary during execution), including any symbols used during linking. Thus, removing a particular software module from a linked set of software modules can result in dangling references by instructions to the (now removed) software module, resulting in the same problems discussed above.
SUMMARY OF THE INVENTION
An exemplary embodiment according to the present invention implements a method that includes the steps of locating a symbol reference to a symbol in a first software module, the first software module including at least one instruction using the symbol reference, and parsing a symbol table to locate an entry for the symbol, the entry for the symbol including a symbol value. The method also includes creating the entry for the symbol in the symbol table when the parsing does not locate the entry for the symbol in the symbol table, the entry for the symbol including a pending indication and a default value as the symbol value, and changing the at least one instruction using the symbol reference based on the default value.
The exemplary embodiment according to the present invention also implements a method that includes the steps of unloading a software module from a set of linked software modules and parsing a symbol table to locate at least one symbol table entry associated with a symbol defined by the software module, the at least one symbol table entry including a symbol value and a reference data structure of a number of locations using the symbol. The method also includes changing the symbol value to a default value, including in the at least one symbol table entry a pending indication, and changing the number of locations using the symbol based on the default value.
The exemplary embodiment according to the present invention also implements a system that includes a first computing environment including a linker and a number of symbol table entries, each of the number of symbol table entries corresponding to a symbol and including a symbol value and an indicator of whether the symbol is pending. The linker is coupled to the symbol table to use the symbol table to link a number of software modules loaded into a memory space together.
REFERENCES:
patent: 5247679 (1993-09-01), Arun
patent: 5303392 (1994-04-01), Carney et al.
patent: 5734822 (1998-03-01), Houha et al.
patent: 5835743 (1998-11-01), Zucker
patent: 5991871 (1999-11-01), Zucker
patent: 6202205 (2001-03-01), Saboff et al.
patent: 6314566 (2001-11-01), Arrouye et al.
patent: 21 50 506 (1973-05-01), None
patent: 0 620 522 (1994-10-01), None
R. E. Bryant,. et al., Feb. 13, 2002,* 15-213 Handout #3: Linking, pp. 1-42.
“The Design and Implementation of the Clouds Distributed Operating System,” Dasgupta (Georgia Tech), Computing Systems, Winter 1990.
“A Micro Kernal Architecture for Next Generation Processors, ”Okamoto (Toshiba Corp.), USENIX, 1992.
“Sharing and Protection in a Single Address Space Operating System (Opal),” Chase (University of Washington), 1995.
Jeff Bonwick, The Slab Allocator: An Object-Caching Kernel Memory Allocator, 1994, 12 pages, Sun Microsystems.
Draves et al., The Rialto Virtual Memory System, Feb. 15, 1997, 14 pages, Microsoft Research.
Jones et al., An Overview of the Rialto Real-Time Architecture, Jul. 1996, 9 pages, Microsoft Research.
Mitchell et al., An Overview of the Spring System, 1994, 10 pages, Sun microsystems Inc.
Khalidi et al., The Spring Virtual Memory System, Feb. 1993, 25 pages, Sun microsystems Laboratories, Inc.
Hamilton et al., Subcontract: A Flexible Base for Distributed Progamming, 1993, 11 pages, Sun Microsystems Laboratories, Inc.
Radia et al., Persistence in the Spring System, Dec. 1993, 12 pages, Sun Microsystems, Inc.
Radia et al., The Spring Name Service, Nov. 1993, 27 pages, Sun Microsystems Laboratories, Inc.
Radia et al., Naming Policies in the Spring System, 11 pages, Sun Microsystems Laboratories, Inc.
Hamilton et al., The Spring Nucleus A MicroKernel for Objects, Jul. 1993, 14 pages, Sun Microsystems Laboratories, Inc.
Nelson et al., High Performance Dynamic Linking Through Caching, 1993, 14 pages, Sun Microsystems Laboratories, Inc.
Reed et al., Nemesis The Kernel, Overview, May 20, 1997, 56 pages.
Steven Hand, ESPRIT LTR 21917 (Pegasus II), Deliverable 2.3.1: Virtual Address Management: Deliverable 2.3.2: Virtual Memory Management, Jul. 1997, 16 pages, University of Cambridge.
Timothy Roscoe, Linkage in the Nemesis Single Address Space Operating System, May 1994, 8 pages, Computer Laboratory, University of Cambridge.
Richard Black, ESPRIT LTR 21917 (Pegasus II), Deliverable 2.1.4., ARM Port Report, Jun. 1997, 13 pages, University of Cambridge, University of Glasgow.
Kempf et al., Cross-address Space Dynamic Linking, Sep. 1992, 12 pages, Sun Microsystems Laboratories, Inc.
Heiser et al., Implementation and Performance of the Mungi Single-Address-Space Operating System, Jun. 1997, 23 pages, IBM T. J. Watson, Research Center.
Vochteloo et al., Protection Domain Extensions in Mungi, Oct. 1996, 5 pages, School of Computer Science and Engineering, The University of New South Wales.
Heiser et al., Resource Management in the Mungi Single-Address-Space Operating Systems, Aug. 1997, 15 pages, School of Computer Science and Engineering.
VxWorks® Programmer's Guide 5.3.1, Edition 1, Mar. 4, 1997 Wind River Systems, Inc., 648 pp.
Darlet Pierre-Alain
Preyssler Thierry C.
Wilner David N.
Kenyon & Kenyon
Nguyen Cao H.
Wind River Systems, Inc.
LandOfFree
System and method for flexible software linking does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System and method for flexible software linking, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System and method for flexible software linking will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3086660