US20050055678A1 - Method and apparatus for managing software in computer system using virtual machine - Google Patents

Method and apparatus for managing software in computer system using virtual machine Download PDF

Info

Publication number
US20050055678A1
US20050055678A1 US10/926,308 US92630804A US2005055678A1 US 20050055678 A1 US20050055678 A1 US 20050055678A1 US 92630804 A US92630804 A US 92630804A US 2005055678 A1 US2005055678 A1 US 2005055678A1
Authority
US
United States
Prior art keywords
virtual machine
software
code
computer system
architecture
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US10/926,308
Inventor
Ryuji Sakai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Individual
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 Individual filed Critical Individual
Assigned to KABUSHIKI KAISHA TOSHIBA reassignment KABUSHIKI KAISHA TOSHIBA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SAKAI, RYUJI
Publication of US20050055678A1 publication Critical patent/US20050055678A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Definitions

  • the present invention relates generally to a computer system using a virtual machine, particularly to a technique for managing software in a virtual machine code.
  • Computer systems for executing software e.g., Java program, Java is a registered trademark
  • software e.g., Java program, Java is a registered trademark
  • OS operating system
  • the software is a computer program operating on a plurality of different instruction set architectures, and is executed by a computer system on which software called a virtual machine (VM) is mounted.
  • VM virtual machine
  • the virtual machine executes a virtual instruction string (virtual machine code) which defines a virtual instruction set architecture and in which a program described in a high-level language (e.g., Java language) is compiled.
  • a virtual instruction string virtual machine code
  • a program described in a high-level language e.g., Java language
  • a source code described in the Java language is converted into a virtual machine code (Java byte code) which is an execution format program of the virtual machine by a compiler.
  • the software especially package software, is managed by the virtual machine code, and executed when the virtual machine code is interpreted by the virtual machine.
  • a computer system including facilities to manage package software constituted of a virtual machine code to which virtual machine description defining an architecture assumed by a virtual machine has been added.
  • the system comprises: first storage unit for storing virtual machine description which defines an architecture of a virtual machine; generating unit for generating a virtual machine code from a program which is an execution object; second storage unit for storing software constituted of the virtual machine code to which the virtual machine description has been added; and management unit for taking the software from the second storage unit to execute the software, when the program is executed.
  • FIG. 1 is a block diagram showing a constitution of a computer system according to an embodiment of the present invention
  • FIG. 2 is a diagram showing one example of each description of a target machine and a virtual machine according to the present embodiment
  • FIG. 3 is a flowchart showing a processing procedure of a reverse compiler according to the present embodiment
  • FIG. 4 is a flowchart showing a procedure at the time of execution of a program according to the present embodiment
  • FIG. 5 is a block diagram showing another embodiment
  • FIG. 6 is a flowchart showing an operation of the other embodiment.
  • a computer system 1 includes a reverse compiler 20 which converts an assembly code 10 into a virtual machine code (VMC) 30 .
  • the assembly code 10 is a program specialized and designed for a target machine which is a microprocessor (CPU) including a specific architecture, for example, by program development.
  • the virtual machine code (VMC) 30 corresponds to a Java byte code having, for example, Java virtual machine specifications, and is an execution format program of a virtual machine.
  • the target machine (CPU) converts the virtual machine code (VMC) 30 into a machine code to execute the code at the time of execution.
  • the present system 1 includes a storage device 50 for managing software.
  • the storage In the storage device 50 virtualization level information 51 necessary for reverse compilation by the reverse compiler 20 , target machine description (TMD) 52 , virtual machine description (VMD) 53 , and package program 54 described later are stored.
  • TMD target machine description
  • VMD virtual machine description
  • package program 54 described later are stored.
  • the present system 1 is connected to Internet 2 , and also executes an operation for supplying the package program 54 being managed in accordance with a request from another computer system.
  • the TMD 52 and VMD 53 are information in which architectures such as instruction set architectures of a real machine and virtual machine are described.
  • the virtualization level information 51 is information indicating a degree of abstraction (virtualization hierarchy) in a case where a hardware dependent portion of the assembly code 10 that depends on hardware of a designated target machine is abstracted and converted into a virtual machine code.
  • the reverse compiler 20 executes reverse compilation to convert the assembly code 10 into the virtual machine code 30 using the TMD 52 in accordance with a virtualization level by the virtualization level information 51 .
  • the reverse compiler 20 executes processing similar to usual reverse compilation as shown in a flowchart of FIG. 3 .
  • a method of using the TMD 52 is similar to a method of using machine description in processing of a disassembler described, for example, in U.S. Pat. No. 6,021,272 which is a prior-art document.
  • the reverse compiler 20 successively executes analysis of an instruction code (S 1 ), division of a basic block (S 2 ), analysis of a control flow (S 3 ), analysis of a data flow (S 4 ), optimization (S 5 ), and generating of the instruction code (S 6 ).
  • the reverse compiler 20 uses the TMD 52 as instruction set architecture description 300 in each of the analysis of the instruction code (S 1 ), the optimization (S 5 ), and the generating of the instruction code (S 6 ).
  • the reverse compiler 20 may also retrace the virtualization hierarchy to repeat conversion in accordance with the virtualization level designated based on the designated virtualization level information 51 .
  • the reverse compiler 20 may also check dependence of the assembly code 10 on data between instructions, and notify pipeline hazard information or provide another hint for the optimization. When this mechanism is mounted, the assembly code developer can correct the assembly code and efficiently perform tuning in accordance with the hint.
  • a program 40 in which the designated virtual machine description (VMD) 53 stored in the storage device 50 has been added to the virtual machine code (VMC) 30 generated by the reverse compiler 20 is stored as the package program 54 in the storage device 50 .
  • the computer system 1 of the present embodiment converts the assembly code 10 specialized and designed for the target machine (CPU) having the specific architecture into the virtual machine code (VMC) 30 . Moreover, the present system 1 manages and operates the software by units of the program 40 in which the VMC 30 and the virtual machine description (VMD) 53 are packaged.
  • VMC virtual machine code
  • a JIT compiler 200 uses the VMD 53 from the program 40 in which the VMC 30 and the VMD 53 are packaged, and converts the VMC 30 into a machine code 110 of the target machine (CPU 100 ) at the time of execution of the software.
  • the CPU 100 executes the machine code 110 by an operation unit 120 or the like.
  • the computer system 1 of the present embodiment converts the assembly code 10 specialized and designed for the specific CPU architecture at the time of development of the program into the virtual machine code 30 having a high degree of abstraction (high versatility). That is, the virtual machine code 30 assuming a virtual architecture can cope with various types of architectures.
  • the computer system 1 of the present embodiment manages the software by the units of the program 40 in which the virtual machine code 30 and the virtual machine description (VMD) 53 are packaged. That is, when the VMD 53 defining various types of virtual architectures is added, it is possible to manage and operate the software in which a special architecture (e.g., SIMD instruction, special memory hierarchy, etc.) included in the software described in the assembly code 10 is reflected.
  • a special architecture e.g., SIMD instruction, special memory hierarchy, etc.
  • the virtual machine code 30 when the virtual machine code 30 is converted into the machine code of the target machine having an architecture different from that at the time of the development of the program, the code can be converted into a machine code in which the special architecture at the time of the development is reflected by the VMD 53 .
  • version-upgraded contents are included into the VMD 53 , and it is accordingly possible to efficiently operate an older version of the program in a new version.
  • the assembly code specialized for the specific architecture is managed and operated in a format of the virtual machine code (VMC) abstracted by the reverse compilation.
  • VMC virtual machine code
  • VMC virtual machine description
  • TMD target machine description
  • VMD virtual machine description
  • a program developer or user may also add information such as reservation of a resource which is an environment for operating the program, allocation, topology on network, and cooperation environment as expansion of the VMD 53 if necessary.
  • the computer system 1 of the present embodiment may also include a mechanism for instructing the reverse compiler 20 to maintain a instruction order, register allocation and the like in the assembly code developed by in consideration of the performance of the CPU, so that reversible conversion is executed to return the virtual machine code to the original assembly code at the time of the execution of the program.
  • FIGS. 5 and 6 are a block diagram and a flowchart showing another embodiment of a method of managing software.
  • a home network constituted of a home server 500 connected to Internet 2 and a plurality of electronic apparatuses 600 , 700 is assumed.
  • the home server 500 includes a CPU 520 including an architecture (A), and is connected to the plurality of electronic apparatuses 600 , 700 via the LAN to exchange data.
  • the respective electronic apparatuses 600 , 700 include CPUs 620 , 720 with different architectures (B), (C).
  • the home server 500 downloads a virtual machine code (VMC having a virtualization level X) which is a desired application program from the internet 2 (step S 11 ).
  • VMC virtual machine code
  • the home server 500 uses the TMD of the architecture (A), and converts the downloaded VMC having the virtualization level X into the VMC having a virtualization level A which has a relatively low degree of abstraction to store the code (step S 12 ).
  • the home server 500 executes the VMC having the virtualization level A by a virtual machine (VM-A) 510 having the virtualization level A at the time of the execution of the application program. Accordingly, the CPU 520 executes the machine code converted from the VMC having the virtualization level A to execute the application program.
  • VM-A virtual machine
  • the electronic apparatus 600 converts the VMC into that having a virtualization level B whose degree of abstraction is even lower to store the code (step S 13 ). At this time, the electronic apparatus 600 converts the VMC into that having the virtualization level B using the virtual machine description (VMD) and the TMD of the architecture (A) corresponding to the virtualization level B.
  • VMD virtual machine description
  • TMD the TMD of the architecture
  • the electronic apparatus 600 executes the VMC having the virtualization level B by a virtual machine (VM-B) 610 having the virtualization level B at the time of the execution of the application program. Accordingly, the CPU 620 executes the machine code converted from the VMC having the virtualization level B to execute the application program (steps S 14 , S 15 ).
  • VM-B virtual machine
  • the apparatus executes the VMC having a virtualization level C by a virtual machine (VM-C) 710 having the virtualization level C. Accordingly, the CPU 720 executes the machine code converted from the VMC having the virtualization level C to execute the application program.
  • VMC virtual machine
  • the high-rank home server 500 constituting the home network stores the virtual machine code having the virtualization level which has a relatively high degree of abstraction, and converts the code into the machine code at the time of the execution of the application program. Therefore, the code is converted into the code having a final machine level in accordance with the resource to which the application program is allocated in a stage in which the program actually operates, and accordingly relatively dense optimization can be realized.
  • various virtualization levels can be defined as the virtualization levels, and the application program can be held at a virtualization level which is suitable for circulation or distribution of the application program through the network, loading onto a memory, execution, primary storage and the like. Accordingly, the optimization of the application program is flexibly applied, and the conversion cost of the program can be reduced.
  • the home server 500 or the respective electronic apparatuses 600 , 700 may also include a mechanism for rewriting the virtual machine code having an original or intermediate level based on profile information or the like at the time of the execution of the program.

