IP Library Granted Patent US 11,875,159
Granted Patent B1
US 11,875,159 · App. 17/197,456 · Granted Jan 16, 2024

Portable application based virtualization

Inventor: Andrey Stupachenko (Moscow, RU)
Assignee: Parallels International GmbH
G06F9/44584G06F9/45558G06F9/542G06F12/0882G06F12/109G06F2009/4557G06F2009/45583
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,875,159
App. No.
17/197,456
Granted
Jan 16, 2024
Kind
B1
Abstract

Virtualization exploits virtual rather than actual elements such as computer hardware platforms, storage devices, and computer network resources for example. However, prior art techniques have limitations including, for example, memory requirements and resource requirements which typically either limit their deployment to remote server based systems or limit the number of concurrent virtual machines a system can support. Embodiments of the invention address these limitations by supporting application virtualization on foreign operating systems with reduced resource usage by removing the requirement for virtualization of the entire foreign operating system. The inventive virtualization provides creation of an isolated memory space with isolated code execution using hardware assistance.

Claims (170)

1. A method of establishing a virtualized application upon a computer system comprising:

executing upon the computer system a virtualization executable application to generate a portable application for a software application; wherein

the software application executes with a host operating system;

the portable application executes the software application with a reduced version of the host operating system; and

the portable application is executed with a lightweight hypervisor upon another computer system.

2. The method according to claim 1 , wherein

in a first configuration the computer system and the other computer system are the same computer system;

in a second configuration the other computer system executes the portable application upon the computer system in dependence upon a link generated by the computer system and transmitted to the other computer system; and

in a third configuration the other computer system executes the portable application upon the other computer system based upon the portable application being transmitted to the other computer system.

3. The method according to claim 1 , wherein

the portable application only executes a subset of the functionality of the software application.

4. The method according to claim 1 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module executes a process comprising the steps of:

establishing hooks for statically imported application programming interface (API) functions and dynamic imported API functions to cover system calls;

hook all system call gates from a userspace to a kernel to establish whether the software application when executed issues one or more calls without using a system API; and

generate a list of all system dependent calls wherein libraries of the software application are not modified so that only the system API is hooked.

5. The method according to claim 1 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module is executed prior to the emulation library; and

the emulation library executes a process comprising the steps of:

converting parameters which are transferred from and to the software application;

issuing a VMCALL to notify the host OS of the software application;

determines whether the software application executes code not found by the analyser module; and

upon a positive determination issuing a special virtual machine (VM) call.

6. The method according to claim 1 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module is executed prior to the portable virtualization kernel; and

the portable virtualization kernel executes a process comprising the steps of:

initializing a memory layout with values established by the analyser module;

create a virtual memory translation of all memory pages of the software application;

initialize a set of system register

create fake exception handlers to hook all exception handlers within the software application;

create system specific structures;

allocate memory for stack and heap memory structures;

load the native application code of the software application; and

initiates execution of the native application code.

7. The method according to claim 1 , wherein

the set of system registers include:

a first portion comprising control registers;

a second portion comprising debug registers; and

at least one of a fake global descriptor table and a fake interrupt descriptor table.

8. The method according to claim 1 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the virtualization executable application executes a process comprising the steps of:

executing the analyser module to generate a memory layout with values;

acquire the software application;

acquire the statically imported libraries required by the software application;

acquire the dynamically imported libraries required by the software application;

acquires other files required by the software application;

creates the portable application by generating a native executable comprising:

the output from the emulation library;

the portable virtualization kernel;

the statically imported libraries;

the dynamically imported libraries; and

the lightweight hypervisor.

9. The method according to claim 1 , further comprising

generating upon the computer system at link to execute the portable application; wherein

the link instructs the software application to launch the portable application with the lightweight hypervisor rather than the software application.

10. The method according to claim 1 , wherein

the portable application is one of a plurality of portable applications;

each portable application of the plurality of portable applications implements a predetermined subset of the functionality of the software application; and

each predetermined subset of the functionality of the software application is less than the full functionality of the software application.

11. The method according to claim 1 , wherein

