• 虚拟化


    虚拟化:

    虚拟化需要满足的条件:
    等价执行
    性能良好
    安全隔离


    内核必须运行在环0上(不管虚拟机还是物理机)
    用户空间运行在环3上



    cpu虚拟化: 按时间切割


    完全虚拟化:
    软件模拟cpu:
    需要模拟环0123
    虚拟:
    底层架构要和上层架构一致
    Host虚拟出一套完全的环境(上层机器不知道自己在虚拟化中)
    只需要模拟环0
    性能很差,可以借助BT(二进制翻译)技术和HVM技术提高性能
    硬件辅助虚拟化:
    cpu多增加一个指令环
    Host运行在环-1 上,让虚拟机运行在环0上(但是此时虚拟机实际是没有特权指令的)
    Host能够捕获虚拟机的指令在环-1上执行特权指令


    半虚拟化:
    需要修改虚拟机内核
    虚拟机内核知道自己运行在虚拟化环境中
    虚拟机需要执行特权指令时,直接去调用Host主机的内核(由hyper call去调用)(底层host由hyperivor管理)


    Memory虚拟化:按空间切割
    进程:
    线性地址空间
    cpu:
    物理地址空间
    内核调用内存:
    线性地址空间----cpu:nmu---》虚拟物理地址空间------》由Hyperivor映射到Host内存地址空间
    MMU虚拟化:
    线性地址空间----虚拟的MMU--->Host的内存地址空间

    I/O虚拟化:
    外存:
    硬盘、光盘
    网络设备:
    网卡
    显示设备:
    VGA
    键盘鼠标:
    ps/2 , usb

    IO虚拟化方式:
    模拟:
    完全适应软件模拟真实硬件
    发送---用户空间---内核--驱动--模拟网卡---hyperivor中的虚拟网卡(很多)---IO stack---真实网卡
    半虚拟化:
    发送---用户空间---内核--IO前端驱动(让用户能看到,而本地直接转发到hyperivor)
    通常只适用于硬盘和网卡等(显卡不行)
    IO透传:
    本地有多硬盘、网卡
    直接分配资源(硬盘、网卡)给虚拟机适用
    Inter:VT-d:
    基于北桥的硬件辅助虚拟化技术
    主要实现IO虚拟化的灵活性可靠性

    -----------------------------------

    I型:xen、vmware exsi 
    虚拟机 
    Hyperivor
    物理机 

    II型:kvm、vmware workstation、virtualbox
    虚拟机
    虚拟化软件
    物理机


    ----------------------------------------

    虚拟化技术:

    cpu相关:     vt-x , EPT , tagged-TLB
    IO/cpu相关: vt-d ,IOV ,VMDq

    处理器相关的:vt-x
    芯片相关:vt-d
    IO相关:VMDq 、SR-IOV

    ----------------------------------------

    xen、kvm 不具备IO模拟功能

    用QEMU,virtio 来实现IO模拟

    ----------------------------------------

    qemu:
    工作于用户空间的进程
    使用来qemu模拟IO设备
    kqemu相当于vmware的BT技术(bug多不稳定)
    kvm 取代了kqemu (kvm实际上就是qemu的加速工具)

    kvm :
    linux内核的一个模块
    内核装载了kvm后内核成为了Hyperivor(物理机内核运行移到ram -1)
    硬件的Hyperivor要驱动IO设备:
    自我驱动、dom 0 驱动 
    kvm可以虚拟cpu、内存

    kvm架构:
    内核模式、用户模式、来宾模式
    vcpu有线程模拟实现

    kvm架构:

    ---------------------------
    guest Men
    ---------------------------
    vcpu
    ---------------------------
    thread | thread
    ---------------------------
    kvm | linux Kernel
    ---------------------------
    cpu cpu cpu

  • 相关阅读:
    uoj388 【UNR #3】配对树
    uoj386 【UNR #3】鸽子固定器
    回忆录
    xcode 把项目代码提交到远程SVN服务器
    IOS 点击按钮拨号
    ADO与达梦7产生的一个未知问题
    DSN 建立达梦7(DM)连接
    iOS UIControl 事件的说明(转)
    IOS开发copy,nonatomic, retain,weak,strong用法
    QT Creator 使用SVN的版本号做为编译的版本信息
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5839299.html
Copyright © 2020-2023  润新知