概述

系统虚拟化是虚拟化技术中的一种,其抽象的粒度是整个计算机。系统虚拟化的目的通过使用虚拟化管理器(Virtual Machine Monitor,简称VMM,也称Hypervisor)是在一台物理机上虚拟和运行一台或多台虚拟机(Virtual Machine,简称VM),每个虚拟机都拥有自己的虚拟硬件,来提供一个独立的虚拟执行环境。系统虚拟化架构如下所示:

系统虚拟化基本功能

系统虚拟化实现中,Hypervisor运行在硬件资源层上,并为虚拟机提供虚拟的硬件资源,而客户机操作系统则运行在虚拟的硬件资源上。综合来看,Hypervisor应当包含两部分功能:虚拟环境的管理和物理资源的管理。

  • 虚拟环境的管理:Hypervisor负责为虚拟机提供虚拟的硬件资源,因此至少应当提供三个基本模块:1)CPU虚拟化模块; 2)内存虚拟化模块;3)IO设备虚拟化模块。除此之外,还应当提供完备的调度机制来调度多个虚拟机的执行以及一套完整的管理接口。
  • 物理资源的管理:类似于操作系统,Hypervisor本身也承担了全部或者部分物理资源管理的角色,包括管理底层物理资源、提供安全隔离机制以及系统时间维护等。

现代计算机中最核心的三类资源就是CPU、内存和IO设备,因此Hypervisor的主要任务就是完成这三类硬件的虚拟化:CPU虚拟化、内存虚拟化和IO虚拟化。

CPU虚拟化

在物理环境下,操作系统具有最高特权级别,可以访问寄存器、内存和IO设备等关键的物理资源。但是,在虚拟环境下,虚拟机理论上是不允许直接操作物理资源的,否则会和Hypervisor以及其它虚拟机产生冲突。因此,虚拟机对物理资源的访问应当触发异常,然后陷入到Hypervisor中进行模拟实现,这也是经典的虚拟化处理方法,即Trap-Emulate(陷入-模拟)模型。另外,CPU虚拟化还要考虑中断和异常的模拟及注入。

内存虚拟化

操作系统对于物理内存的使用基于两个假设:①内存都是从物理地址0开始的;②物理内存都是连续的。对于一台物理机上的多个虚拟机而言,它们共享物理内存资源,无法满足上述的假设。内存虚拟化为虚拟机提供了客户机物理地址空间,以保证客户机操作系统对于内存的使用认知不变,但是虚拟机无法通过GPA(客户机物理地址)直接访问内存的数据,而要由Hypervisor截获虚拟机对GPA的访问,并将GPA转换成HPA(宿主机物理地址)。

IO虚拟化

在物理环境下,操作系统通过PIO或者MMIO方式访问实际的IO设备,而在虚拟环境中,客户机操作系统看到的都是Hypervisor模拟出来的虚拟设备,因此Hypervisor需要截获虚拟机所有的PIO和MMIO操作并对其进行模拟实现,然后将结果告知虚拟机。

系统虚拟化实现结构

根据Hypervisor与物理资源和操作系统交互方式的不同,可以将Hypervisor分为两类:

  • Type I Hypervisor,也称之为裸机型Hypervisor(Bare-metal Hypervisor)。Type I Hypervisor直接运行在硬件资源上面,可以提供接近于物理机的性能。Type I Hypervisor的实现包括Xen、ACRN等;
  • Type II Hypervisor,也称之为宿主型Hypervisor(Hosted Hypervisor)。Type II Hypervirsor运行在操作系统上面,相较于Type I Hypervisor,由于与硬件之间隔了一个操作系统,因此性能上会逊色一些。但由于Type II Hypervisor实现与对应操作系统生态联系比较密切,因此当前应用更加广泛,包括KVM、VMware Fusion、VirtualBox和Parallels Desktop等,都属于此类。

系统虚拟化实现方式

系统虚拟化技术按照实现方式可以分为基于软件的全虚拟化技术(Full Virtualization)、半虚拟化技术(Para-Virtualization)以及硬件辅助的全虚拟化技术。其中:

  • 全虚拟化技术无须修改客户机操作系统就可以正常运行虚拟机,此时客户机操作系统“认为”自己就是运行在真实的物理硬件资源上;
  • 半虚拟化技术需要客户机操作系统做一些修改,使客户机操作系统意识到自己是运行在虚拟化环境中,从而可以允许Hypervisor针对性地对虚拟机性能进行优化。

早期由于硬件缺乏对虚拟化的支持,只能使用纯软件的方式来实现全虚拟化,如陷入-模拟、解释执行、二进制翻译等技术;后续为了提升运行效率,出现了虚拟机与Hypervisor配合实现的半虚拟化技术,如Xen使用的Hypercall技术。随着技术的演进,硬件开始增加对虚拟化技术的支持,于是产生了硬件辅助的全虚拟化技术实现,典型的如Intel的VT技术、AMD的AMD-V技术等。综合以上,我们可以细化虚拟化技术的实现分类,即:

相关参考

  • 《系统虚拟化——原理与实现》
    *《深入浅出系统虚拟化:原理与实践》
  • 《Linux开源存储全栈详解——从Ceph到容器存储》

