|
|
|
|
| ( 3 of 3 ) |
| United States Patent | 6,397,242 |
| Devine , et al. | May 28, 2002 |
In a computer that has hardware processor, and a memory, the invention provides a virtual machine monitor (VMM) and a virtual machine (VM) that has at least one virtual processor and is operatively connected to the VMM for running a sequence of VM instructions, which are either directly executable or non-directly executable. The VMM includes both a binary translation sub-system and a direct execution sub-system, as well as a sub-system that determines if VM instructions must be executed using binary translation, or if they can be executed using direct execution. Shadow descriptor tables in the VMM, corresponding to VM descriptor tables, segment tracking and memory tracing are used as factors in the decision of which execution mode to activate. The invention is particularly well-adapted for virtualizing computers in which the hardware processor has an Intel x86 architecture.
| Inventors: | Devine; Scott W. (Palo Alto, CA); Bugnion; Edouard (Menlo Park, CA); Rosenblum; Mendel (Stanford, CA) |
| Assignee: | VMWare, Inc. (Palo Alto, CA) |
| Appl. No.: | 179137 |
| Filed: | October 26, 1998 |
| Current U.S. Class: | 709/1; 703/27; 709/214; 709/321; 710/23; 711/148; 711/153 |
| Intern'l Class: | G06F 009/00 |
| Field of Search: | 709/100,1,200,224,316,320,328,330,223 717/131,138,140 703/26,27 714/1,2,47 |
| 4747040 | May., 1988 | Blanset et al. | |
| 4787031 | Nov., 1988 | Karger et al. | |
| 4792895 | Dec., 1988 | Tallman. | |
| 4926322 | May., 1990 | Stimac et al. | |
| 4974159 | Nov., 1990 | Hargrove et al. | |
| 5134580 | Jul., 1992 | Bertram et al. | |
| 5167023 | Nov., 1992 | de Nicolas et al. | |
| 5255379 | Oct., 1993 | Melo. | |
| 5307504 | Apr., 1994 | Robinson et al. | |
| 5440710 | Aug., 1995 | Richter et al. | |
| 5488716 | Jan., 1996 | Schneider et al. | |
| 5522075 | May., 1996 | Robinson et al. | |
| 5560013 | Sep., 1996 | Scalzi et al. | 717/138. |
| 5652869 | Jul., 1997 | Herdeg et al. | |
| 5652872 | Jul., 1997 | Richter et al. | |
| 5721922 | Feb., 1998 | Dingwall. | |
| 5761477 | Jun., 1998 | Wahbe et al. | 709/1. |
| 5832205 | Nov., 1998 | Kelly et al. |
Goldberg, "Survey of Virtual Machine Research," Computer, Jun. 1974, pp. 34-45. Ebciglu et al., "IBM Research Report--Daisy: Dynamic Compilation for 100% Architectural Compatibility", RC 20538, Aug. 5, 1996. Bugnion, "Disco: Running Commodity Operating Systems on Scalable Multiprocessors," ACM Trans. on Computer Systems, vol. 15, No. 4, Nov. 1997, pp. 412-447. Bressoud, "Hypervisor-based Fault-tolerance," SIGOPS '95, Dec. 1995, pp. 1-11. Rosenblum et al., "Using the SimOS Machine Simulator to Study Complex Computer Systems," ACM Trans. on Modeling and Computer Simulation, vol 7, No. 1, Jan. 1997, pp. 78-103. Creasy, "The Origin of the VM/370 Time-Sharing System," IBM J. Res. Develop., vol. 25, No. 5, Sep. 1981. Intel Architecture Software Developer's Manual, vol. 3, 1997. |
Register Selector Type
CS 8 CODE
GS 12 DATA
DS 16 DATA
ES 16 DATA
FS 16 DATA
SS 16 DATA
LDT 40 DATA
Emulate(mov Sx, val)
(1) ARCH_SEGMENT[Sx] = val;
(2) GDT[CACHED_ENTRIES + Sx].offset = val * 16;
If (Sx in {SS,DS,ES}) {
(3) Mov Sx, (CACHED_ENTRIES + Sx);
}
From State To State Transition
NEUTRAL CACHED A write into memory, that is, into a loaded
descriptor (one of the six segment registers
in the GDT or LDT)
CACHED NEUTRAL The VM loads a segment in protected mode,
that is, the VM explicitly "resets" the
segment.
NEUTRAL REAL A segment load in REAL mode. (Note that
there is a readable bit in the hardware
processor that indicates whether the segment
load is protected or REAL)
REAL NEUTRAL A segment load in protected mode.
CACHED REAL A segment load in REAL mode.
|
|