Abstract

There is disclosed a software management system which is applied to a computer system using a virtual machine. The software management system converts an assembly code specialized and generated for an architecture of a designated microprocessor into a virtual machine code, and manages and operates the code as package software in which the virtual machine code and virtual machine description are packaged.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2003-304780, filed Aug. 28, 2003, the entire contents of which are incorporated herein by reference.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention relates generally to a computer system using a virtual machine, particularly to a technique for managing software in a virtual machine code.
  • 2. Description of the Related Art
  • Computer systems for executing software (e.g., Java program, Java is a registered trademark) which does not depend on hardware of a computer or a platform of an operating system (OS) or the like have heretofore been used in various types of electronic apparatuses.
  • The software is a computer program operating on a plurality of different instruction set architectures, and is executed by a computer system on which software called a virtual machine (VM) is mounted.
  • The virtual machine executes a virtual instruction string (virtual machine code) which defines a virtual instruction set architecture and in which a program described in a high-level language (e.g., Java language) is compiled.
  • For example, in a system having Java virtual machine specifications, a source code described in the Java language is converted into a virtual machine code (Java byte code) which is an execution format program of the virtual machine by a compiler. The software, especially package software, is managed by the virtual machine code, and executed when the virtual machine code is interpreted by the virtual machine. There is also a system for converting the virtual machine code into a machine code which is an execution format code of a specific machine (microprocessor: CPU) to be executed by a just-in-time (JIT) compiler at the time of execution.
  • Many virtual machines constituted of instruction sets virtualized in this manner have a high degree of abstraction so that various types of architectures can be universally handled. Therefore, an execution efficiency of the software having the virtual machine specifications lowers as compared with software described in an assembly code specialized and developed for a specific CPU architecture especially to pursue an ultimate performance of the computer. Therefore, especially a program requiring a high performance specialized for the hardware is described in the assembly code while versatility is sacrificed in many cases.
  • Additionally, a system has also been developed in which the program described in the assembly code is translated into a program of another architecture and executed, or instructions are interpreted/executed one by one at the time of execution in order to obtain versatility of the virtual machine (see U.S. Pat. No. 6,021,272 or 5,307,492, for example).
  • However, in the method described in the prior-art document or the like, for example, even when a program specialized for a single instruction multiple data (SIMD) instruction or the architecture of a special memory hierarchy is simply converted into a program corresponding to the other architecture, advantages of specialty cannot be inherited.
  • On the other hand, when the architecture is version-upgraded, it is sometimes difficult to efficiently operate an old version of a program in a new version because of the specialty.
  • BRIEF SUMMARY OF THE INVENTION
  • In accordance with one embodiment of the present invention, there is provided a computer system including facilities to manage package software constituted of a virtual machine code to which virtual machine description defining an architecture assumed by a virtual machine has been added.
  • The system comprises: first storage unit for storing virtual machine description which defines an architecture of a virtual machine; generating unit for generating a virtual machine code from a program which is an execution object; second storage unit for storing software constituted of the virtual machine code to which the virtual machine description has been added; and management unit for taking the software from the second storage unit to execute the software, when the program is executed.
  • BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING
  • The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention, and together with the general description given above and the detailed description of the embodiments given below, serve to explain the principles of the invention.
  • FIG. 1 is a block diagram showing a constitution of a computer system according to an embodiment of the present invention;
  • FIG. 2 is a diagram showing one example of each description of a target machine and a virtual machine according to the present embodiment;
  • FIG. 3 is a flowchart showing a processing procedure of a reverse compiler according to the present embodiment;
  • FIG. 4 is a flowchart showing a procedure at the time of execution of a program according to the present embodiment;
  • FIG. 5 is a block diagram showing another embodiment; and
  • FIG. 6 is a flowchart showing an operation of the other embodiment.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Embodiments of the present invention will be described hereinafter with reference to the drawings.
  • (Constitution of System)
  • As shown in FIG. 1, a computer system 1 according to the present embodiment includes a reverse compiler 20 which converts an assembly code 10 into a virtual machine code (VMC) 30. The assembly code 10 is a program specialized and designed for a target machine which is a microprocessor (CPU) including a specific architecture, for example, by program development.
  • The virtual machine code (VMC) 30 corresponds to a Java byte code having, for example, Java virtual machine specifications, and is an execution format program of a virtual machine. The target machine (CPU) converts the virtual machine code (VMC) 30 into a machine code to execute the code at the time of execution.
  • Furthermore, the present system 1 includes a storage device 50 for managing software. The storage In the storage device 50, virtualization level information 51 necessary for reverse compilation by the reverse compiler 20, target machine description (TMD) 52, virtual machine description (VMD) 53, and package program 54 described later are stored.
  • Here, the present system 1 is connected to Internet 2, and also executes an operation for supplying the package program 54 being managed in accordance with a request from another computer system.
  • Concretely, as shown in FIG. 2, the TMD 52 and VMD 53 are information in which architectures such as instruction set architectures of a real machine and virtual machine are described. The virtualization level information 51 is information indicating a degree of abstraction (virtualization hierarchy) in a case where a hardware dependent portion of the assembly code 10 that depends on hardware of a designated target machine is abstracted and converted into a virtual machine code.
  • The reverse compiler 20 executes reverse compilation to convert the assembly code 10 into the virtual machine code 30 using the TMD 52 in accordance with a virtualization level by the virtualization level information 51. The reverse compiler 20 executes processing similar to usual reverse compilation as shown in a flowchart of FIG. 3.
  • It is to be noted that a method of using the TMD 52 is similar to a method of using machine description in processing of a disassembler described, for example, in U.S. Pat. No. 6,021,272 which is a prior-art document.
  • That is, as shown in FIG. 3, the reverse compiler 20 successively executes analysis of an instruction code (S1), division of a basic block (S2), analysis of a control flow (S3), analysis of a data flow (S4), optimization (S5), and generating of the instruction code (S6). The reverse compiler 20 uses the TMD 52 as instruction set architecture description 300 in each of the analysis of the instruction code (S1), the optimization (S5), and the generating of the instruction code (S6).
  • Furthermore, the reverse compiler 20 may also retrace the virtualization hierarchy to repeat conversion in accordance with the virtualization level designated based on the designated virtualization level information 51. The reverse compiler 20 may also check dependence of the assembly code 10 on data between instructions, and notify pipeline hazard information or provide another hint for the optimization. When this mechanism is mounted, the assembly code developer can correct the assembly code and efficiently perform tuning in accordance with the hint.
  • Additionally, in the present system 1, a program 40 in which the designated virtual machine description (VMD) 53 stored in the storage device 50 has been added to the virtual machine code (VMC) 30 generated by the reverse compiler 20 is stored as the package program 54 in the storage device 50.
  • As described above, the computer system 1 of the present embodiment converts the assembly code 10 specialized and designed for the target machine (CPU) having the specific architecture into the virtual machine code (VMC) 30. Moreover, the present system 1 manages and operates the software by units of the program 40 in which the VMC 30 and the virtual machine description (VMD) 53 are packaged.
  • In the present system 1, as shown in FIG. 4, a JIT compiler 200 uses the VMD 53 from the program 40 in which the VMC 30 and the VMD 53 are packaged, and converts the VMC 30 into a machine code 110 of the target machine (CPU 100) at the time of execution of the software. The CPU 100 executes the machine code 110 by an operation unit 120 or the like.
  • Therefore, the computer system 1 of the present embodiment converts the assembly code 10 specialized and designed for the specific CPU architecture at the time of development of the program into the virtual machine code 30 having a high degree of abstraction (high versatility). That is, the virtual machine code 30 assuming a virtual architecture can cope with various types of architectures.
  • Furthermore, the computer system 1 of the present embodiment manages the software by the units of the program 40 in which the virtual machine code 30 and the virtual machine description (VMD) 53 are packaged. That is, when the VMD 53 defining various types of virtual architectures is added, it is possible to manage and operate the software in which a special architecture (e.g., SIMD instruction, special memory hierarchy, etc.) included in the software described in the assembly code 10 is reflected.
  • Therefore, it is possible to improve applicability to the specific architecture together with the versatility, with these virtual machine specifications.
  • Concretely, when the virtual machine code 30 is converted into the machine code of the target machine having an architecture different from that at the time of the development of the program, the code can be converted into a machine code in which the special architecture at the time of the development is reflected by the VMD 53.
  • Moreover, even when the architecture at the time of the development of the program is version-upgraded, version-upgraded contents are included into the VMD 53, and it is accordingly possible to efficiently operate an older version of the program in a new version.
  • In short, according to a software management method of the present embodiment, the assembly code specialized for the specific architecture is managed and operated in a format of the virtual machine code (VMC) abstracted by the reverse compilation.
  • Moreover, the VMC, the virtual machine description (VMD), and the target machine description (TMD) are separately managed (stored). Therefore, it is possible to improve the applicability to another target machine or the version-upgraded architecture without impairing an execution performance of the program described in the assembly code. As a result, it is possible to reduce management and operation costs of the software.
  • It is to be noted that it is inefficient in the management to add copies of all information to each package with respect to the virtual machine description (VMD) 53, and therefore a method of adding ID information for identifying the VMD 53 to the VMC 30 to manage the software may also be used.
  • Furthermore, a program developer or user may also add information such as reservation of a resource which is an environment for operating the program, allocation, topology on network, and cooperation environment as expansion of the VMD 53 if necessary.
  • Additionally, the computer system 1 of the present embodiment may also include a mechanism for instructing the reverse compiler 20 to maintain a instruction order, register allocation and the like in the assembly code developed by in consideration of the performance of the CPU, so that reversible conversion is executed to return the virtual machine code to the original assembly code at the time of the execution of the program.
  • (Other Embodiment)
  • FIGS. 5 and 6 are a block diagram and a flowchart showing another embodiment of a method of managing software.
  • In the present embodiment, as shown in FIG. 5, a home network (LAN) constituted of a home server 500 connected to Internet 2 and a plurality of electronic apparatuses 600, 700 is assumed. The home server 500 includes a CPU 520 including an architecture (A), and is connected to the plurality of electronic apparatuses 600, 700 via the LAN to exchange data. The respective electronic apparatuses 600, 700 include CPUs 620, 720 with different architectures (B), (C).
  • A constitution of the present embodiment will be described hereinafter with reference to the flowchart of FIG. 6 together with FIG. 5.
  • The home server 500 downloads a virtual machine code (VMC having a virtualization level X) which is a desired application program from the internet 2 (step S11).
  • The home server 500 uses the TMD of the architecture (A), and converts the downloaded VMC having the virtualization level X into the VMC having a virtualization level A which has a relatively low degree of abstraction to store the code (step S12).
  • The home server 500 executes the VMC having the virtualization level A by a virtual machine (VM-A) 510 having the virtualization level A at the time of the execution of the application program. Accordingly, the CPU 520 executes the machine code converted from the VMC having the virtualization level A to execute the application program.
  • On the other hand, for example, when the VMC having the virtualization level A is transferred from the home server 500, the electronic apparatus 600 converts the VMC into that having a virtualization level B whose degree of abstraction is even lower to store the code (step S13). At this time, the electronic apparatus 600 converts the VMC into that having the virtualization level B using the virtual machine description (VMD) and the TMD of the architecture (A) corresponding to the virtualization level B.
  • Moreover, the electronic apparatus 600 executes the VMC having the virtualization level B by a virtual machine (VM-B) 610 having the virtualization level B at the time of the execution of the application program. Accordingly, the CPU 620 executes the machine code converted from the VMC having the virtualization level B to execute the application program (steps S14, S15).
  • It is to be noted that this also applies to the electronic apparatus 700. At the time of the execution of the application program, the apparatus executes the VMC having a virtualization level C by a virtual machine (VM-C) 710 having the virtualization level C. Accordingly, the CPU 720 executes the machine code converted from the VMC having the virtualization level C to execute the application program.
  • As described above, according to the present embodiment, there is provided a mechanism for converting the virtual machine code having a virtualization level which has a relatively high degree of abstraction into the virtual machine code whose degree of abstraction is relatively low, instead of immediately converting the virtual machine code into a machine code of a real machine. Accordingly, the high-rank home server 500 constituting the home network stores the virtual machine code having the virtualization level which has a relatively high degree of abstraction, and converts the code into the machine code at the time of the execution of the application program. Therefore, the code is converted into the code having a final machine level in accordance with the resource to which the application program is allocated in a stage in which the program actually operates, and accordingly relatively dense optimization can be realized.
  • In short, various virtualization levels can be defined as the virtualization levels, and the application program can be held at a virtualization level which is suitable for circulation or distribution of the application program through the network, loading onto a memory, execution, primary storage and the like. Accordingly, the optimization of the application program is flexibly applied, and the conversion cost of the program can be reduced.
  • Moreover, the home server 500 or the respective electronic apparatuses 600, 700 may also include a mechanism for rewriting the virtual machine code having an original or intermediate level based on profile information or the like at the time of the execution of the program.
  • Furthermore, information such as the reservation of the resource which is the environment for operating the program, allocation, topology on the network, and cooperation environment is abstracted, and packaged together with the virtual machine code. Accordingly, a program for performing real-time processing including many restrictions or distributed data processing can be circulated.
  • Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details and representative embodiments the specific details and representative embodiments shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general invention concept as defined by the appended claims and their equivalents.

Claims (13)

1. A computer system comprising:
a first storage unit to store virtual machine description which defines an architecture of a virtual machine;
a generating unit to generate a virtual machine code from a program which is an execution object;
a second storage unit to store software constituted of the virtual machine code to which the virtual machine description has been added; and
a management unit which takes the software from the second storage unit to execute the software, when the program is executed.
2. The computer system according to claim 1, wherein the management unit includes a compiler which manages the software as package software and which converts the package software into an execution format program of a microprocessor, when the program is executed by the microprocessor.
3. The computer system according to claim 1, wherein the virtual machine is software which does not depend on a platform of a computer.
4. The computer system according to claim 1, wherein the generating unit generates the virtual machine code by use of target machine description which defines the architecture of a designated microprocessor.
5. The computer system according to claim 1, wherein the generating unit includes a reverse compiler which executes reverse compilation to generate the virtual machine code from an assembly code generated based on the architecture of a designated microprocessor.
6. The computer system according to claim 1, wherein the management unit includes a compiler which converts the software into a machine code having an execution format to be executed by a designated microprocessor.
7. The computer system according to claim 1, wherein the first storage unit stores the virtual machine description corresponding to virtual machines corresponding to different virtualization levels.
8. A computer system comprising:
a unit which acquires a virtual machine code generated based on an architecture of a designated microprocessor;
a generating unit to generate package software in which virtual machine description defining architectures of virtual machines having different virtualization levels is combined with the virtual machine code; and
a unit which supplies the package software corresponding to the virtualization level to a system including a virtual machine having a designated virtualization level.
9. The computer system according to claim 8, further comprising:
a unit which converts the package software into a machine code corresponding to the architecture of the designated microprocessor by a compiler.
10. A method of managing software for a computer system using a virtual machine, the method comprising:
generating a virtual machine code from a designated program; and
storing software in which virtual machine description defining an architecture of a virtual machine has been added to the virtual machine code into a storage unit.
11. The method according to claim 10, wherein the generating of the virtual machine code comprises: using target machine description which defines the architecture of a designated microprocessor.
12. The method according to claim 10, wherein the generating of the virtual machine code comprises: executing reverse compilation from an assembly code generated based on the architecture of a designated microprocessor to generate the virtual machine code.
13. The method according to claim 10, wherein the software includes a program having a format which is convertible into a machine code corresponding to the architecture of a designated microprocessor by a designated compiler.
US10/926,308 2003-08-28 2004-08-26 Method and apparatus for managing software in computer system using virtual machine Abandoned US20050055678A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003-304780 2003-08-28
JP2003304780A JP2005078178A (en) 2003-08-28 2003-08-28 Computer system and software management method

