Changeset 13691 in vbox
- Timestamp:
- Oct 30, 2008 9:16:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMM.cpp
r13005 r13691 22 22 //#define NO_SUPCALLR0VMM 23 23 24 /** @page pg_vmm VMM - The Virtual Machine Monitor 25 * 26 * !Revise this! It's already incorrect! 27 * 28 * The Virtual Machine Monitor (VMM) is the core of the virtual machine. It 29 * manages the alternate reality; controlling the virtualization, managing 30 * resources, tracking CPU state, it's resources and so on... 31 * 32 * We will split the VMM into smaller entities: 33 * 34 * - Virtual Machine Core Monitor (VMCM), which purpose it is to 35 * provide ring and world switching, that including routing 36 * interrupts to the host OS and traps to the appropriate trap 37 * handlers. It will implement an external interface for 38 * managing trap handlers. 39 * 40 * - CPU Monitor (CM), tracking the state of the CPU (in the alternate 41 * reality) and implementing external interfaces to read and change 42 * the state. 43 * 44 * - Memory Monitor (MM), which purpose it is to virtualize physical 45 * pages, segment descriptor tables, interrupt descriptor tables, task 46 * segments, and keep track of all memory providing external interfaces 47 * to access content and map pages. (Internally splitt into smaller entities!) 48 * 49 * - IO Monitor (IOM), which virtualizes in and out I/O operations. It 50 * interacts with the MM to implement memory mapped I/O. External 51 * interfaces for adding and removing I/O ranges are implemented. 52 * 53 * - External Interrupt Monitor (EIM), which purpose it is to manage 54 * interrupts generated by virtual devices. This monitor provides 55 * an interfaces for raising interrupts which is accessible at any 56 * time and from all thread. 57 * <p> 58 * A subentity of the EIM is the vitual Programmable Interrupt 59 * Controller Device (VPICD), and perhaps a virtual I/O Advanced 60 * Programmable Interrupt Controller Device (VAPICD). 61 * 62 * - Direct Memory Access Monitor (DMAM), which purpose it is to support 63 * virtual device using the DMA controller. Interfaces must be as the 64 * EIM interfaces independent and threadable. 65 * <p> 66 * A subentity of the DMAM is a virtual DMA Controller Device (VDMACD). 67 * 68 * 69 * Entities working on a higher level: 70 * 71 * - Device Manager (DM), which is a support facility for virtualized 72 * hardware. This provides generic facilities for efficient device 73 * virtualization. It will manage device attaching and detaching 74 * conversing with EIM and IOM. 75 * 76 * - Debugger Facility (DBGF) provides the basic features for 77 * debugging the alternate reality execution. 78 * 24 /** @page pg_vmm VMM - The Virtual Machine Monitor 25 * 26 * The VMM component is two things at the moment, it's a component doing a few 27 * management and routing tasks, and it's the whole virtual machine monitor 28 * thing. For hysterical reasons, it is not doing all the management that one 29 * would expect, this is instead done by @ref pg_vm. We'll address this 30 * misdesign eventually. 79 31 * 80 32 * @see grp_vmm, grp_vm 81 33 * 82 34 * 83 * @section pg_vmm_s_use_cases Use Cases 84 * 85 * @subsection pg_vmm_s_use_case_boot Bootstrap 86 * 87 * - Basic Init: 88 * - Init SUPDRV. 89 * 90 * - Init Virtual Machine Instance: 91 * - Load settings. 92 * - Check resource requirements (memory, com, stuff). 93 * 94 * - Init Host Ring 3 part: 95 * - Init Core code. 96 * - Load Pluggable Components. 97 * - Init Pluggable Components. 98 * 99 * - Init Host Ring 0 part: 100 * - Load Core (core = core components like VMM, RMI, CA, and so on) code. 101 * - Init Core code. 102 * - Load Pluggable Component code. 103 * - Init Pluggable Component code. 104 * 105 * - Allocate first chunk of memory and pin it down. This block of memory 106 * will fit the following pieces: 107 * - Virtual Machine Instance data. (Config, CPU state, VMM state, ++) 108 * (This is available from everywhere (at different addresses though)). 109 * - VMM Guest Context code. 110 * - Pluggable devices Guest Context code. 111 * - Page tables (directory and everything) for the VMM Guest 112 * 113 * - Setup Guest (Ring 0) part: 114 * - Setup initial page tables (i.e. directory all the stuff). 115 * - Load Core Guest Context code. 116 * - Load Pluggable Devices Guest Context code. 117 * 118 * 119 */ 120 35 * @section sec_vmmstate VMM State 36 * 37 * To be written. 38 * 39 * Lets see which of these links that works... 40 * @image "VM Statechart Diagram.gif" 41 * @image VM\ Statechart\ Diagram.gif 42 * 43 * @subsection subsec_vmm_init VMM Initialization 44 * 45 * To be written. 46 * 47 * 48 * @subsection subsec_vmm_term VMM Termination 49 * 50 * To be written. 51 * 52 */ 121 53 122 54 /*******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.