IP Library › Granted Patent US 7,574,709
Granted Patent B2
US 7,574,709 · App. 10/837,971 · Granted Aug 11, 2009

VEX-virtual extension framework

Assignee: Microsoft Corporation
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 7,574,709
App. No.
10/837,971
Granted
Aug 11, 2009
Kind
B2
Abstract

Extensions to operating systems or software applications can be hosted in virtual environments to fault isolate the extension. The virtual environment in which extensions designed to control hardware devices can safely execute can be efficiently created during an initial startup sequence of a host environment by indicating to the host environment that a second processing unit is present in the computing system allowing the host environment to create a coherent state. A virtual process, especially a virtual operating system process running on a virtual machine, can be efficiently started by the created coherent state. A coherent state can be created when an operating system starts up and the appropriate parameters are observed and saved. Alternatively, an operating system of the host environment can create the coherent state by receiving indication of the second processing unit during the boot process.

Claims (59)

1. A method of creating a virtual operating system environment, the method comprising steps of:

beginning a boot of an operating system environment on a computing device having a processor;

indicating to the processor, during the boot of the operating system environment, that the computing device has another processor, wherein said another processor is inaccessible by said virtual operation system environment;

saving a state during the boot of the operating system environment after the processor and said another processor have been initialized;

indicating to the operating system environment, after the operating system environment has completed at least one component binding associated with the processor, that said another processor has failed;

providing, to the virtual operating system environment, the saved state;

booting the virtual operating system environment using the saved state, wherein the booting of the virtual operating system environment comprises preventing the processor from accessing at least one component associated with the at least one component binding;

providing, to virtual operating system environment, an access to the at least one component binding using a preexisting support, wherein said preexisting support provides, to said another processor, the access to the at least one component binding; and

creating during said booting of the virtual operating system environment, a specified component binding in the virtual operating system environment to a specified component, wherein the specified component interfaces with a device driver hosted within the virtual operating system environment and the creating of the specified component binding comprises:

binding the specified component to the operating system environment;

hibernating the specified component, wherein the hibernating cleanly flushes communication queues related to the specified component; and

binding the specified component to the virtual operating system environment.

2. The method of claim 1 , wherein the booting of the virtual operating system environment further comprises:

relying on the at least one component binding associated with the processor; and

completing the boot of the virtual operating system environment using said another processor.

3. The method of claim 1 , wherein the creating of the specified component binding comprises: caching communication related to the specified component; and providing the cached communication to the virtual operating system environment.

4. A computer readable storage medium storing computer executable instructions for creating a virtual operating system environment, the computer readable storage medium having the computer executable instructions that, when executed by a processor of a computing system, cause the computing system to perform steps comprising:

beginning a boot of an operating system environment on a computing device having a processor;

indicating to the processor, during the boot of the operating system environment, that the computing device has another processor;

saving a state during the boot of the operating system environment after the processor and said another processor have been initialized;

indicating to the operating system environment, after the operating system environment has completed at least one component binding associated with the processor, that said another processor has failed;

providing, to the virtual operating system environment, the saved state;

booting the virtual operating system environment using the saved state, wherein the booting of the virtual operating system environment comprises preventing the processor from accessing at least one component associated with the at least one component binding;

providing, to the virtual operating system environment, an access to the at least one component binding using a preexisting support, wherein said preexisting support provides, to said another processor, the access to the at least one component binding; and

creating, during said booting of the virtual operating system environment, a specified component binding in the virtual operating system environment to a specified component, wherein the specified component interfaces with a device driver hosted within the virtual operating system environment and the creating of the specified component binding comprises:

binding the specified component to the operating system environment;

hibernating the specified component, wherein the hibernating cleanly flushes communication queues related to the specified component; and

binding the specified component to the virtual operating system environment.

5. The computer readable storage medium of claim 4 , wherein the booting of the virtual operating system environment further comprises:

relying on the at least one component binding associated with the processor; and

completing the boot of the virtual operating system environment using said another processor.

6. The computer readable storage medium of claim 4 , wherein the computer executable instructions for creating the specified component binding further comprise computer executable instructions for: capturing control information for the specified component; and providing the control information to the device driver hosted within the virtual operating system environment.

7. The computer readable storage medium of claim 4 , wherein the computer executable instructions for creating the specified component binding comprise computer executable instructions for:

establishing, in the operating system environment, a proxy corresponding to the device driver in the virtual operating system environment;

caching, by the proxy, input/output packets delivered to the operating system environment; and

transmitting, by the proxy, the cached input/output packets to the device driver in the virtual operating system environment.

8. A system for creating a virtual operating system environment, the system comprising:

at least one processor;

at least one memory communicatively coupled to said at least one processor, the memory having stored therein computer-executable instructions that, when executed by said at least one processor, cause the system to perform steps comprising:

beginning a boot of an operating system environment on a computing device having a processor;

indicating to the processor, during the boot of the operating system environment, that the computing device has another processor;

saving a state during the boot of the operating system environment after the processor and said another processor have been initialized;

indicating to the operating system environment, after the operating system environment has completed at least one component binding associated with the processor, that said another processor has failed;

providing, to the virtual operating system environment, the saved state;

booting the virtual operating system environment using the saved state, wherein the booting of the virtual operating system environment comprises preventing the processor from accessing at least one component associated with the at least one component binding;

providing, to the virtual operating system environment, an access to the at least one component binding using a preexisting support, wherein said preexisting support provides, to said another processor, the access to the at least one component binding; and

creating, during said booting of the virtual operating system environment, a specified component binding in the virtual operating system environment to a specified component, wherein the specified component interfaces with a device driver hosted within the virtual operating system environment and the creating of the specified component binding comprises:

binding a specified component to the operating system environment;

hibernating the specified component, wherein the hibernating cleanly flushes communication queues related to the specified component; and

binding the specified component to the virtual operating system environment.

9. The system of claim 8 , wherein the booting of the virtual operating system environment further comprises:

relying on the at least one component binding associated with the processor; and

completing the boot of the virtual operating system environment using said another processor.

10. The system of claim 8 , wherein the creating of the specified component binding comprises: caching communication related to the specified component; and providing the cached communication to the virtual operating system environment.

11. The system of claim 8 , wherein the creating of the specified component binding further comprises: capturing control information for the specified component; and providing the control information to the device driver hosted within the virtual operating system environment.

12. The system of claim 8 , wherein the creating of the specified component binding comprises:

establishing, in the operating system environment, a proxy corresponding to the device driver in the virtual operating system environment;

caching, by the proxy, input/output packets delivered to the operating system environment; and

transmitting, by the proxy, the cached input/output packets to the device driver in the virtual operating system environment.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2004
From: ERLINGSSON, ULFAR; WOBBER, EDWARD P.; BARHAM, PAUL; ROEDER, THOMAS
To: MICROSOFT CORPORATION
Reel/Frame 015058/0767 →
Continuity (1)
Related Publication 20050246718A1 · Nov 3, 2005