VEX—virtual extension framework
First Claim
1. A method implemented in a computing system comprising a processor and memory, the method for isolating an extension from a host process, the extension configured for use by the host process and comprising a service application program interface, the host process comprising a support application program interface, the method comprising:
- detecting, by the computing system, a host process operation related to the service application program interface of the extension;
identifying, by the computing system, a proxy for the extension, the proxy being configured to emulate at least the service application program interface of the extension;
invoking the proxy by the host process;
instantiating, by the computing system, a virtual instance of the host process, the virtual instance being configured to emulate at least the support application program interface of the host process, the computing system being configured to detect an error in the virtual instance and return control to the host process with an error indication in response thereto;
invoking the extension by the virtual instance;
forwarding from the proxy invoked by the host process to the extension invoked by the virtual instance a request associated with the host process operation; and
forwarding, to the proxy invoked by the host process, a response from the extension invoked by the virtual instance, the response being configured for use by the proxy to support the host process operation.
1 Assignment
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.
30 Citations
26 Claims
-
1. A method implemented in a computing system comprising a processor and memory, the method for isolating an extension from a host process, the extension configured for use by the host process and comprising a service application program interface, the host process comprising a support application program interface, the method comprising:
-
detecting, by the computing system, a host process operation related to the service application program interface of the extension; identifying, by the computing system, a proxy for the extension, the proxy being configured to emulate at least the service application program interface of the extension; invoking the proxy by the host process; instantiating, by the computing system, a virtual instance of the host process, the virtual instance being configured to emulate at least the support application program interface of the host process, the computing system being configured to detect an error in the virtual instance and return control to the host process with an error indication in response thereto; invoking the extension by the virtual instance; forwarding from the proxy invoked by the host process to the extension invoked by the virtual instance a request associated with the host process operation; and forwarding, to the proxy invoked by the host process, a response from the extension invoked by the virtual instance, the response being configured for use by the proxy to support the host process operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer readable storage medium having computer executable instructions for isolating an extension from a host process, the extension configured for use by the host process and comprising a service application program interface, the host process comprising a support application program interface, the computer readable medium comprising computer executable instructions for:
-
detecting a host process operation related to the service application program interface of the extension; identifying a proxy for the extension, the proxy being configured to emulate at least the service application program interface of the extension; instantiating a virtual process, the virtual process being configured to emulate at least the support application program interface of the host process; invoking the proxy by the host process; invoking the extension by the virtual process; returning control to the host process with an error indication in response to detection of an error in the virtual instance; forwarding from the proxy invoked by the host process to the extension invoked by the virtual process a request associated with the host process operation; and forwarding, to the proxy invoked by the host process, a response from the extension invoked by, wherein the response can be used by the proxy to support the host process operation by the host process. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A computing device comprising:
- one or more processors; and
a memory storage, the memory storage comprising computer executable instructions for;creating a host process, the host process configured to perform an operation and comprising a support application program interface; creating a virtual process, the virtual process being a virtual instance of the host process-that is configured to support an extension associated with the operation and to emulate at least the support application program interface of the host process, the extension comprising a service application program interface; invoking a proxy by the host process, the proxy being configured to emulate at least the service application interface of the extension; invoking the extension by the virtual process; forwarding, to the extension invoked by the virtual process, a request from the proxy, the request associated with the operation; and forwarding, to the proxy, a response from the extension, wherein the response can be used by the proxy to support the operation, wherein in response to detection of a non-conforming response or a failure of the extension or the virtual process, an indication enabling graceful degradation of functionality provided by the host process is provided to the host process by the proxy. - View Dependent Claims (23, 24, 25, 26)
- one or more processors; and
Specification