WO2014146508A1 - 一种兼容方法及装置 - Google Patents

一种兼容方法及装置 Download PDF

Info

Publication number
WO2014146508A1
WO2014146508A1 PCT/CN2014/070961 CN2014070961W WO2014146508A1 WO 2014146508 A1 WO2014146508 A1 WO 2014146508A1 CN 2014070961 W CN2014070961 W CN 2014070961W WO 2014146508 A1 WO2014146508 A1 WO 2014146508A1
Authority
WO
WIPO (PCT)
Prior art keywords
target program
image
host computer
operating system
remapping
Prior art date
Application number
PCT/CN2014/070961
Other languages
English (en)
French (fr)
Inventor
谭崇康
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP14767779.3A priority Critical patent/EP2977897A4/en
Publication of WO2014146508A1 publication Critical patent/WO2014146508A1/zh
Priority to US14/858,593 priority patent/US20160011890A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Definitions

  • the present invention relates to the field of computers, and in particular, to a compatible method and apparatus.
  • ABI Applicable Binary Interface
  • System-level ABI-compliant technology refers to the use of virtual machines in the host operating system to simulate a virtual environment that can be executed by the target program; process-level ABI-compliant technology refers to the use of dynamic linking in the host operating system to simulate a A virtual environment for the target program to execute.
  • the ABI-compatible technology in the prior art adds a corresponding binary environment for the target program execution in the host operating system according to the operating system of the target program, so that the target program can be executed in the binary environment simulated by the host operating system, thereby Implement the compatibility of the target program in the host operating system.
  • Embodiments of the present invention provide a compatible method and apparatus, which can support ABI compatibility of multiple operating systems and support existing ABI compatible technologies, and facilitates extending various ABI compatible technologies in the future.
  • the embodiment of the present invention adopts the following technical solutions:
  • a compatible method including:
  • the first target program is a locally registered target program, creating a first process for the first target program
  • the remapping table indicating a correspondence between the first target program and the first target program after remapping
  • the method for remapping the first target program specifically includes:
  • the re-mapping the first target program is loaded according to the remapping table
  • the image of the first target program after the remapping is generated in the local memory corresponding to the first process includes:
  • the pair of the image Refactoring includes:
  • the method for determining the redirection interface of the reconstructed image specifically includes: determining a redirection target of the reconstructed image, where the redirection target is locally corresponding to the reconstructed image interface;
  • a creating unit configured to create a first process for the first target program if the first target program is a locally registered target program
  • mapping unit configured to remap the first target program
  • a generating unit configured to generate a remapping table, where the remapping table indicates a correspondence between the first target and the remapped first target program;
  • a loading unit configured to load the remapped first target program into a local memory corresponding to the first process according to the remapping table, to generate an image of the remapped first target program ;
  • a processing unit configured to reconstruct the image
  • the processing unit is further configured to determine a redirection interface of the reconstructed image to perform the first process.
  • the mapping unit is specifically configured to perform segment reorganization and/or offset calculation on the first target program.
  • the loading unit is specifically configured to: after the remapping according to the remapping table The first target program is loaded into the local memory, and the remapped first target program is relocated according to the symbol table and the relocation table to generate the image.
  • the processing unit is used by Perform image sharing reconstruction and/or binary translation reconstruction on the image.
  • the processing unit is specific a redirection target for determining the reconstructed image, and performing the redirection target to determine a redirection interface of the reconstructed image, the redirection target being local and reconfigured The interface corresponding to the image.
  • the loading unit is further In the process of executing the first process by the processing unit, if the image is missing, reloading the remapped first target program into the local memory according to the remapping table To generate the image.
  • An embodiment of the present invention provides a compatibility method and apparatus.
  • the first target program is a locally registered target program
  • a first process is created for the first target program, and the first target program is remapped to generate a weight.
  • a mapping table indicates a correspondence between the first target program and the remapped first target program, and then loading the remapped first target program to the local memory corresponding to the first process according to the remapping table And generating an image of the remapped first target program, and reconstructing the image, and determining a redirection interface of the reconstructed image to perform the first process.
  • the above compatible method can be used to support the first program.
  • a target program is compatible with the operating system of the host computer, and can support AB I compatibility of various operating systems and existing AB I compatible technologies, and is convenient for extending various ABI compatible technologies in the future.
  • FIG. 1 is a flowchart 1 of a method for a compatible method according to an embodiment of the present invention
  • FIG. 2 is a flowchart 2 of a method for compiling a method according to an embodiment of the present invention
  • FIG. 4 is a schematic structural diagram 2 of a compatible device according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of an AB I compatible interface according to an embodiment of the present invention
  • FIG. 6 is a schematic structural diagram of a compatible state machine according to an embodiment of the present invention.
  • an embodiment of the present invention provides a compatible method, including:
  • the host computer creates a first process for the first target program.
  • the first target program is a target program in a third-party operating system that is different from the operating system installed on the host computer. Since the operating system of the host computer is a different operating system from the third-party operating system, in order to enable the first target program to be executed in the operating system of the host computer, the operating system of the host computer needs to implement the first target program. compatible.
  • the host computer needs to determine whether the first target program is a local (ie, the host computer's operating system) registered target program, if a target program is the host computer The operating system has registered the target program, and the host computer creates the first process for the first target program.
  • a "process” is the basis of an operating system structure; it is a program that is executing; it is an instance of a program that is running on a computer; an entity that can be assigned to a processor and executed by the processor; or a single order Execution shows the active unit described by a current state and a set of related system resources.
  • the compatibility method provided by the embodiment of the present invention may be an ABI compatible method, in which only the target program registered by the operating system of the host computer can be compatible in the operating system of the host computer, that is, Only third-party operating systems that successfully register ABI-compliant components of third-party operating systems in the host computer's operating system are compatible with the host computer's operating system.
  • the host computer remapping the first target program.
  • the host computer After the host computer creates the first process for the first target program, the host computer remapping the first target program. Among them, how the host computer remapping the first target program will be described in detail in subsequent embodiments.
  • the host computer maps the target program in the third-party operating system to The target program in the operating system of the host computer, such that the organizational structure of the target program in the third-party operating system is the same as the organizational structure of the target program in the operating system of the host computer.
  • the host computer may remap the first target program and generate a corresponding remapping table, that is, the host computer remapping the first target program.
  • the result is: the organizational structure of the first target program is the same as the organizational structure of the target program in the operating system of the host computer, and the host computer generates a remapping table corresponding to the remapping process, the remapping table indicating before the remapping.
  • the host computer adds the remapped first target program according to the remapping table. Loaded into the local memory corresponding to the first process to generate an image of the remapped first target program.
  • the host computer loads the remapping first target program into the local memory corresponding to the first process, that is, in the memory of the host computer, according to the generated remapping table, thereby generating a first target program corresponding to the remapping. Image.
  • the target program is a binary file saved on the hard disk; loading the target program in the hard disk into the local memory is called an image.
  • the host computer reconstructs the image.
  • the host computer After the host computer remapping (ie, pre-processing) the first target program, the first target program loaded into the local memory corresponding to the first process, that is, the image of the first target program, is further processed, that is, the host The computer needs to reconstruct the image of the first target program.
  • the process of reconstructing the image of the first target program by the host computer is to adjust the quality of the first target program by adjusting the program code of the first target program without changing the function of the first target program. Improvement, so that the design pattern and architecture of the first target program are more reasonable, thereby improving the scalability and maintainability of the first target program.
  • the host computer determines a redirection interface of the reconstructed image to execute the first process.
  • the first process is started. During the execution of the first process, if the redirect operation occurs, the host computer determines the redirected interface of the reconstructed image. To continue the first process.
  • redirection is the re-determination of various directions of a network or system by a variety of methods and to a location indicated by that direction.
  • the host computer in the process of executing the first process, if the host computer performs the redirection operation, the host computer enters the redirect interface undetermined state, and then the host computer The computer will determine an interface corresponding to the image of the first target program locally (that is, the operating system of the host computer), and then go to execute the interface, and then the host computer will enter the redirected interface to determine the state, that is, the host The computer has determined the redirected interface of the refactored image to continue executing the first process.
  • the host computer executes the interface, the host computer returns to the first process where the redirect operation continues.
  • the host computer determines that the image is called in the image of the first target program in the host computer system.
  • the function has the same function, and goes to execute the function, so that the host computer can continue to execute the first process. After the host computer executes the function, the host computer will return to the address after the function call to continue the first process. .
  • the embodiment of the present invention provides a compatibility method, if the first target program is a locally registered target program, a first process is created for the first target program, and the first target program is remapped to generate a remapping table. And the remapping table indicates a correspondence between the first target program and the first target program after the remapping, and then loading the remapped first target program into the local memory corresponding to the first process according to the remapping table, A first image of the remapped target program is generated, and the image is reconstructed, and a redirection interface of the reconstructed image is determined, thereby executing the first process.
  • a target program is compatible with the operating system of the host computer, and can support ABI compatibility of various operating systems and existing ABI compatible technologies, and facilitates the expansion of various ABI compatible technologies in the future.
  • the host computer creates a first process for the first target program.
  • the first target program is a target program in a third-party operating system different from the operating system installed on the host computer. Due to the host computer's operating system and third-party operating system For different operating systems, therefore, in order to enable the first target program to be executed in the operating system of the host computer, it is necessary to implement compatibility of the host computer's operating system with the first target program.
  • the host computer first needs to determine whether the first target program is a local (ie, the host computer's operating system) registered target program, if the first The target program is the target program registered by the host computer's operating system, and the host computer creates the first process for the first target program.
  • the compatibility method provided by the embodiment of the present invention may be an ABI compatible method, in which only the target program registered by the operating system of the host computer can be compatible in the operating system of the host computer, that is, Only third-party operating systems that successfully register ABI-compliant components of third-party operating systems in the host computer's operating system are compatible with the host computer's operating system.
  • the host computer maps the target program in the third-party operating system to The target program in the operating system of the host computer, such that the organizational structure of the target program in the third-party operating system is the same as the organizational structure of the target program in the operating system of the host computer.
  • the method for the remapping of the first target program by the host computer may specifically include:
  • the host computer performs segment reorganization and/or offset calculation on the first target program. Specifically, since the target program in the host computer operating system and the target program in the third-party operating system may have different organizational structures, the host computer may need to be in the process of remapping the first target program.
  • Each program code segment in an object program reassigns the storage address, that is, segment recombination of each program code segment in the first target program, and the host address of each program code segment after the segment reorganization is changed, therefore, the host computer It is also necessary to calculate the offset address of each program code segment after the segment reorganization, so that the host computer can accurately execute each program code segment with the adjusted storage address.
  • the host computer when the host computer remapping the first target program, it may only need to perform segment reorganization on each program code segment in the first target program; Deviation calculation is performed for each program code segment in the target program; it is also possible to perform segment reorganization for each program code segment in the first target program, and offset calculation for each program code segment in the first target program.
  • the actual remapping process can be adaptively adjusted according to the requirements of different operating systems, and the present invention is not limited.
  • the host computer generates a remapping table, and the remapping table indicates a correspondence between the first target program and the first target program after the remapping.
  • the host computer may remap the first target program and generate a corresponding remapping table, that is, the host computer remapping the first target program.
  • the organizational structure of the first target program is the same as the organizational structure of the target program in the operating system of the host computer, and the host computer generates a remapping table corresponding to the remapping process, that is, the remapping table indicates The correspondence between the organizational structure of the first target program before remapping and the organizational structure of the first target program after remapping.
  • the host computer acquires a symbol table and a relocation table included in the first target program.
  • the host computer obtains the corresponding symbol table and the relocation table from the first target program.
  • the "symbol table” is a table that needs to continuously collect, record, and use information about the types and characteristics of some syntax symbols in the source program during source program compilation. Such as constant table, variable name table, array name table, process name table, label table, etc., are collectively referred to as symbol tables.
  • the quality of the symbol table organization, construction and management will directly affect the efficiency of the compilation system.
  • the "relocation table” is a correspondence between the logical address of the target program and the physical address of the target program in the computer memory generated when the computer relocates the target program during the target program linking process.
  • "Relocation” is the process of transforming the logical address space of the target program into the physical address space of the target program in the computer's memory.
  • symbol table and the relocation table provided in the embodiment of the present invention are respectively generated during the source program compilation process and during the target program link process, and are included in the first In the target program.
  • the host computer loads the remapped first target program into the local memory corresponding to the first process according to the remapping table, and relocates the remapped first target program according to the symbol table and the relocation table. To generate an image.
  • the host computer loads the remapping first target program into the local memory corresponding to the first process, that is, in the memory of the host computer according to the generated remapping table, and according to the symbol table obtained from the first target program. And relocating the table, relocating the remapped first target program to generate an image corresponding to the first target program.
  • the host computer relocates the variables in the first target program based on the symbol table and the relocation table to generate an executable image corresponding to the first target program.
  • the storage address of the variable in the first target program before the relocation is a logical address
  • the storage address of the variable in the first target program after the relocation is the physical memory in the computer memory. address.
  • process is the basis of the operating system structure; is an executing program; is an instance of a program running on a computer; is an entity that can be assigned to a processor and executed by the processor; or is in a single order The execution of the current state and a set of related system resources described by the active unit.
  • the first process created in S201 is the management structure of the process, that is, the creation
  • the first process is a program architecture of the process, and only after S205, the first target program to be remapped is loaded into the memory of the host computer corresponding to the first process, then the first process is running in the host computer memory.
  • An example of a program in is an example of a program in .
  • the host computer After the host computer remaps (ie, preprocesses) the first target program, the first target program loaded into the local memory corresponding to the first process is further processed, that is, the host computer processes the first target program.
  • the image is refactored.
  • the process of reconstructing the image of the first target program by the host computer is to adjust the program code of the first target program by not changing the function of the first target program.
  • the quality and performance of the first target program are improved, so that the design pattern and architecture of the first target program are more reasonable, thereby improving the scalability and maintainability of the first target program.
  • the host computer needs to consider the requirements of image sharing and binary translation when reconstructing the image of the first target program, that is, the host computer may need to perform image sharing reconstruction on the image of the first target program. / or binary translation refactoring.
  • the image sharing process requires a piece of program code or a piece of data shared by two or more target programs in the computer memory to be directed to a fixed location, the image of the first target program and other
  • the host computer needs to reconstruct the image of the first target program, that is, image sharing reconstruction.
  • the host computer needs to perform binary translation on the image of the first target program, and during the binary translation process, the host computer needs to perform image mapping on the first target program. Refactoring to re-layout the image, ie binary translation refactoring.
  • the host computer reconstructs the image of the first target program in a different manner, and the host computer may perform image sharing reconstruction on the image of the first target program, or may be the first
  • the image of the target program is reconstructed by binary translation.
  • the image of the first target program can be reconstructed by image sharing and reconstructed by binary translation.
  • the specific reconstruction method can be adapted according to the actual needs of different operating systems. Adjustments, the invention is not limited.
  • the host computer performs a redirection target to determine a redirection interface of the reconstructed image, thereby executing the first process.
  • the host computer if the host computer executes the redirect target, the host computer returns the location of the redirect operation in the first process to continue the first process.
  • the host computer determines that the image is called in the image of the first target program in the host computer system.
  • the function has the same function, and goes to execute the function, so that the host computer can continue to execute the first process. After the host computer executes the function, the host computer will return to the address after the function call to continue the first process. .
  • the host computer reloads the remapped first target program into the first process according to the remapping table to generate an image. Then re-execute the first process.
  • the host computer terminates the first process and can be any of the following:
  • the above (1) is the normal end after the execution of the first process, and (2) and (3) are both abnormal ends when an exception occurs during the execution of the first process. Specifically, if the first target program in S201 is not the target program registered by the operating system of the host computer, that is, the first target program cannot be compatible in the operating system of the host computer, the host computer directly terminates The compatibility process for this first target program.
  • a target program is compatible with the operating system of the host computer, and can support ABI compatibility of various operating systems and existing ABI compatible technologies, and facilitates the expansion of various ABI compatible technologies in the future.
  • an embodiment of the present invention provides a compatible device 1 , including:
  • the creating unit 10 is configured to create a first process for the first target program if the first target program is a locally registered target program.
  • the mapping unit 11 is configured to remap the first target program.
  • the generating unit 12 is configured to generate a remapping table, where the remapping table indicates a correspondence between the first target and the remapped first target program.
  • a loading unit 13 configured to load the remapped first target program into a local memory corresponding to the first process according to the remapping table, to generate the remapped first target program Image.
  • the processing unit 14 is configured to reconstruct the image.
  • the processing unit 14 is further configured to determine a redirection interface of the reconstructed image to perform the first process.
  • mapping unit 1 1 is specifically configured to perform segment reorganization and/or offset calculation on the first target program.
  • processing unit 14 is specifically configured to acquire a symbol table and a relocation table included in the first target program.
  • the loading unit 13 is configured to load the remapped first target program into the local memory according to the remapping table, and according to the symbol table and the relocation table, The first target program after the re-mapping is relocated to generate the image.
  • processing unit 14 is configured to perform image sharing reconstruction and/or binary translation reconstruction on the image.
  • the loading unit 13 is further configured to: when the processing unit 14 executes the first process, if the image is missing, re-mapping the remapping table according to the remapping table The first target program is loaded into the local memory to generate the image.
  • the embodiment of the present invention provides a compatible device. If the first target program is a locally registered target program, the compatible device creates a first process for the first target program, and remaps the first target program to generate a remapping. a table, the remapping table indicates a correspondence between the first target program and the remapped first target program, and then the compatible device loads the remapped first target program to the local corresponding to the first process according to the remapping table In-memory to generate an image of the remapped first target program, and to reconstruct the image, and The redirected interface of the reconstructed image is executed to execute the first process.
  • the present invention can be executed by the above compatible device.
  • the compatible method provided by the embodiment supports the compatibility of the first target program in the operating system of the host computer, and can support ABI compatibility of various operating systems and existing ABI compatible technologies, and is convenient for extending various ABI compatible in the future. technology.
  • an embodiment of the present invention provides a compatible device 1 including a processor 15 and a memory 16, wherein
  • the processor 15 is a control and processing center of the compatible device 1, controls the compatible device to perform corresponding operations, and implements compatible devices by running a software program stored in the memory 16, and calling and processing the data stored in the memory 16. Other functions.
  • the memory 16 can be used to store software programs and data such that the processor 15 can operate the software programs stored in the memory 16 to implement corresponding operations and other functions of the compatible devices.
  • the processor 15 is configured to: if the first target program is a locally registered target program, create a first process for the first target program, and store the first process in the memory 16, for the first
  • the target program performs remapping, and generates a remapping table, and stores the remapping table in the memory 16, the remapping table indicating between the first target and the remapped first target program Corresponding relationship, according to the remapping table, loading the remapped first target program into a local memory corresponding to the first process, to generate an image of the remapped first target program, and Reconstructing the image to determine a redirection interface of the reconstructed image to perform the first process.
  • processor 15 is specifically configured to perform segment recombination and/or offset calculation on the first target program.
  • the processor 15 is specifically configured to acquire a symbol table and a relocation table included in the first target program, and load the remapped first target program according to the remapping table to Local memory corresponding to the first process in the memory 16 And relocating the remapped first target program according to the symbol table and the relocation table to generate the image.
  • the processor 15 is specifically configured to determine a redirection target of the image in the reconstructed memory 16 and execute the redirection target to determine a weight of the reconstructed image. And a redirecting target, where the redirecting target is an interface corresponding to the reconstructed image in the local.
  • the processor 15 is further configured to: if the image in the memory 15 is missing in the process of executing the first process, re-mapping the remapping table according to the remapping table The first target program is loaded into the local memory corresponding to the first process in the memory 16 to generate the image.
  • the embodiment of the present invention provides a compatible device. If the first target program is a locally registered target program, the compatible device creates a first process for the first target program, and remaps the first target program to generate a remapping. a table, the remapping table indicates a correspondence between the first target program and the remapped first target program, and then the compatible device loads the remapped first target program to the local corresponding to the first process according to the remapping table In-memory, to generate an image of the remapped first target program, and to reconstruct the image, and determine a redirection interface of the reconstructed image, thereby executing the first process.
  • the present invention can be executed by the above compatible device.
  • the compatible method provided by the embodiment supports the compatibility of the first target program in the operating system of the host computer, and can support ABI compatibility of various operating systems and existing ABI compatible technologies, and is convenient for extending various ABI compatible in the future. technology.
  • the ABI-compliant component registration queue 21 is a structure for registering compatible components of a third-party operating system, and the ABI-compatible component registration queue 21 stores ABI-compatible components corresponding to respective compatible third-party operating systems, and the compatible components It is determined by the compatible state machine 20.
  • the initialization program 11 is responsible for starting the compatibility state machine 20, that is, the initialization program 22 first checks whether the first target program is the target program registered by the operating system of the host computer, and if so, the first target program can be implemented in the operating system of the host computer. Compatible, the initialization program 11 starts the compatible state machine 20.
  • the operating system of the host computer will enter the unrecognized state of the first target program.
  • A1 First target program identification.
  • the host computer running the initialization program traverses the target program identification actions of each registered ABI component to identify the first target program.
  • the host computer's operating system will enter the first process uncreated state.
  • A2 The first process is created.
  • the host computer creates the first target program. The first process.
  • State 3 The operating system of the host computer enters the state in which the first process has been created.
  • A3 Image preprocessing.
  • the host computer remapping the first target program.
  • the host computer loads the remapped first target program into the host computer memory corresponding to the first process according to the remapping relationship between the first target program of the third-party operating system and the target program of the operating system of the host computer, In this process, the host computer needs to perform a redirection operation on the first target program, wherein the first target program loaded into the memory is referred to as an image.
  • the host computer executes the first process.
  • the host computer's operating system enters the execution of the first process state.
  • A7 Detect the redirect interface.
  • the operating system of the host computer enters the redirected interface undetermined state.
  • the host computer determines the redirect target and proceeds to execute the target program in the operating system of the host computer corresponding to the first target program of the third-party operating system.
  • the host computer continues to execute the first process described above.
  • the host computer terminates running the first target program.
  • A12 Abnormal end one.
  • the host computer terminates the first process.
  • the ABI compatible interface 2 corresponds to a complete compatibility process of the compatible state machine 20, that is, the ABI compatible interface 2 corresponds to the compatible method provided by the embodiment of the present invention.
  • A8 determines the redirect interface
  • the ABI-compatible interface 2 shown in Table 1 is equivalent to providing a structure. Each member of the structure is a corresponding function. Each third-party operating system that needs to be compatible with the operating system of the host computer needs to implement a corresponding one. The structure is registered and registered in the ABI Compatible Component Registration Queue 21. In the compatibility process, the compatible state machine 20 implements various compatibility processes by executing functions provided by the ABI compatible components provided by the third-party operating system, thereby supporting the first target program to run in the operating system of the host computer, thereby supporting and implementing the first A target program is compatible with the operating system of the host computer.
  • the host computer's operating system provides a space for the ABI-compatible interface to hold individual ABI-compliant components.
  • the host computer's operating system provides a registration function module to support third-party operating systems to register their corresponding ABI-compliant components.
  • the instruction adds the information of the ABI-compliant component of the third-party operating system to the ABI-compliant component registration queue to complete the registration of the ABI-compliant component of the third-party operating system in the operating system of the host computer.
  • the operating system of the host computer needs to provide a compatible API (Application Programming Interface) and compatible for the first target program. Dynamic link library and compatible first target program processing flow. Therefore, the host In the process of executing the ABI compatible interface to complete compatibility with the first target program, the operating system of the host computer first needs to import necessary files such as a dynamic link library corresponding to the third-party operating system into the system, and The operating system of the host computer is registered with the ABI-compliant component of the third-party operating system.
  • a compatible API Application Programming Interface
  • the implementation process of the compatibility method provided by the embodiment of the present invention is described below by taking the cross-version compatibility of the Linux operating system and the ABI of the third-party operating system compatible Linux operating system as an example.
  • the main reason for the binary incompatibility between different versions of the Linux operating system is that the high-level version of the Linux operating system changes the API and data structure of the Linux operating system for some reason, resulting in the first goal in the original low-level Linux operating system. Programs cannot be run directly from higher versions of the Linux operating system. As shown in Table 2, when the Linux operating system is cross-version compatible, the ABI compatible interface required by the compatible method provided by the embodiment of the present invention is used.
  • the lower version of the Linux operating system can be bulky in a compatible version of the ABI compatible interface in the high version of the Linux operating system, that is, many operations in the ABI compatible interface can be empty, including Executable file recognition and executable file loading and more.
  • A9 which is the operation of the redirected interface, needs to be changed in the corresponding ABI-compatible interface.
  • the reason why the lower version of the Linux operating system is incompatible with the higher version of the Linux operating system is that the API of the Linux operating system is changed. Therefore, it is only required to provide the previous lower version of the Linux operating system in the higher version of the Linux operating system.
  • the API and in the dynamic linking process, redirect the call of the first target program running in the high version of the Linux operating system to the API of the previous low version of the Linux operating system to complete the low version of the Linux operating system.
  • the first target program runs directly in the higher version of the Linux operating system, enabling compatibility between the higher version of the Linux operating system and the lower version of the Linux operating system.
  • the ABI of other operating systems compatible with the Linux operating system is to implement an API compatible with the Linux operating system in other operating systems.
  • the corresponding ABI compatible interface is shown in Table 1.
  • the implementation of the ABI compatible with the Linux operating system in other operating systems includes:
  • the first target program in step (1) is the target program in the Linux operating system.
  • the host computer creates a first process for the first target program in the host computer's operating system.
  • the host computer remapping the first target program and generating a remapping table for indicating a mapping relationship between the first target program and the target program in the host computer's operating system.
  • the host computer loads the first target program Up to the host computer memory corresponding to the first process, the first target program is relocated at the same time to generate an image of the remapped first target program.
  • the above step (5) can be omitted; conversely, if there is image sharing between the above image and other images, binary translation of the above image is required.
  • the above step (5) is omitted, it cannot be omitted.
  • the host computer needs to map the function call in the first target program in the Linux operating system to the API corresponding to the Linux operating system implemented in the operating system of the host computer, so that the first process can be successfully executed.
  • steps (1) through (6) complete the ABI process for other operating systems compatible with the Linux operating system.
  • the ABI compatible interface running in the compatible device provided by the embodiment of the present invention is compatible with the existing process level ABI compatible technology, and is convenient for future expansion of the ABI of different operating systems.
  • the host computer's operating system can easily extend the ABI's execution environment for third-party operating systems, as well as greatly adapt to existing target programs while reducing modifications to the host computer's operating system.
  • the ABI compatible component registration queue provided by the embodiment of the present invention is configured to enable a third-party operating system to register its corresponding ABI compatible component in an operating system of the host computer.
  • the third-party operating system only needs to implement its corresponding ABI-compliant component to be compatible with the target program in the third-party operating system in the host computer's operating system.
  • the disclosed system, apparatus, and method may be implemented in other manners.
  • the device embodiments described above are merely illustrative.
  • the division of the modules or units is only a logical function division.
  • there may be another division manner for example, multiple units or components may be used. Combined or can be integrated into another system, or some features can be ignored, or not executed.
  • the coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or unit, and may be electrical, mechanical or otherwise.
  • the units described as separate components may or may not be physically separate.
  • the components displayed as units may or may not be physical units, i.e., may be located in one place, or may be distributed over multiple network units.
  • the purpose of the embodiment of the present embodiment can be achieved by selecting some or all of the units according to actual needs.
  • each functional unit in each embodiment of the present invention may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
  • the above integrated unit can be implemented in the form of hardware or in the form of a software functional unit.
  • the integrated unit if implemented in the form of a software functional unit and sold or used as a standalone product, may be stored in a computer readable storage medium.
  • the instructions include a plurality of instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) or a processor (proce s sor) to perform all or part of the steps of the methods of the various embodiments of the present invention.
  • the foregoing storage medium includes: a USB flash drive, a mobile hard disk, a read only memory (ROM, Read-Only Memory), random access memory (RAM, Random Acce ss Memory), disk or optical disk, and other media that can store program code.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种兼容方法及装置,涉及计算机领域,能够支持多种操作***的ABI兼容及已有的ABI兼容技术,并且方便以后扩展多种ABI兼容技术。该兼容方法包括:若第一目标程序为本地已注册的目标程序,则为所述第一目标程序创建第一进程;对所述第一目标程序进行重映射;生成重映射表,所述重映射表指示所述第一目标程序与重映射后的所述第一目标程序之间的对应关系;根据所述重映射表,将重映射后的所述第一目标程序加载至所述第一进程对应的本地内存中,以生成重映射后的所述第一目标程序的映像;对所述映像进行重构;确定重构后的所述映像的重定向接口,以执行所述第一进程。

Description

一种兼容方法 ^^置 本申请要求于 2013 年 03 月 19 日提交中国专利局、 申请号为 201310088109.0、 发明名称为"一种兼容方法及装置 "的中国专利申请的优先 权, 其全部内容通过引用结合在本申请中。
技术领域
本发明涉及计算机领域, 尤其涉及一种兼容方法及装置。
背景技术
在数据中心操作***中 , 使用 ABI ( App l i ca t i on B inary Int erf ace , 应用程序二进制接口 ) 兼容技术是解决大量遗留应用程序 问题的最直接的方法。 ABI兼容技术指的是在宿主操作***中模拟一个 可供目标程序执行的二进制环境。 采用 AB I 兼容技术时, 目标程序不 用更改就可在相应的宿主操作***上执行。
目前使用的 ABI兼容技术主要有***级 ABI兼容技术和进程级 ABI 兼容技术。 ***级 ABI 兼容技术指的是在宿主操作***中采用虚拟机 的方式模拟一个可供目标程序执行的虚拟环境; 进程级 ABI 兼容技术 指的是在宿主操作***中采用动态链接的方式模拟一个可供目标程序 执行的虚拟环境。
现有技术中的 ABI 兼容技术为根据目标程序的操作***在宿主操 作***中增加对应的可供目标程序执行的二进制环境, 以使得该目标 程序可在宿主操作***模拟的二进制环境中执行, 从而实现该目标程 序在宿主操作***中的兼容。
然而, 由于目前各个操作***的兼容技术相对独立, 因此, 上述 ABI兼容技术只能实现某一种操作***的 ABI兼容, 而不能实现不同的 多种操作***的 ABI兼容。
发明内容
本发明的实施例提供一种兼容方法及装置, 能够支持多种操作系 统的 ABI兼容及支持已有的 ABI兼容技术, 并且方便以后扩展多种 ABI 兼容技术。 为达到上述目的, 本发明的实施例采用如下技术方案: 第一方面, 本发明实施例提供一种兼容方法, 包括:
若第一目标程序为本地已注册的目标程序, 则为所述第一目标程 序创建第一进程;
对所述第一目标程序进行重映射;
生成重映射表, 所述重映射表指示所述第一目标程序与重映射后 的所述第一目标程序之间的对应关系;
根据所述重映射表, 将重映射后的所述第一目标程序加载至所述 第一进程对应的本地内存中, 以生成重映射后的所述第一目标程序的 映像;
对所述映像进行重构;
确定重构后的所述映像的重定向接口, 以执行所述第一进程。
在第一方面的第一种可能的实现方式中, 所述对所述第一目标程 序进行重映射的方法具体包括:
对所述第一目标程序进行段重组和 /或偏移计算。
结合前述的第一方面或第一方面的第一种可能的实现方式, 在第 二种可能的实现方式中, 所述根据所述重映射表, 将重映射后的所述 第一目标程序加载至所述第一进程对应的本地内存中, 以生成重映射 后的所述第一目标程序的映像具体包括:
获取所述第一目标程序中包含的符号表及重定位表;
根据所述重映射表, 将重映射后的所述第一目标程序加载至所述 本地内存中, 并根据所述符号表及重定位表, 对所述重映射后的所述 第一目标程序进行重定位, 以生成所述映像。
结合前述的第一方面或第一方面的第一种可能的实现方式至第二 种可能的实现方式中的任一种实现方式, 在第三种可能的实现方式中, 所述对所述映像进行重构包括:
对所述映像进行映像共享重构和 /或二进制翻译重构。
结合前述的第一方面或第一方面的第一种可能的实现方式至第三 种可能的实现方式中的任一种实现方式, 在第四种可能的实现方式中, 所述确定重构后的所述映像的重定向接口的方法具体包括: 确定重构后的所述映像的重定向目标, 所述重定向目标为本地中 与重构后的所述映像对应的接口;
执行所述重定向目标, 以确定重构后的所述映像的重定向接口。 结合前述的第一方面或第一方面的第一种可能的实现方式至第四 种可能的实现方式中的任一种实现方式, 在第五种可能的实现方式中, 在执行所述第一进程的过程中, 若所述映像缺失, 则根据所述重映射 表, 重新将重映射后的所述第一目标程序加载至所述本地内存中, 以 生成所述映像。
第二方面, 本发明实施例提供一种兼容设备, 包括:
创建单元, 用于若第一目标程序为本地已注册的目标程序, 则为 所述第一目标程序创建第一进程;
映射单元, 用于对所述第一目标程序进行重映射;
生成单元, 用于生成重映射表, 所述重映射表指示所述第一目标 与重映射后的所述第一目标程序之间的对应关系;
加载单元, 用于根据所述重映射表, 将重映射后的所述第一目标 程序加载至所述第一进程对应的本地内存中, 以生成重映射后的所述 第一目标程序的映像;
处理单元, 用于对所述映像进行重构;
所述处理单元, 还用于确定重构后的所述映像的重定向接口, 以 执行所述第一进程。
在第二方面的第一种可能的实现方式中,
所述映射单元, 具体用于对所述第一目标程序进行段重组和 /或偏 移计算。
结合前述的第二方面或第二方面的第一种可能的实现方式, 在第 二种可能的实现方式中,
所述处理单元, 具体用于获取所述第一目标程序中包含的符号表 及重定位表;
以及所述加载单元, 具体用于根据所述重映射表, 将重映射后的 所述第一目标程序加载至所述本地内存中, 并根据所述符号表及重定 位表, 对所述重映射后的所述第一目标程序进行重定位, 以生成所述 映像。
结合前述的第二方面或第二方面的第一种可能的实现方式至第二 种可能的实现方式中的任一种实现方式, 在第三种可能的实现方式中, 所述处理单元, 用于对所述映像进行映像共享重构和 /或二进制翻 译重构。
结合前述的第二方面或第二方面的第一种可能的实现方式至第三 种可能的实现方式中的任一种实现方式, 在第四种可能的实现方式中, 所述处理单元, 具体用于确定重构后的所述映像的重定向目标, 以及执行所述重定向目标, 以确定重构后的所述映像的重定向接口, 所述重定向目标为本地中与重构后的所述映像对应的接口。
结合前述的第二方面或第二方面的第一种可能的实现方式至第四 种可能的实现方式中的任一种实现方式, 在第五种可能的实现方式中, 所述加载单元, 还用于在所述处理单元执行所述第一进程的过程 中, 若所述映像缺失, 则根据所述重映射表, 重新将重映射后的所述 第一目标程序加载至所述本地内存中, 以生成所述映像。
本发明实施例提供一种兼容方法及装置, 通过若第一目标程序为 本地已注册的目标程序, 则为第一目标程序创建第一进程, 并对第一 目标程序进行重映射, 以生成重映射表, 重映射表指示第一目标程序 与重映射后的第一目标程序之间的对应关系, 然后根据重映射表, 将 重映射后的第一目标程序加载至第一进程对应的本地内存中, 以生成 重映射后的第一目标程序的映像, 以及对映像进行重构, 并确定重构 后的映像的重定向接口, 进而以执行第一进程。 通过该方案, 若第三 方操作***的第一目标程序需在宿主计算机的操作***中执行, 且第 一目标程序为宿主计算机的操作***已注册的目标程序, 则上述兼容 方法可用于支持该第一目标程序在宿主计算机的操作***中的兼容, 同时能够支持多种操作***的 AB I 兼容及已有的 AB I 兼容技术, 并且 方便以后扩展多种 ABI兼容技术。
附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面 将对实施例或现有技术描述中所需要使用的附图作筒单地介绍, 显而 易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于本领域 普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些 附图获得其他的附图。
图 1为本发明实施例提供的一种兼容方法的方法流程图一; 图 2为本发明实施例提供的一种兼容方法的方法流程图二; 图 3为本发明实施例提供的兼容设备的结构示意图一;
图 4为本发明实施例提供的兼容设备的结构示意图二;
图 5为本发明实施例提供的 AB I兼容接口的架构示意图; 图 6为本发明实施例提供的兼容状态机的架构示意图。
具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方 案进行清楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部 分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普 通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
实施例一
如图 1所示, 本发明实施例提供一种兼容方法, 包括:
S 1 01、 若第一目标程序为本地已注册的目标程序, 宿主计算机则 为第一目标程序创建第一进程。
第一目标程序为与宿主计算机所安装的操作***不同的第三方操 作***中的目标程序。 由于宿主计算机的操作***与第三方操作*** 为不同的操作***, 因此, 若要使得第一目标程序能在宿主计算机的 操作***中执行, 则需实现宿主计算机的操作***对第一目标程序的 兼容。
示例性的, 若要实现第一目标程序在宿主计算机的操作***中的 兼容, 首先需宿主计算机需判断第一目标程序是否为本地 (即宿主计 算机的操作***) 已注册的目标程序, 若第一目标程序为宿主计算机 的操作***已注册的目标程序, 宿主计算机则为第一目标程序创建第 一进程。
特别的, "进程" 是操作***结构的基础; 是一个正在执行的程 序; 是计算机中正在运行的程序实例; 是可以分配给处理器并由处理 器执行的一个实体; 或者是由单一顺序的执行显示, 一个当前状态和 一组相关的***资源所描述的活动单元。
需要说明的是, 本发明实施例提供的兼容方法可以为 ABI 兼容方 法, 在该方法中, 只有经过宿主计算机的操作***注册的目标程序才 能在宿主计算机的操作***中实现兼容, 也就是说, 只有在宿主计算 机的操作***中可成功注册第三方操作***的 ABI 兼容组件的第三方 操作***才能够实现与宿主计算机操作***的兼容。
5102、 宿主计算机对第一目标程序进行重映射。
宿主计算机为第一目标程序创建了第一进程之后, 宿主计算机对 第一目标程序进行重映射。 其中, 宿主计算机如何对第一目标程序进 行重映射, 后续实施例会进行详细描述。
本领域普通技术人员可以理解, 由于宿主计算机操作***中的目 标程序与第三方操作***中的目标程序的组织结构可能会不相同, 因 此, 宿主计算机会将第三方操作***中的目标程序映射到宿主计算机 的操作***中的目标程序, 从而使得第三方操作***中的目标程序的 组织结构与宿主计算机的操作***中的目标程序的组织结构相同。
5103、 宿主计算机生成重映射表, 重映射表指示第一目标程序与 重映射后的第一目标程序之间的对应关系。
宿主计算机对第一目标程序进行重映射的过程中, 宿主计算机可 以一边对第一目标程序进行重映射, 一边生成相应的重映射表, 也就 是说, 宿主计算机对第一目标程序进行重映射的结果为: 第一目标程 序的组织结构与宿主计算机的操作***中的目标程序的组织结构相 同, 以及宿主计算机生成与重映射过程相对应的重映射表, 该重映射 表指示了进行重映射前的第一目标程序的组织结构与进行重映射后的 第一目标程序的组织结构之间的对应关系。
S 104、 宿主计算机根据重映射表, 将重映射后的第一目标程序加 载至第一进程对应的本地内存中, 以生成重映射后的第一目标程序的 映像。
宿主计算机根据生成的重映射表, 将进行重映射后的第一目标程 序加载至第一进程对应的本地内存, 即宿主计算机的内存中, 从而生 成与进行重映射后的第一目标程序相对应的映像。
需要说明的是, 在计算机领域中, 目标程序为保存在硬盘中的二 进制文件; 将硬盘中的目标程序加载至本地内存中则称为映像。
进一步地, 对于本发明实施例提供的兼容方法, S 1 01 中创建的第 一进程, 则为进程的管理结构, 也就是说, 创建的第一进程为一个程 序架构, 而只有经过 S 1 04 , 将进行重映射后的第一目标程序加载至第 一进程对应的宿主计算机的内存中, 则第一进程才为运行在宿主计算 机内存中的一个程序实例。
51 05、 宿主计算机对映像进行重构。
宿主计算机对第一目标程序进行了重映射 (即预处理) 之后, 还 需对加载至第一进程对应的本地内存中的第一目标程序, 即第一目标 程序的映像进行进一步处理, 即宿主计算机需对第一目标程序的映像 进行重构。
宿主计算机对第一目标程序的映像进行重构的过程即为在不改变 第一目标程序实现功能的基础上, 通过调整第一目标程序的程序代码, 以对第一目标程序的质量、 性能进行改善, 从而使第一目标程序的设 计模式和架构更为合理, 进而提高第一目标程序的扩展性和可维护性。
51 06、 宿主计算机确定重构后的映像的重定向接口, 以执行第一 进程。
其中, 宿主计算机对第一目标程序的映像进行重构后, 开始执行 第一进程, 在第一进程执行过程中, 若出现重定向操作, 宿主计算机 则确定重构后的映像的重定向接口, 以继续执行第一进程。
本领域的普通技术人员可以理解, "重定向" 为通过各种方法将 网络或者***的各种请求重新确定一个方向并转到该方向指示的位 置。 本发明实施例中, 宿主计算机在执行第一进程的过程中, 若出现 重定向操作, 宿主计算机则进入重定向接口未确定状态, 然后宿主计 算机将在本地 (即宿主计算机的操作***) 中确定与第一目标程序的 映像相对应的一个接口, 并转去执行该接口, 进而, 宿主计算机将进 入重定向接口已确定状态, 即宿主计算机已确定重构后的映像的重定 向接口, 以继续执行第一进程。
当然, 若宿主计算机执行完该接口, 宿主计算机则返回第一进程 中重定向操作的地方继续执行第一进程。
示例性的, 宿主计算机在执行第一进程的过程中, 若执行到第一 目标程序的映像中有函数调用的地方, 宿主计算机则在宿主计算机系 统中确定与第一目标程序的映像中被调用函数功能相同的函数, 并转 去执行该函数, 从而使得宿主计算机可以继续执行第一进程, 当宿主 计算机执行完该函数之后, 宿主计算机将返回至函数调用之后的地址, 以继续执行第一进程。
本发明实施例提供一种兼容方法, 通过若第一目标程序为本地已 注册的目标程序, 则为第一目标程序创建第一进程, 并对第一目标程 序进行重映射, 以生成重映射表, 重映射表指示第一目标程序与重映 射后的第一目标程序之间的对应关系, 然后根据重映射表, 将重映射 后的第一目标程序加载至第一进程对应的本地内存中, 以生成重映射 后的第一目标程序的映像, 以及对映像进行重构, 并确定重构后的映 像的重定向接口, 进而以执行第一进程。 通过该方案, 若第三方操作 ***的第一目标程序需在宿主计算机的操作***中执行, 且第一目标 程序为宿主计算机的操作***已注册的目标程序, 则上述兼容方法可 用于支持该第一目标程序在宿主计算机的操作***中的兼容, 同时能 够支持多种操作***的 ABI 兼容及已有的 ABI 兼容技术, 并且方便以 后扩展多种 ABI兼容技术。
实施例二
如图 2所示, 本发明实施例还提供一种兼容方法, 包括:
S201、 若第一目标程序为本地已注册的目标程序, 宿主计算机则 为第一目标程序创建第一进程。
第一目标程序为与宿主计算机所安装的操作***不同的第三方操 作***中的目标程序。 由于宿主计算机的操作***与第三方操作*** 为不同的操作***, 因此, 若要使得第一目标程序能在宿主计算机的 操作***中执行, 则需实现宿主计算机的操作***对第一目标程序的 兼容。
示例性的, 若要实现第一目标程序在宿主计算机的操作***中的 兼容, 首先需宿主计算机判断第一目标程序是否为本地 (即宿主计算 机的操作***) 已注册的目标程序, 若第一目标程序为宿主计算机的 操作***已注册的目标程序, 宿主计算机则为第一目标程序创建第一 进程。
需要说明的是, 本发明实施例提供的兼容方法可以为 ABI 兼容方 法, 在该方法中, 只有经过宿主计算机的操作***注册的目标程序才 能在宿主计算机的操作***中实现兼容, 也就是说, 只有在宿主计算 机的操作***中可成功注册第三方操作***的 ABI 兼容组件的第三方 操作***才能够实现与宿主计算机操作***的兼容。
S202、 宿主计算机对第一目标程序进行重映射。
本领域普通技术人员可以理解, 由于宿主计算机操作***中的目 标程序与第三方操作***中的目标程序的组织结构可能会不相同, 因 此, 宿主计算机会将第三方操作***中的目标程序映射到宿主计算机 的操作***中的目标程序, 从而使得第三方操作***中的目标程序的 组织结构与宿主计算机的操作***中的目标程序的组织结构相同。
本发明实施例中, 宿主计算机对第一目标程序进行重映射的方法 具体可以包括:
宿主计算机对第一目标程序进行段重组和 /或偏移计算。 具体的, 由于宿主计算机操作***中的目标程序与第三方操作***中的目标程 序的组织结构可能会不相同, 因此, 宿主计算机在对第一目标程序进 行重映射的过程中, 可能需要对第一目标程序中的各个程序代码段重 新分配存放地址, 即对第一目标程序中的各个程序代码段进行段重组, 由于段重组后的各个程序代码段的存放地址发生了改变, 因此, 宿主 计算机还需要对段重组后的各个程序代码段的偏移地址进行计算, 以 使得宿主计算机能够以调整后的存放地址准确地执行各个程序代码 段。 需要说明的是, 由于各个操作***的差异, 宿主计算机在对第一 目标程序进行重映射时, 可能只需对第一目标程序中的各个程序代码 段进行段重组; 也可能只需对第一目标程序中的各个程序代码段进行 偏移计算; 还可能既要对第一目标程序中的各个程序代码段进行段重 组, 又要对第一目标程序中的各个程序代码段进行偏移计算, 实际重 映射过程可根据不同操作***的需求进行适应性调整, 本发明不做限 制。
5203、 宿主计算机生成重映射表, 重映射表指示第一目标程序与 重映射后的第一目标程序之间的对应关系。
宿主计算机对第一目标程序进行重映射的过程中, 宿主计算机可 以一边对第一目标程序进行重映射, 一边生成相应的重映射表, 也就 是说, 宿主计算机对第一目标程序进行重映射的结果为: 第一目标程 序的组织结构与宿主计算机的操作***中的目标程序的组织结构相 同, 以及宿主计算机生成与重映射过程相对应的重映射表, 也就是说, 重映射表指示了进行重映射前的第一目标程序的组织结构与进行重映 射后的第一目标程序的组织结构之间的对应关系。
5204、 宿主计算机获取第一目标程序中包含的符号表及重定位表。 宿主计算机从第一目标程序中获取相应的符号表以及重定位表。 计算机领域中, "符号表" 为在源程序编译过程中需要不断收集、 记录和使用源程序中一些语法符号的类型和特征等相关信息的表格。 如常数表、 变量名表、 数组名表、 过程名表、 标号表等等, 统称为符 号表。 另外, 对于符号表组织、 构造和管理方法的好坏还会直接影响 编译***的运行效率。
相应的, "重定位表" 为在目标程序链接过程中, 计算机对目标 程序进行重定位时生成的用于指示目标程序的逻辑地址与目标程序在 计算机内存中的物理地址之间的对应关系的表格。 "重定位" 则为 |巴 目标程序的逻辑地址空间变换为目标程序在计算机内存中的物理地址 空间的过程。
需要说明的是, 本发明实施例中提供的符号表和重定位表分别为 在源程序编译过程中和在目标程序链接过程中生成的, 并包含在第一 目标程序中的。
S205、 宿主计算机根据重映射表, 将重映射后的第一目标程序加 载至第一进程对应的本地内存中, 并根据符号表及重定位表, 对重映 射后的第一目标程序进行重定位, 以生成映像。
其中, 宿主计算机根据生成的重映射表, 将进行重映射后的第一 目标程序加载至第一进程对应的本地内存, 即宿主计算机的内存中, 并根据从第一目标程序中获取的符号表和重定位表, 对重映射后的第 一目标程序进行重定位, 以生成与第一目标程序相对应的映像。
本发明实施例中, 宿主计算机根据符号表和重定位表对第一目标 程序中的变量进行重定位, 以生成与第一目标程序相对应的可以执行 的映像。
本领域普通技术人员可以理解, 未进行重定位之前的第一目标程 序中变量的存放地址均为逻辑地址, 而经过重定位后的第一目标程序 中变量的存放地址均为计算机内存中的物理地址。
需要说明的是, 在计算机领域中, 目标程序为保存在硬盘中的二 进制文件; 将硬盘中的目标程序加载至本地内存中则称为映像。
进一步地, "进程,, 是操作***结构的基础; 是一个正在执行的程 序; 是计算机中正在运行的程序实例; 是可以分配给处理器并由处理 器执行的一个实体; 或者是由单一顺序的执行显示, 一个当前状态和 一组相关的***资源所描述的活动单元。对于本发明实施例提供的兼容 方法, S201 中创建的第一进程, 则为进程的管理结构, 也就是说, 创 建的第一进程为进程的一个程序架构, 而只有经过 S205 , 将进行重映 射后的第一目标程序加载至第一进程对应的宿主计算机的内存中, 则 第一进程才为运行在宿主计算机内存中的一个程序实例。
S 2 06 , 宿主计算机对映像进行重构。
其中, 宿主计算机对第一目标程序进行了重映射 (即预处理) 之 后, 还需对加载至第一进程对应的本地内存中的第一目标程序进行进 一步处理, 即宿主计算机对第一目标程序的映像进行重构。
宿主计算机对第一目标程序的映像进行重构的过程即为在不改变 第一目标程序实现功能的基础上, 通过调整第一目标程序的程序代码, 以对第一目标程序的质量、 性能进行改善, 从而使第一目标程序的设 计模式和架构更为合理, 进而提高第一目标程序的扩展性和可维护性。
本发明实施例中, 宿主计算机对第一目标程序的映像进行重构时 需考虑映像共享和二进制翻译两个方面的需求, 即宿主计算机可能需 对第一目标程序的映像进行映像共享重构和 /或二进制翻译重构。
示例性的, 由于映像共享过程中需要将计算机内存中的, 两个或 多个目标程序共享的一段程序代码或一段数据定向到某个固定的位 置, 因此, 在第一目标程序的映像与其他目标程序的映像进行映像共 享时, 则宿主计算机需对第一目标程序的映像进行重构, 即映像共享 重构。
"二进制翻译" 是一种直接翻译可执行二进制程序的技术, 它能 够把一种处理器上的二进制程序翻译到另外一种处理器上执行, 从而 使得不同处理器之间的二进制程序可以很容易地相互移植, 扩大了硬 件 /软件的适用范围。
若第三方操作***与宿主计算机的操作***为不同的指令***, 则宿主计算机需对第一目标程序的映像进行二进制翻译, 在进行二进 制翻译过程中, 宿主计算机需对第一目标程序的映像进行重构, 以重 新布局该映像, 即二进制翻译重构。
需要说明的是, 在不同的需求下, 宿主计算机对第一目标程序的 映像进行重构的方式也不相同, 宿主计算机可以对第一目标程序的映 像进行映像共享重构, 也可以对第一目标程序的映像进行二进制翻译 重构, 还可以对第一目标程序的映像既进行映像共享重构, 又进行二 进制翻译重构, 具体的重构方式, 可根据不同操作***的实际需求进 行适应性调整, 本发明不做限制。
S 2 07、 宿主计算机确定重构后的映像的重定向目标, 重定向目标 为本地中与重构后的映像对应的接口。
宿主计算机对第一目标程序的映像进行重构后, 开始执行第一进 程, 在第一进程执行过程中, 若出现重定向操作, 宿主计算机则确定 重构后的映像的重定向目标, 以继续执行第一进程。
本领域的普通技术人员可以理解, "重定向" 为通过各种方法将 网络或者***的各种请求重新确定一个方向并转到该方向指示的位 置。 本发明实施例中, 宿主计算机在执行第一进程的过程中, 若出现 重定向操作, 宿主计算机则进入重定向接口未确定状态, 然后宿主计 算机将在本地 (即宿主计算机的操作***) 中确定与第一目标程序的 映像相对应的一个接口, 即确定重定向目标。
S208、 宿主计算机执行重定向目标, 以确定重构后的映像的重定 向接口, 进而以执行第一进程。
宿主计算机确定了重定向目标后, 将转去执行该重定向目标, 进 而, 宿主计算机将进入重定向接口已确定状态, 即宿主计算机已确定 重构后的映像的重定向接口, 以继续执行第一进程。
当然, 若宿主计算机执行完该重定向目标, 宿主计算机则返回第 一进程中重定向操作的地方继续执行第一进程。
示例性的, 宿主计算机在执行第一进程的过程中, 若执行到第一 目标程序的映像中有函数调用的地方, 宿主计算机则在宿主计算机系 统中确定与第一目标程序的映像中被调用函数功能相同的函数, 并转 去执行该函数, 从而使得宿主计算机可以继续执行第一进程, 当宿主 计算机执行完该函数之后, 宿主计算机将返回至函数调用之后的地址, 以继续执行第一进程。
进一步地, 在执行第一进程的过程中, 若第一目标程序的映像缺 失, 则宿主计算机根据重映射表, 重新将重映射后的第一目标程序加 载至第一进程中, 以生成映像, 进而重新执行第一进程。
S209、 宿主计算机终止第一进程。
宿主计算机终止第一进程的情况可以为下述的任意一种:
( 1 ) 宿主计算机执行完第一进程之后, 终止第一进程。
( 2 ) 宿主计算机未成功加载第一目标程序时, 终止第一进程。
( 3 ) 宿主计算机未成功确定第一目标程序的映像的重定向接口 时, 终止第一进程。
上述 ( 1 ) 为执行完第一进程后的正常结束, 而 ( 2 ) 和 ( 3 ) 均为 执行第一进程过程中发生异常时的异常结束。 特别地, 若 S201中第一目标程序不是宿主计算机的操作***已注 册的目标程序, 也就是说, 该第一目标程序不能在该宿主计算机的操 作***中实现兼容, 因此, 宿主计算机则直接终止对该第一目标程序 的兼容过程。
需要说明的是, 上述 S 201 至 S209 为实现第三方操作***中的第 一目标程序在宿主计算机的操作***中兼容的完整过程, 然而对于已 经兼容的指令和第一目标程序的文件格式等来说, 在实现第一目标程 序兼容的过程中, 这些步骤不一定都需要执行, 本发明实施例提供的 兼容方法中, 第三方操作***在宿主计算机的操作***中注册的 ABI 兼容组件可根据实际需求执行必须的步骤, 对于不需要执行的步骤, 则可将对应步骤的指令设置为空。
本发明实施例提供一种兼容方法, 通过若第一目标程序为本地已 注册的目标程序, 则为第一目标程序创建第一进程, 并对第一目标程 序进行重映射, 以生成重映射表, 重映射表指示第一目标程序与重映 射后的第一目标程序之间的对应关系, 然后根据重映射表, 将重映射 后的第一目标程序加载至第一进程对应的本地内存中, 以生成重映射 后的第一目标程序的映像, 以及对映像进行重构, 并确定重构后的映 像的重定向接口, 进而以执行第一进程。 通过该方案, 若第三方操作 ***的第一目标程序需在宿主计算机的操作***中执行, 且第一目标 程序为宿主计算机的操作***已注册的目标程序, 则上述兼容方法可 用于支持该第一目标程序在宿主计算机的操作***中的兼容, 同时能 够支持多种操作***的 ABI 兼容及已有的 ABI 兼容技术, 并且方便以 后扩展多种 ABI兼容技术。
实施例三
如图 3所示, 本发明实施例提供一种兼容设备 1 , 包括:
创建单元 10 , 用于若第一目标程序为本地已注册的目标程序, 则 为所述第一目标程序创建第一进程。
映射单元 11 , 用于对所述第一目标程序进行重映射。
生成单元 12 , 用于生成重映射表, 所述重映射表指示所述第一目 标与重映射后的所述第一目标程序之间的对应关系。 加载单元 1 3 , 用于根据所述重映射表, 将重映射后的所述第一目 标程序加载至所述第一进程对应的本地内存中, 以生成重映射后的所 述第一目标程序的映像。
处理单元 14 , 用于对所述映像进行重构。
所述处理单元 14 , 还用于确定重构后的所述映像的重定向接口, 以执行所述第一进程。
进一步地, 所述映射单元 1 1 , 具体用于对所述第一目标程序进行 段重组和 /或偏移计算。
进一步地, 所述处理单元 14 , 具体用于获取所述第一目标程序中 包含的符号表及重定位表。
以及所述加载单元 1 3 , 具体用于根据所述重映射表, 将重映射后 的所述第一目标程序加载至所述本地内存中, 并根据所述符号表及重 定位表, 对所述重映射后的所述第一目标程序进行重定位, 以生成所 述映像。
进一步地, 所述处理单元 14 , 用于对所述映像进行映像共享重构 和 /或二进制翻译重构。
进一步地, 所述处理单元 14 , 具体用于确定重构后的所述映像的 重定向目标, 以及执行所述重定向目标, 以确定重构后的所述映像的 重定向接口, 所述重定向目标为本地中与重构后的所述映像对应的接 口。
进一步地, 所述加载单元 1 3 , 还用于在所述处理单元 14执行所述 第一进程的过程中, 若所述映像缺失, 则根据所述重映射表, 重新将 重映射后的所述第一目标程序加载至所述本地内存中, 以生成所述映 像。
本发明实施例提供一种兼容设备, 若第一目标程序为本地已注册 的目标程序, 则兼容设备为第一目标程序创建第一进程, 并对第一目 标程序进行重映射, 以生成重映射表, 重映射表指示第一目标程序与 重映射后的第一目标程序之间的对应关系, 然后兼容设备根据重映射 表, 将重映射后的第一目标程序加载至第一进程对应的本地内存中, 以生成重映射后的第一目标程序的映像, 以及对映像进行重构, 并确 定重构后的映像的重定向接口, 进而以执行第一进程。 通过该方案, 若第三方操作***的第一目标程序需在宿主计算机的操作***中执 行, 且第一目标程序为宿主计算机的操作***已注册的目标程序, 则 可通过上述兼容设备执行本发明实施例提供的兼容方法, 以支持该第 一目标程序在宿主计算机的操作***中的兼容, 同时能够支持多种操 作***的 ABI兼容及已有的 ABI兼容技术, 并且方便以后扩展多种 ABI 兼容技术。
实施例四
如图 4所示, 本发明实施例提供一种兼容设备 1 , 包括处理器 15 以及存储器 16 , 其中,
处理器 15为兼容设备 1的控制以及处理中心, 通过运行存储在存 储器 16 中的软件程序, 并调用及处理存储在存储器 16 中的数据, 从 而控制兼容设备进行相应的操作, 以及实现兼容设备的其他功能。
存储器 16 可用于存储软件程序及数据, 以使得处理器 15 可通过 运行存储在存储器 16中的软件程序, 从而实现兼容设备相应的操作以 及其他功能。
对应于本发明实施例提供的兼容方法:
处理器 15 , 用于若第一目标程序为本地已注册的目标程序, 则为 所述第一目标程序创建第一进程, 并将所述第一进程存储于存储器 16 中, 对所述第一目标程序进行重映射, 且生成重映射表, 并将所述重 映射表存储与存储器 16中, 所述重映射表指示所述第一目标与重映射 后的所述第一目标程序之间的对应关系, 根据所述重映射表, 将重映 射后的所述第一目标程序加载至所述第一进程对应的本地内存中, 以 生成重映射后的所述第一目标程序的映像, 以及对所述映像进行重构, 进而确定重构后的所述映像的重定向接口, 以执行所述第一进程。
进一步地, 所述处理器 15 , 具体用于对所述第一目标程序进行段 重组和 /或偏移计算。
进一步地, 所述处理器 15 , 具体用于获取所述第一目标程序中包 含的符号表及重定位表, 以及根据所述重映射表, 将重映射后的所述 第一目标程序加载至所述存储器 16中的所述第一进程对应的本地内存 中, 并根据所述符号表及重定位表, 对所述重映射后的所述第一目标 程序进行重定位, 以生成所述映像。
进一步地, 所述处理器 15 , 用于对所述映像进行映像共享重构和 / 或二进制翻译重构。
进一步地, 所述处理器 15 , 具体用于确定重构后的所述存储器 16 中的所述映像的重定向目标, 以及执行所述重定向目标, 以确定重构 后的所述映像的重定向接口, 所述重定向目标为本地中与重构后的所 述映像对应的接口。
进一步地, 所述处理器 15 , 还用于在执行所述第一进程的过程中, 若所述存储器 15中的所述映像缺失, 则根据所述重映射表, 重新将重 映射后的所述第一目标程序加载至所述存储器 16中的所述第一进程对 应的本地内存中, 以生成所述映像。
本发明实施例提供一种兼容设备, 若第一目标程序为本地已注册 的目标程序, 则兼容设备为第一目标程序创建第一进程, 并对第一目 标程序进行重映射, 以生成重映射表, 重映射表指示第一目标程序与 重映射后的第一目标程序之间的对应关系, 然后兼容设备根据重映射 表, 将重映射后的第一目标程序加载至第一进程对应的本地内存中, 以生成重映射后的第一目标程序的映像, 以及对映像进行重构, 并确 定重构后的映像的重定向接口, 进而以执行第一进程。 通过该方案, 若第三方操作***的第一目标程序需在宿主计算机的操作***中执 行, 且第一目标程序为宿主计算机的操作***已注册的目标程序, 则 可通过上述兼容设备执行本发明实施例提供的兼容方法, 以支持该第 一目标程序在宿主计算机的操作***中的兼容, 同时能够支持多种操 作***的 ABI兼容及已有的 ABI兼容技术, 并且方便以后扩展多种 ABI 兼容技术。
下面从软件角度进一步说明本发明实施例提供的兼容设备 1 在兼 容过程中所执行的对应软件程序的组织架构及实现方式。
如图 5 所示, 为本发明实施例提供的兼容设备 1 在兼容过程中所 执行的 ABI 兼容接口 2 的组织架构图, 包括兼容状态机 20、 ABI 兼容 组件注册队列 21以及初始化程序 22。 其中, 兼容状态机 20定义了一套第一目标程序在宿主计算机的操 作***中的变换流程 (也就是兼容过程) , 通过该变换流程, 宿主计 算机的操作***将该第一目标程序转换为可以在宿主计算机的操作系 统中执行的第一目标程序的映像, 并在宿主计算机的操作***中执行。
ABI兼容组件注册队列 21是一个用于注册第三方操作***的兼容 组件的结构, 在 ABI兼容组件注册队列 21中保存的是各个可兼容第三 方操作***所对应的 ABI兼容组件, 且该兼容组件由兼容状态机 20决 定。
初始化程序 11 负责启动兼容状态机 20, 即初始化程序 22首先检 查第一目标程序是否为宿主计算机的操作***已注册的目标程序, 若 是, 则说明第一目标程序可以在宿主计算机的操作***中实现兼容, 初始化程序 11则启动兼容状态机 20。
如图 6所示,为本发明实施例提供的兼容状态机 20的架构示意图。 图 6中所示的兼容状态机 20由 12个状态组成, 如状态 1-状态 12 所示, 这 12个状态分别代表了 ABI兼容过程中的各个独立步骤。 这 12 个状态之间的切换对应着 15 个执行动作, 如 A1-A15 所示。 下面来详 细说明整个兼容状态机 20 的工作流程, 即兼容状态机 20 完成兼容的 完整过程。
状态 1: 未识别。
若用户端启动一个第三方操作***的第一目标程序, 则宿主计算 机的操作***将进入第一目标程序未识别状态。
A1: 第一目标程序识别。
运行初始化程序的宿主计算机遍历各个已注册 ABI 组件的目标程 序识别动作, 以识别该第一目标程序。
状态 2: 第一进程未创建。
若第一目标程序识别成功, 宿主计算机的操作***将进入第一进 程未创建状态。
A2: 第一进程创建。
若第一目标程序识别成功, 宿主计算机则为该第一目标程序创建 第一进程。
状态 3: 宿主计算机的操作***进入第一进程已创建状态。
A3: 映像预处理。
宿主计算机对第一目标程序进行重映射。
状态 4: 映像未加载。
A4: 映像加载。
宿主计算机根据第三方操作***的第一目标程序与宿主计算机的 操作***的目标程序之间的重映射关系, 将重映射后的第一目标程序 加载至第一进程对应的宿主计算机内存中, 在这个过程中, 宿主计算 机需要对第一目标程序进行重定向操作, 其中, 将加载至内存中的第 一目标程序称为映像。
状态 5: 映像已加载。
A5: 映像重构。
宿主计算机对重映射后的映像进行相应的重构操作, 如映像共享 重构和 /或二进制翻译重构等。
状态 6: 映像已重构。
A6: 执行。
宿主计算机执行第一进程。
状态 7: 执行。
宿主计算机的操作***进入执行第一进程状态。
A7: 检测重定向接口。
执行第一进程过程中, 若出现重定向操作, 则宿主计算机的操作 ***进入重定向接口未确定状态。
状态 8: 重定向接口未确定。
A8: 确定重定向接口。
宿主计算机确定重定向目标, 并转去执行与第三方操作***的第 一目标程序相对应的宿主计算机的操作***中的目标程序。
状态 9: 重定向接口已确定。 A9: 恢复执行。
状态 10: 执行。
宿主计算机继续执行上述第一进程。
A10: 映像内容缺失。
若执行第一进程过程中, 映像出现了内容缺失, 则宿主计算机的 操作***将重新进入映像未加载状态。
状态 11: 第一进程终止。
宿主计算机执行完第一进程之后, 终止第一进程。
All: 正常结束。
状态 12: 终止。
宿主计算机终止运行第一目标程序。
A12: 异常结束一。
若宿主计算机未成功加载映像, 宿主计算机则终止第一进程。 A13: 异常结束二。
若宿主计算机未成功确定重定向接口, 宿主计算机则终止第一进 程。
A14: 异常结束三。
若第一目标程序不是在宿主计算机的操作***中已注册的目标程 序, 即宿主计算机未成功识别第一目标程序, 宿主计算机则终止第一 进程。
A15: 终止。
宿主计算机终止运行第一目标程序。
如表 1所示, ABI兼容接口 2对应的是兼容状态机 20完整的兼容 过程, 也就是说, ABI兼容接口 2对应的是本发明实施例提供的兼容方 法。
表 1
A1 一目标程序识别 A9 恢复执行 A2 第一进程创建 A10 映像内容缺失
A3 映像预处理 All 正常结束
A4 映像加载 A12 异常结束一
A5 映像重构 A13 异常结束二
A6 执行 A14 异常结束三
A7 检测重定向接口 A15 终止
A8 确定重定向接口
表 1所示的 ABI 兼容接口 2相当于提供了一个结构体, 结构体的 各个成员就是相对应的函数, 每个需要与宿主计算机的操作***兼容 的第三方操作***, 需要实现一个相对应的结构体并将其注册到 ABI 兼容组件注册队列 21 中。 在兼容过程中, 兼容状态机 20通过执行第 三方操作***提供的 ABI 兼容组件提供的函数而实现各个兼容过程, 进而支撑第一目标程序在宿主计算机的操作***中运行, 即可支持及 实现第一目标程序在宿主计算机的操作***中的兼容。
进一步地, 要使得第三方操作***中的第一目标程序能在宿主计 算机的操作***中实现兼容, 首先需要完成第三方操作***的 ABI 兼 容组件的注册。
ABI兼容组件的注册过程为:
( 1 ) 宿主计算机的操作***为 ABI兼容接口提供一段空间, 以用 来保存各个 ABI兼容组件。
( 2 ) 宿主计算机的操作***提供一个注册功能模块, 以用来支持 第三方操作***注册其对应的 ABI兼容组件。
( 3 )该指令将第三方操作***的 ABI兼容组件的信息加入 ABI兼 容组件注册队列中, 以完成第三方操作***的 ABI 兼容组件在宿主计 算机的操作***中的注册工作。
需要说明的是, 为了保证第一目标程序能够在宿主计算机的操作 ***中正常运行, 宿主计算机的操作***需要为第一目标程序提供兼 容的 API ( Application Programming Interface ,应用程序编程接口 )、 兼容的动态链接库以及兼容的第一目标程序处理流程。 因此, 宿主计 算机的操作***在执行 ABI 兼容接口对第一目标程序完成兼容的过程 中, 宿主计算机的操作***首先需要将与第三方操作***相对应的动 态链接库等必备文件导入***中, 同时, 宿主计算机的操作***进行 第三方操作***的 ABI兼容组件的注册。
示例性的, 以下分别以 Linux 操作***的跨版本兼容和第三方操 作***兼容 Linux操作***的 ABI 为例来说明本发明实施例提供的兼 容方法的实现过程。
Linux操作***的跨版本兼容:
Linux 操作***不同版本之间二进制不兼容的主要原因是高版本 的 Linux操作***由于某些原因更改了 Linux操作******的 API 和 数据结构, 从而导致原来低版本的 Linux 操作***中的第一目标程序 不能在高版本的 Linux操作***中直接运行。 如表 2 所示, 为 Linux 操作***跨版本兼容时, 使用本发明实施例提供的兼容方法所需要的 ABI兼容接口。
由于 Linux 操作***中的可执行文件均为 ELF ( Executable and
Linking Format, 可执行链接格式) , 因此, 低版本的 Linux 操作系 统在高版本的 Linux操作***中进行兼容的 ABI 兼容接口能够大量筒 化, 即 ABI 兼容接口中的很多操作都可以为空, 包括可执行文件识别 以及可执行文件加载等等。 对于 Linux 操作***跨版本之间的兼容, 对应的 ABI兼容接口中需要更改的只有 A9,也就是重定向接口的操作。 又由于低版本的 Linux操作***与高版本的 Linux操作***不兼容的 原因是改变了 Linux操作***的 API, 因此, 只需在高版本的 Linux操 作***中提供之前低版本的 Linux操作***所对应的 API, 并在动态链 接过程中, 将在高版本的 Linux 操作***中运行的第一目标程序的调 用重定向为之前低版本的 Linux 操作***的 API 即可完成低版本的 Linux操作***中的第一目标程序在高版本的 L i nux操作***中直接运 行, 即可实现高版本的 L i nux操作***对低版本的 L i nux操作***的 兼容。
表 2
Figure imgf000024_0001
A2 Fork函数 A10 映像内容缺失
A3 exec函数族 All 正常结束
A4 力口载函数 A12 异常结束一
A5 空 A13 异常结束二
A6 空 A14 空
A7 dlsym函数开始 A15 空
A8 dlsym函数 其他操作***兼容 Linux操作***的 ABI:
在其他操作***中兼容 Linux操作***的 ABI 的一般做法是在其 他操作***中实现与 Linux操作***相兼容的 API,这种情况下对应的 ABI兼容接口如表 1所示。
在其他操作*** (为了更好的描述, 下文将其他操作***统称为 宿主计算机的操作***) 中兼容 Linux操作***的 ABI 的实现过程包 括:
( 1 )宿主计算机检查第一目标程序的文件格式 ELF是否为宿主计 算机的操作***已注册的文件格式。
可以理解的是, 步骤 ( 1 ) 中的第一目标程序为 Linux操作***中 的目标程序。
( 2 )若第一目标程序的文件格式 ELF为宿主计算机的操作***已 注册的文件格式, 宿主计算机则在宿主计算机的操作***中为第一目 标程序创建第一进程。
( 3) 宿主计算机对第一目标程序进行重映射, 并生成用于指示第 一目标程序与宿主计算机的操作***中的目标程序之间的映射关系的 重映射表。
需要说明的是, 若宿主计算机操作***中的目标程序的文件格式 为类 ELF, 即宿主计算机的操作***为类 ELF可执行环境, 则上述步骤 ( 3) 可以省略。
( 4 )根据上述生成的重映射表, 宿主计算机将第一目标程序加载 至第一进程对应的宿主计算机内存中, 同时对第一目标程序进行重定 位, 以生成重映射后的第一目标程序的映像。
( 5 ) 宿主计算机对上述映像进行重构。
需要说明的是, 若上述映像与其他映像之间进行共享一段程序代 码的操作时, 需对上述映像进行映像共享重构操作; 若上述映像需进 行二进制翻译, 则在进行二进制翻译的过程中, 需对上述映像进行二 进制翻译重构操作, 以完成对上述映像的重构。
特别的, 若宿主计算机的操作***中的目标程序格式与 Linux 操 作***中的第一目标程序格式是兼容的, 以及宿主计算机的操作*** 与 Linux 操作***的指令***是相同的, 且上述映像与其他映像之间 无映像共享及无需对上述映像进行二进制翻译时, 则上述步骤 ( 5 ) 是 可以省略的; 相反的, 若上述映像与其他映像之间存在映像共享或需 对上述映像进行二进制翻译时, 则上述步骤 ( 5 ) 是不能省略的。
( 6 ) 宿主计算机对上述重构后的映像进行重定向接口操作, 以执 行第一进程。
在该步骤中, 宿主计算机需要将 Linux 操作***中的第一目标程 序中的函数调用对应到宿主计算机的操作***中实现的与 Linux 操作 ***相对应的 API, 才可成功执行第一进程。
至此, 步骤 ( 1 ) 至步骤 ( 6 ) 完成了其他操作***兼容 Linux 操 作***的 ABI的过程。
本发明实施例提供的运行在兼容设备中的 ABI 兼容接口, 用于兼 容已有进程级 ABI 兼容技术, 并且方便以后对不同操作***的 ABI 的 扩展。 使用该 ABI 兼容接口, 宿主计算机的操作***能够方便的扩展 第三方操作***的 ABI 的执行环境, 以及能够极大地兼容已有的目标 程序, 同时减少了对宿主计算机的操作***的修改。
进一步地, 本发明实施例提供的 ABI 兼容组件注册队列, 用于使 得第三方操作***在宿主计算机的操作***中注册其对应的 ABI 兼容 组件。 使用该 ABI 兼容组件注册队列, 第三方操作***只需要实现与 其相对应的 ABI 兼容组件就可以在宿主计算机的操作***中兼容该第 三方操作***中的目标程序了。 所属领域的技术人员可以清楚地了解到, 为描述的方便和筒洁, 仅以上述各功能模块的划分进行举例说明, 实际应用中, 可以根据需 要而将上述功能分配由不同的功能模块完成, 即将装置的内部结构划 分成不同的功能模块, 以完成以上描述的全部或者部分功能。 上述描 述的***, 装置和单元的具体工作过程, 可以参考前述方法实施例中 的对应过程, 在此不再赘述。
在本申请所提供的几个实施例中, 应该理解到, 所揭露的***, 装置和方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实 施例仅仅是示意性的, 例如, 所述模块或单元的划分, 仅仅为一种逻 辑功能划分, 实际实现时可以有另外的划分方式, 例如多个单元或组 件可以结合或者可以集成到另一个***, 或一些特征可以忽略, 或不 执行。 另一点, 所显示或讨论的相互之间的耦合或直接耦合或通信连 接可以是通过一些接口, 装置或单元的间接耦合或通信连接, 可以是 电性, 机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开 的, 作为单元显示的部件可以是或者也可以不是物理单元, 即可以位 于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需 要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外, 在本发明各个实施例中的各功能单元可以集成在一个处理 单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单 元集成在一个单元中。 上述集成的单元既可以采用硬件的形式实现, 也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产 品销售或使用时, 可以存储在一个计算机可读取存储介质中。 基于这 样的理解, 本发明的技术方案本质上或者说对现有技术做出贡献的部 分或者该技术方案的全部或部分可以以软件产品的形式体现出来, 该 计算机软件产品存储在一个存储介质中, 包括若干指令用以使得一台 计算机设备 (可以是个人计算机, 服务器, 或者网络设备等) 或处理 器 (proce s sor ) 执行本发明各个实施例所述方法的全部或部分步骤。 而前述的存储介质包括: U盘、移动硬盘、只读存储器(ROM , Read-On ly Memory ) 、 随机存取存储器 ( RAM , Random Acce s s Memory ) 、 磁碟或 者光盘等各种可以存储程序代码的介质。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不 局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本 发明的保护范围应以所述权利要求的保护范围为准。

Claims

权 利 要 求
1、 一种兼容方法, 其特征在于, 包括:
若第一目标程序为本地已注册的目标程序, 则为所述第一目标程 序创建第一进程;
对所述第一目标程序进行重映射;
生成重映射表, 所述重映射表指示所述第一目标程序与重映射后 的所述第一目标程序之间的对应关系;
根据所述重映射表, 将重映射后的所述第一目标程序加载至所述 第一进程对应的本地内存中, 以生成重映射后的所述第一目标程序的 映像;
对所述映像进行重构;
确定重构后的所述映像的重定向接口, 以执行所述第一进程。
2、 根据权利要求 1所述的兼容方法, 其特征在于, 所述对所述第 一目标程序进行重映射的方法具体包括:
对所述第一目标程序进行段重组和 /或偏移计算。
3、 根据权利要求 1或 2所述的兼容方法, 其特征在于, 所述根据 所述重映射表, 将重映射后的所述第一目标程序加载至所述第一进程 对应的本地内存中, 以生成重映射后的所述第一目标程序的映像具体 包括:
获取所述第一目标程序中包含的符号表及重定位表;
根据所述重映射表, 将重映射后的所述第一目标程序加载至所述 本地内存中, 并根据所述符号表及重定位表, 对所述重映射后的所述 第一目标程序进行重定位, 以生成所述映像。
4、 根据权利要求 1 - 3任一项所述的兼容方法, 其特征在于, 所述 对所述映像进行重构包括:
对所述映像进行映像共享重构和 /或二进制翻译重构。
5、 根据权利要求 1 -4任一项所述的兼容方法, 其特征在于, 所述 确定重构后的所述映像的重定向接口的方法具体包括:
确定重构后的所述映像的重定向目标, 所述重定向目标为本地中 与重构后的所述映像对应的接口;
执行所述重定向目标, 以确定重构后的所述映像的重定向接口。
6、 根据权利要求 1 -5任一项所述的兼容方法, 其特征在于, 在执 行所述第一进程的过程中, 若所述映像缺失, 则根据所述重映射表, 重新将重映射后的所述第一目标程序加载至所述本地内存中, 以生成 所述映像。
7、 一种兼容设备, 其特征在于, 包括:
创建单元, 用于若第一目标程序为本地已注册的目标程序, 则为 所述第一目标程序创建第一进程;
映射单元, 用于对所述第一目标程序进行重映射;
生成单元, 用于生成重映射表, 所述重映射表指示所述第一目标 与重映射后的所述第一目标程序之间的对应关系;
加载单元, 用于根据所述重映射表, 将重映射后的所述第一目标 程序加载至所述第一进程对应的本地内存中, 以生成重映射后的所述 第一目标程序的映像;
处理单元, 用于对所述映像进行重构;
所述处理单元, 还用于确定重构后的所述映像的重定向接口, 以 执行所述第一进程。
8、 根据权利要求 7所述的兼容设备, 其特征在于,
所述映射单元, 具体用于对所述第一目标程序进行段重组和 /或偏 移计算。
9、 根据权利要求 7或 8所述的兼容设备, 其特征在于,
所述处理单元, 具体用于获取所述第一目标程序中包含的符号表 及重定位表;
以及所述加载单元, 具体用于根据所述重映射表, 将重映射后的 所述第一目标程序加载至所述本地内存中, 并根据所述符号表及重定 位表, 对所述重映射后的所述第一目标程序进行重定位, 以生成所述 映像。
1 0、 根据权利要求 7-9任一项所述的兼容设备, 其特征在于, 所述处理单元, 用于对所述映像进行映像共享重构和 /或二进制翻 译重构。
1 1、 根据权利要求 7-1 0任一项所述的兼容设备, 其特征在于, 所述处理单元, 具体用于确定重构后的所述映像的重定向目标, 以及执行所述重定向目标, 以确定重构后的所述映像的重定向接口, 所述重定向目标为本地中与重构后的所述映像对应的接口。
12、 根据权利要求 7-11任一项所述的兼容设备, 其特征在于, 所述加载单元, 还用于在所述处理单元执行所述第一进程的过程中, 若 所述映像缺失, 则根据所述重映射表, 重新将重映射后的所述第一目标 程序加载至所述本地内存中, 以生成所述映像。
PCT/CN2014/070961 2013-03-19 2014-01-21 一种兼容方法及装置 WO2014146508A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP14767779.3A EP2977897A4 (en) 2013-03-19 2014-01-21 METHOD AND APPARATUS FOR COMPATIBILITY
US14/858,593 US20160011890A1 (en) 2013-03-19 2015-09-18 Compatibility method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310088109.0A CN104063234B (zh) 2013-03-19 2013-03-19 一种兼容方法及装置
CN201310088109.0 2013-03-19

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/858,593 Continuation US20160011890A1 (en) 2013-03-19 2015-09-18 Compatibility method and apparatus

Publications (1)

Publication Number Publication Date
WO2014146508A1 true WO2014146508A1 (zh) 2014-09-25

Family

ID=51550958

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/070961 WO2014146508A1 (zh) 2013-03-19 2014-01-21 一种兼容方法及装置

Country Status (4)

Country Link
US (1) US20160011890A1 (zh)
EP (1) EP2977897A4 (zh)
CN (1) CN104063234B (zh)
WO (1) WO2014146508A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708518B (zh) * 2016-12-12 2020-02-14 中国航空工业集团公司西安航空计算技术研究所 一种染色器驱动运行时重构方法
US10152313B1 (en) * 2017-12-19 2018-12-11 International Business Machines Corporation Shared library transformation on the same architecture
CN109491725B (zh) * 2018-11-12 2022-12-27 火烈鸟网络(广州)股份有限公司 应用程序可交互多开方法和***、存储介质、电子设备
CN114510267B (zh) * 2022-04-20 2023-03-21 麒麟软件有限公司 基于Linux***的程序ABI接口兼容性计算方法
CN115167949B (zh) * 2022-09-08 2022-12-06 西安芯瞳半导体技术有限公司 高版本OpenGL函数适配低版本应用程序的方法、装置及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1405684A (zh) * 2001-08-22 2003-03-26 华神技术公司 一种x86系列兼容机及其操作***的生成方法
CN1731347A (zh) * 2004-08-06 2006-02-08 梁肇新 基于Linux的Windows软件兼容层体系结构
CN101650668A (zh) * 2008-08-11 2010-02-17 优诺威讯国际有限公司 虚拟环境的实现方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734822A (en) * 1995-12-29 1998-03-31 Powertv, Inc. Apparatus and method for preprocessing computer programs prior to transmission across a network
US6591414B2 (en) * 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium
US6381740B1 (en) * 1997-09-16 2002-04-30 Microsoft Corporation Method and system for incrementally improving a program layout
GB2363215B (en) * 1999-11-30 2004-01-21 Sgs Thomson Microelectronics Disassembling object code
US7299462B2 (en) * 2001-05-07 2007-11-20 Stmicroelectronics Limited Relocation format for linking
US6754117B2 (en) * 2002-08-16 2004-06-22 Micron Technology, Inc. System and method for self-testing and repair of memory modules
US8423976B2 (en) * 2003-03-13 2013-04-16 Northrop Grumman Corporation Extreme pipeline and optimized reordering technology
US7203696B2 (en) * 2003-08-29 2007-04-10 Microsoft Corporation Dynamic registry partitioning
GB2407656B (en) * 2003-10-28 2008-12-17 Symbian Ltd Mapping of dynamic link libraries in computing devices
JP4695348B2 (ja) * 2004-05-27 2011-06-08 株式会社リコー カード型メモリ、画像形成装置、画像形成装置起動方法
GB2427045B (en) * 2005-06-06 2007-11-21 Transitive Ltd Method and apparatus for converting program code with access coordination for a shared resource
JP4944033B2 (ja) * 2005-07-27 2012-05-30 パナソニック株式会社 情報処理システム、情報処理方法、実行バイナリイメージ作成装置、実行バイナリイメージ作成方法、実行バイナリイメージ作成プログラム、実行バイナリイメージ作成プログラムを記録したコンピュータ読み取り可能な記録媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プログラム及び実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記録媒体
US20080091800A1 (en) * 2006-10-13 2008-04-17 Xerox Corporation Local user interface support of remote services
US8789063B2 (en) * 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8832175B2 (en) * 2010-09-21 2014-09-09 Sourcecode Technology Holdings, Inc. Methods and apparatus for dynamic endpoint generators and dynamic remote object discovery and brokerage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1405684A (zh) * 2001-08-22 2003-03-26 华神技术公司 一种x86系列兼容机及其操作***的生成方法
CN1731347A (zh) * 2004-08-06 2006-02-08 梁肇新 基于Linux的Windows软件兼容层体系结构
CN101650668A (zh) * 2008-08-11 2010-02-17 优诺威讯国际有限公司 虚拟环境的实现方法及装置

Also Published As

Publication number Publication date
EP2977897A1 (en) 2016-01-27
US20160011890A1 (en) 2016-01-14
EP2977897A4 (en) 2016-03-09
CN104063234A (zh) 2014-09-24
CN104063234B (zh) 2017-06-27

Similar Documents

Publication Publication Date Title
Raveendran et al. A framework for elastic execution of existing mpi programs
US9218343B2 (en) Partition file system for virtual machine memory management
US8627310B2 (en) Capturing multi-disk virtual machine images automatically
US20180349194A1 (en) Accelerated data operations
CN106471469B (zh) 在虚拟化信息处理***中的输入/输出加速
JP5758995B2 (ja) 仮想マシン間で分析の結果を共有するためのシステム、方法及びコンピュータ可読記憶媒体
US9189271B2 (en) Operation transfer from an origin virtual machine to a destination virtual machine while continue the execution of the operation on the origin virtual machine
WO2014146508A1 (zh) 一种兼容方法及装置
CN111194437B (zh) 使用存储中代码执行的数据处理卸载
US20160132322A1 (en) Method and system for updating firmware
CN106777394B (zh) 一种集群文件***
WO2022041507A1 (zh) 3d渲染方法及***
CN110908753A (zh) 一种智能融合的云桌面服务器、客户端及***
US10684884B1 (en) Application containers running inside virtual machine
WO2016119322A1 (zh) 确定读写路径的方法和装置
CN114756290B (zh) 一种操作***安装方法、设备及可读存储介质
US20120159482A1 (en) Seamless application integration apparatus and method
CN115390996A (zh) 虚拟机迁移方法和装置、计算设备和存储介质
US11182347B2 (en) File sharing among virtual containers with fast recovery and self-consistency
US10852954B1 (en) Running an enterprise storage subsystem as a virtual machine
US9158550B2 (en) Caching based operating system installation
CN115701077A (zh) 一种对接微服务网格的方法以及装置
US11106380B2 (en) Migration of storage for workloads between desktop and cloud environments
US11029869B1 (en) System and method for multiqueued access to cloud storage
US11507512B2 (en) Fault tolerant cluster data handling

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14767779

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2014767779

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014767779

Country of ref document: EP