VEX-virtual extension framework
First Claim
1. A method for isolating an extension used by a host process, the method comprising the steps of:
- detecting an operation by the host process, wherein the operation is related to a functionality of the extension;
identifying a proxy for the extension, wherein the proxy supports the functionality related to the operation;
loading the proxy into the host process;
loading the extension into a virtual process, wherein the virtual process is a virtual instance of the host process;
forwarding from the proxy in the host process to the extension in the virtual process a request associated with the operation; and
forwarding, to the proxy in the host process, a response from the extension, wherein the response can be used by the proxy to support the operation by the host process.
2 Assignments
0 Petitions
Accused Products
Abstract
Extensions to operating systems or software applications can be hosted in virtual environments to fault isolate the extension. A generic proxy extension invoked by a host process can coordinate the invocation of an appropriate extension in a virtual process that can provide the same support APIs as the host process. Furthermore, a user mode context can be provided to the extension in the virtual process through memory copying or page table modifications. In addition, the virtual process, especially a virtual operating system process running on a virtual machine, can be efficiently started by cloning a coherent state. A coherent state can be created when a virtual machine starts up, or when the computing device starts up and the appropriate parameters are observed and saved. Alternatively, the operating system can create a coherent state by believing there is an additional CPU during the boot process.
-
Citations
40 Claims
-
1. A method for isolating an extension used by a host process, the method comprising the steps of:
-
detecting an operation by the host process, wherein the operation is related to a functionality of the extension;
identifying a proxy for the extension, wherein the proxy supports the functionality related to the operation;
loading the proxy into the host process;
loading the extension into a virtual process, wherein the virtual process is a virtual instance of the host process;
forwarding from the proxy in the host process to the extension in the virtual process a request associated with the operation; and
forwarding, to the proxy in the host process, a response from the extension, wherein the response can be used by the proxy to support the operation by the host process. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of efficiently creating a virtual operating system environment, the method comprising the steps of:
-
beginning a boot of an operating system environment on a computing device having at least one processor;
indicating, during the boot of the operating system environment, that the computing device has one or more additional processors to the at least one processor;
saving a state during the boot of the operating system environment after the at least one processor and the one or more additional processors have been initialized;
indicating to the operating system environment, after the operating system environment has completed at least one component binding associated with the at least one processor, that the one or more additional processors have failed;
providing, to the virtual operating system environment, the saved state;
booting the virtual operating system environment using the saved state, wherein the booting the virtual operating system environment comprises preventing the at least one processor from accessing at least one component associated with the at least one component binding; and
providing, to the virtual operating system environment, access to the at least one component binding using preexisting support for providing, to the one or more additional processors, access to the at least one component binding associated with the at least one processor. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A computer readable medium having computer executable instructions for isolating an extension used by a host process, the computer readable medium comprising computer executable instructions for:
-
detecting an operation by the host process, wherein the operation is related to a functionality of the extension;
identifying a proxy for the extension, wherein the proxy supports the functionality related to the operation;
loading the proxy into the host process;
loading the extension into a virtual process, wherein the virtual process is a virtual instance of the host process;
forwarding from the proxy in the host process to the extension in the virtual process a request associated with the operation; and
forwarding, to the proxy in the host process, a response from the extension, wherein the response can be used by the proxy to support the operation by the host process. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A computer readable medium having computer executable instructions for efficiently creating a virtual operating system environment, the computer readable medium comprising computer executable instructions for:
-
beginning a boot of an operating system environment on a computing device having at least one processor;
indicating, during the boot of the operating system environment, that the computing device has one or more additional processors to the at least one processor;
saving a state during the boot of the operating system environment after the at least one processor and the one or more additional processors have been initialized;
indicating to the operating system environment, after the operating system environment has completed at least one component binding associated with the at least one processor, that the one or more additional processors have failed;
providing, to the virtual operating system environment, the saved state;
booting the virtual operating system environment using the saved state, wherein the booting the virtual operating system environment comprises preventing the at least one processor from accessing at least one component associated with the at least one component binding; and
providing, to the virtual operating system environment, access to the at least one component binding using preexisting support for providing, to the one or more additional processors, access to the at least one component binding associated with the at least one processor. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. A computing device comprising:
- one or more processors; and
a memory storage, the memory storage comprising computer executable instructions for;
creating a host process, wherein the host process performs an operation;
creating a virtual process, wherein the virtual process is a virtual instance of the host process, and wherein further the virtual process supports an extension associated with the operation;
loading a proxy associated with the operation into the host process;
loading the extension into the virtual process;
forwarding, to the extension, a request from the proxy; and
forwarding, to the proxy, a response from the extension, wherein the response can be used by the proxy to support the operation. - View Dependent Claims (36, 37, 38, 39, 40)
- one or more processors; and
Specification