the other computer system upon which the portable application is executed is other than the computer system upon which the portable application is generated.

12. The method according to claim 1 , wherein

the portable application stores data relating to its execution which is stored upon the computer system;

the portable application can be transferred from the other computer system to a further computer system during its execution; and

the portable application resumes execution upon the further computer system in dependence upon the data relating to its execution.

13. A computer system for establishing a virtualized application upon the computer system comprising:

a microprocessor;

a storage medium storing computer executable instructions for execution by the microprocessor; wherein

the computer executable instructions execute a virtualization executable application to generate a portable application for a software application and a link to execute the portable application; wherein

the software application executes with a host operating system;

the portable application executes the software application with a reduced version of the host operating system; and

the portable application is executed with a lightweight hypervisor upon another computer system.

14. The computer system according to claim 13 , wherein

in a first configuration the computer system and the other computer system are the same computer system;

in a second configuration the other computer system executes the portable application upon the computer system in dependence upon a link generated by the computer system and transmitted to the other computer system; and

in a third configuration the other computer system executes the portable application upon the other computer system based upon the portable application being transmitted to the other computer system.

15. The computer system according to claim 13 , wherein

the portable application only executes a subset of the functionality of the software application.

16. The computer system according to claim 13 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module executes a process comprising the steps of:

establishing hooks for statically imported application programming interface (API) functions and dynamic imported API functions to cover system calls;

hook all system call gates from a userspace to a kernel to establish whether the software application when executed issues one or more calls without using a system API; and

generate a list of all system dependent calls wherein libraries of the software application are not modified so that only the system API is hooked.

17. The computer system according to claim 13 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module is executed prior to the emulation library; and

the emulation library executes a process comprising the steps of:

converting parameters which are transferred from and to the software application;

issuing a VMCALL to notify the host OS of the software application;

determines whether the software application executes code not found by the analyser module; and

upon a positive determination issuing a special virtual machine (VM) call.

18. The computer system according to claim 13 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the analyser module is executed prior to the portable virtualization kernel; and

the portable virtualization kernel executes a process comprising the steps of:

initializing a memory layout with values established by the analyser module;

create a virtual memory translation of all memory pages of the software application;

initialize a set of system register

create fake exception handlers to hook all exception handlers within the software application;

create system specific structures;

allocate memory for stack and heap memory structures;

load the native application code of the software application; and

initiates execution of the native application code.

19. The computer system according to claim 13 , wherein

the set of system registers include:

a first portion comprising control registers;

a second portion comprising debug registers; and

at least one of a fake global descriptor table and a fake interrupt descriptor table.

20. The computer system according to claim 13 , wherein

the virtualization executable application generating the portable application comprises:

an analyser module;

an emulation library; and

a portable virtualization kernel;

the lightweight hypervisor; wherein

the virtualization executable application executes a process comprising the steps of:

executing the analyser module to generate a memory layout with values;

acquire the software application;

acquire the statically imported libraries required by the software application;

acquire the dynamically imported libraries required by the software application;

acquires other files required by the software application;

creates the portable application by generating a native executable comprising:

the output from the emulation library;

the portable virtualization kernel;

the statically imported libraries;

the dynamically imported libraries; and

the lightweight hypervisor.

21. The computer system according to claim 13 , further comprising

generating upon the computer system at link to execute the portable application; wherein

the link instructs the software application to launch the portable application with the lightweight hypervisor rather than the software application.

22. The computer system according to claim 13 , wherein

the portable application is one of a plurality of portable applications;

each portable application of the plurality of portable applications implements a predetermined subset of the functionality of the software application; and

each predetermined subset of the functionality of the software application is less than the full functionality of the software application.

23. The computer system according to claim 13 , wherein

the portable application generates data relating to its execution which is stored upon the computer system;

the portable application can be transferred from the other computer system to a further computer system during its execution; and

the portable application resumes execution upon the further computer system in dependence upon the data relating to its execution.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2021
From: STUPACHENKO, ANDREY
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 055550/0046 →
Cited By (2)
US 12,386,636 US 12,670,039