虚拟化技术(2)系统虚拟化相关推荐

  1. Docker容器与虚拟化技术——部署KVM虚拟化平台

    部署KVM虚拟化平台 一.搭建KVM虚拟化平台 1.前置知识点 (1)什么是虚拟化         把硬件资源从物理方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台物理机 ...

  2. 服务器cpu虚拟化vt,聚焦五大虚拟化技术:CPU虚拟化居首

    近期焦点: 虚拟化,曾经是一个技术人员最不喜欢的词,因为对于一个搞工程科学的人来说,实在.量化.数据逻辑才是工作进行的根本. 但是现在,最前沿的IT技术工程师们狂热的爱上了这个词,因为它代表着一系列先 ...

  3. 虚拟化技术 - I/O虚拟化 [一]

    在虚拟化系统中,I/O外设只有一套,需要被多个guest VMs共享.VMM/hypervisor提供了两种机制来实现对I/O设备的访问,一种是透传(passthrough),一种是模拟(emulat ...

  4. 服务器虚拟化技术实现,服务器虚拟化关键技术及其系统实现

    <服务器虚拟化关键技术及其系统实现>由会员分享,可在线阅读,更多相关<服务器虚拟化关键技术及其系统实现(9页珍藏版)>请在人人文库网上搜索. 1.服务器虚拟化关键技术及其系统实 ...

  5. g40-45支持虚拟化技术_CPU支持虚拟化,虚拟化有什么用怎么开启

    展开全部 虚拟化技术最大的实用性e69da5e6ba903231313335323631343130323136353331333366303135就是系统里装虚拟机. 比如现在已经是Win7或更高系 ...

  6. 虚拟化技术发展与虚拟化体系结构

    1.虚拟化技术发展历程 1. 虚拟化技术诞生 虚拟化技术萌芽于上世纪 50 年代末,1959 年 6 月,牛津大学的计算机教授,克里斯·托弗(Christopher Strachey)在国际信息处理大 ...

  7. 服务器虚拟化技术简介,服务器虚拟化技术简介

    服务器虚拟化的方式 服务器虚拟化的有多种划分方式,可以根据虚拟化架构划分为裸金属/寄居,根据虚拟化层次硬件辅助虚拟化/软件辅助虚拟化,根据虚拟化平台划分为全虚拟化/半虚拟化. 裸金属/寄居 未虚拟化 ...

  8. 云计算虚拟化技术与开发-------虚拟化技术应用第二章内容(CPU虚拟机X86要解决的问题、VT-x、VMX、vCPU、EPT、VT-d)

    目录 第二章:虚拟化实现技术架构 CPU虚拟机要解决的问题(x86处理器结构漏洞)及软硬件解决方案 intel VT-x的技术特点,VMX(非根操作)的操作模式及操作流程 vCPU的组成和基本操作 内 ...

  9. 虚拟化技术 — Libvirt 异构虚拟化管理组件

    目录 文章目录 目录 Libvirt libvirt API 函数库 libvirtd Daemon 软件架构 权限模式 运行模式 virsh CLI Domain XML disk 标签 netwo ...

  10. 服务器虚拟化技术笔试题,(虚拟化技术试题.docx

    (虚拟化技术试题 北京信息职业技术学院<虚拟化技术>期中试卷 (A卷·闭卷)适用班级:1152211,1152212 考试时间: 2015.5.5 13:30-15:30班级: 学号: 姓 ...

最新文章

  1. 分享一下我的初中生活
  2. HDU - 4497 GCD and LCM 数论gcd
  3. Qt 入门 ---- 如何在程序窗口显示图片?
  4. js读取服务器上的txt文件,javascript – 每15秒读取一次文本文件的内容
  5. 后宫宛如传服务器维护,合服丨《后宫宛如传》合服公告
  6. 握手失败_主人用吃的训练小柴犬握手,老柯基看到后的表现出了吃货的本能!...
  7. 阿里再度开源重磅技术!95% 程序员都需要了解
  8. f2fs系列之二: 重要的数据结构
  9. 安装Baidu Sitemap Generator插件显示“该插件没有有效的标题”
  10. junit可执行但控制层无法执行_解决junit5无法使用gradle test运行测试
  11. Android系统 miui主题,MIUI 主题完全折腾指南
  12. MQTT Java 客户端
  13. MAC中配置SDK环境变量
  14. alfafile中转站免费_免费、不限速的文件中转站or网盘
  15. flv格式php怎么播放不了,FLV格式视频不能在网页播放的解决办法
  16. 2020-02-21
  17. 通过ScrollView实现滚动效果
  18. VirtualBox 搭建虚拟环境
  19. AB测试——流程介绍(实施实验和结果分析)
  20. 图说人工智能的研究内容

热门文章

  1. ConcurrentHashMap 1.7和1.8 源码解析
  2. 最近删除的照片在哪里?已删除照片恢复
  3. dat2img格式转换-ROM定制开发教程
  4. Python还在原地踏步?今天女友程序员教你函数的定义与使用
  5. python统计英文文本词频和提取文本关键词
  6. 转载_Feedforward ANC 主动降噪原理
  7. 优雅编程之阿里巴巴开发规范分享及扩展学习(三十八)
  8. fifa15服务器位置,FIFA15球队战术位置技巧
  9. 【PTA】6-4 奇数值结点链表
  10. (项目名).exe”。已加载符号。 无法查找或打开 PDB 文件。