Publications (1)

Publication Number Publication Date
US20050055678A1 true US20050055678A1 (en) 2005-03-10

Family

ID=34225078

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/926,308 Abandoned US20050055678A1 (en) 2003-08-28 2004-08-26 Method and apparatus for managing software in computer system using virtual machine

Country Status (2)

Country Link
US (1) US20050055678A1 (en)
JP (1) JP2005078178A (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108507A1 (en) * 2003-11-17 2005-05-19 Saurabh Chheda Security of program executables and microprocessors based on compiler-arcitecture interaction
US20060174230A1 (en) * 2005-01-31 2006-08-03 Honeywell International Inc. Methods for hosting general purpose computer languages on speical purpose systems
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20090083699A1 (en) * 2007-09-20 2009-03-26 Viswanathan Santhanam Reversible object code compiler for mathematical models
US20090300590A1 (en) * 2002-07-09 2009-12-03 Bluerisc Inc., A Massachusetts Corporation Statically speculative compilation and execution
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US8635613B1 (en) * 2008-10-28 2014-01-21 United Services Automobile Association (Usaa) Systems and methods for virtual machine packaging of software
US9569186B2 (en) 2003-10-29 2017-02-14 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US9720799B1 (en) * 2012-09-29 2017-08-01 Google Inc. Validating applications using object level hierarchy analysis

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151701A (en) * 1997-09-30 2000-11-21 Ahpah Software, Inc. Method for reconstructing debugging information for a decompiled executable file

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151701A (en) * 1997-09-30 2000-11-21 Ahpah Software, Inc. Method for reconstructing debugging information for a decompiled executable file

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300590A1 (en) * 2002-07-09 2009-12-03 Bluerisc Inc., A Massachusetts Corporation Statically speculative compilation and execution
US10101978B2 (en) 2002-07-09 2018-10-16 Iii Holdings 2, Llc Statically speculative compilation and execution
US9235393B2 (en) 2002-07-09 2016-01-12 Iii Holdings 2, Llc Statically speculative compilation and execution
US10248395B2 (en) 2003-10-29 2019-04-02 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US9569186B2 (en) 2003-10-29 2017-02-14 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US20050108507A1 (en) * 2003-11-17 2005-05-19 Saurabh Chheda Security of program executables and microprocessors based on compiler-arcitecture interaction
US9582650B2 (en) 2003-11-17 2017-02-28 Bluerisc, Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US10268480B2 (en) 2004-02-04 2019-04-23 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US9697000B2 (en) 2004-02-04 2017-07-04 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
US9244689B2 (en) 2004-02-04 2016-01-26 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
US20060174230A1 (en) * 2005-01-31 2006-08-03 Honeywell International Inc. Methods for hosting general purpose computer languages on speical purpose systems
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US9940445B2 (en) 2006-11-03 2018-04-10 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US9069938B2 (en) 2006-11-03 2015-06-30 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US10430565B2 (en) 2006-11-03 2019-10-01 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US11163857B2 (en) 2006-11-03 2021-11-02 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US20090083699A1 (en) * 2007-09-20 2009-03-26 Viswanathan Santhanam Reversible object code compiler for mathematical models
US8250541B2 (en) * 2007-09-20 2012-08-21 The Boeing Company Reversible object code compiler for mathematical models
US9069595B1 (en) 2008-10-28 2015-06-30 United Services Automobile Association (Usaa) Systems and methods for overseas desktop software
US8635613B1 (en) * 2008-10-28 2014-01-21 United Services Automobile Association (Usaa) Systems and methods for virtual machine packaging of software
US9720799B1 (en) * 2012-09-29 2017-08-01 Google Inc. Validating applications using object level hierarchy analysis

Also Published As

Publication number Publication date
JP2005078178A (en) 2005-03-24

Similar Documents

Publication Publication Date Title
CN102165428B (en) Software application performance enhancement
US11385872B2 (en) Extending a virtual machine instruction set architecture
EP1728155B1 (en) Method and system for performing link-time code optimization without additional code analysis
CN100476721C (en) Methods and apparatus to provide a modular native method invocation system, and system thereof
US6035120A (en) Method and apparatus for converting executable computer programs in a heterogeneous computing environment
US6738967B1 (en) Compiling for multiple virtual machines targeting different processor architectures
US6286134B1 (en) Instruction selection in a multi-platform environment
US10452409B2 (en) Universal adapter for native calling
US20070033592A1 (en) Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
EP1491999A2 (en) Software development infrastructure
US20030237080A1 (en) System and method for improved register allocation in an optimizing compiler
US20050071856A1 (en) Dynamically loadable stub modules
US20180032355A1 (en) Container-based language runtime loading an isolated method
US6665671B2 (en) System and method for optimization of shared data
JP2007511816A (en) Dynamic addressing (DA) using centralized DA manager
US20070006185A1 (en) System and method for reducing execution time of bytecode in java virtual machine
US20050055678A1 (en) Method and apparatus for managing software in computer system using virtual machine
US20230057055A1 (en) Modeling foreign functions using executable references
JP2008003882A (en) Compiler program, area allocation optimizing method of list vector, compile processing device and computer readable medium recording compiler program
KR101083271B1 (en) System and method for converting active x control
EP1046985A2 (en) File portability techniques
JP3682050B2 (en) Embedded software development equipment
US11243876B2 (en) Techniques for accessing off-heap memory
US20210294626A1 (en) Optimizing execution of foreign method handles on a virtual machine
Chao JET: an application of partial evaluation in dynamic code generation for Java

Legal Events

Date Code Title Description
AS Assignment

Owner name: KABUSHIKI KAISHA TOSHIBA, JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SAKAI, RYUJI;REEL/FRAME:015994/0702

Effective date: 20040830

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION