VirtualBox

Changeset 13691 in vbox


Ignore:
Timestamp:
Oct 30, 2008 9:16:40 PM (16 years ago)
Author:
vboxsync
Message:

pg_vmm update.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMM.cpp

    r13005 r13691  
    2222//#define NO_SUPCALLR0VMM
    2323
    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.
    7931 *
    8032 * @see grp_vmm, grp_vm
    8133 *
    8234 *
    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 */
    12153
    12254/*******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette