一、系统虚拟化的主要作用

1.      隔离:工作负载,之前单个系统跑两个app,做好隔离,可以分两个虚拟机

2.      合并:之前两台物理机运行两个app,现在一台物理机运行两个app

3.      迁移:之前在一台物理机不能满足要求,现在迁移到另一台物理机。

4.      个性化:做嵌入,对不同app做不同配置,因为app的性能要求有各自的特点

二、cpu虚拟化

1.      本质:为每个虚拟机提供一个或多个虚拟CPU(VCPU),多个VCPU 复用物理CPUs, 任何时刻一个物理CPU只能被一个VCPU使用

2.      必须解决的问题:

(1)虚拟CPU的正确运行:调虚拟cpu要看起来和物理cpu一样。保证虚拟机的指令正确执行,各虚拟机之间不互相影响。现有实现技术:模拟执行和监控执行

(2)虚拟CPU的调度:虚拟cpu依赖物理cpu。由VMM决定当前哪一个VCPU实际在物理CPU上运行。保证VCPU的性能,调度的公平性

3. 模拟执行:是指由VMM模拟所有指令的执行效果,包括解释执行和二进制代码翻译执行。效率较低。

监控执行:是指虚拟机的绝大多数指令都在物理主机上直接执行,少量可能影响虚拟机运行或影响其虚拟机状态的指令(敏感指令)必须由VMM监控并模拟其执行效果。执行效率较高。取决于模拟执行指令数量、复杂度和算法性能

4.Xen基于额度调度算法——公平调度算法

该算法有两个参数其中一个参数cap是指示占用多少个cpu。另一个参数是weight指示一个是cpu占多少时间。初始化时:weight=credit若cap=100则 vcpu占一个物理cpu,cap=200vcpu占两个物理cpu,在算法中有三个队列:OVER(已获得),UNDER(等待),BOOST(某些虚拟机让出了cpu,下次调度放进boost,在调度时优先调度),每10毫秒运行一次后credit=credit-100+30/n,3次之后额度用完,让出cpu,保证每个vcpu运行时间,保证相对公平。

该算法曾经出现过bug:某cpu阻塞挂起,加入boost队列,下个周期优先调度,周期加长,但是可以利用,在每次结束时,主动挂起,则可以无限期使用cpu可占80-90%的时间。

4 .Intel VT-x操作模式cpu硬件虚拟化

VMX root 模式:拥有全部权限,用于VMM的运行

VMX non-root 模式:只拥有部分权限,用于运行客户机软件,GUEST OS依靠环级的设置来减少客户及软件的权限,通过环重命名和压缩来完成

三、内存虚拟化

5. 机器地址: 真实硬件的机器地址(HPA,host physical address)

物理地址:经过VMM抽象的虚拟机所见伪物理地址(GPA,guestphysical address)

虚拟地址:Guest OS提供给应用程序使用的线性地址(GVA,guest virtual address)

操作系统帮助进程执行g , vm帮os 执行 f

6.页表虚拟化

操作系统通过配置多级页表建立虚拟地址到物理地址的映射关系,并将页表的指针载入处理器的内存管理单元MMU,由硬件在必要时通过查询页表,以完成虚拟地址到物理地址的映射。

7.气球驱动

气球驱动最早来源于VMware ESXServer系统。当系统内存被过量使用或有多余时,通过客户机上的气球驱动实现内存页面的回收和再分配。

每个Domain在建立之初,Xen根据其配置文件中的定义为Domain分配固定数量的物理内存。但是,1)由于Guest OS运行的应用程序过多会导致其内存严重不足;2)由于Guest OS工作量不大而使得内存被闲置。Xen实现了气球驱动来调节各Domain之间的物理内存分布。

当Xen/VMM需要回收内存时,给ballon充气,即:让客户机中的气球驱动向Guest OS申请内存空间(气球膨胀),ballon再把分配到的物理内存给VMM,从而使得Guest OS使用的内存空间减少。

当Guest OS需要更多内存空间时,客户机中的气球驱动可以向Guest OS释放内存空间(气球缩小),从而使得Guest OS实际使用的内存空间增大。

8内存共享---内存页面的写时复制机制

被共享的页面对于所有虚拟机都是只读的,当某一个虚拟机需要对其进行修改时,需要先复制出一份页面,然后在复制出的页面上进行修改。

为了减少扫描相同页面的开销,VMware采取先对页面计算的Hash值做比较,如果二者Hash值相同再对页面内容进行比较。

内存可写工作集(writableworking sets) 的使用

应用于虚拟机迁移和克隆等场景。

在虚拟机运行过程中,有一大部分内存很少或从来不被修改,那些频繁被修改的内存即为内存可写工作集。

虚拟机内存管理中,如何获取内存可写工作集呢?如:将虚拟机中所有内存页面设置为只读,虚拟机所有对内存的写操作都会引起一个页面失效,页面失效处理程序中把对该页面的写操作通过位图等方法记录下来。

硬件辅助内存虚拟化

Intel 虚拟处理器标识(VPIDs), 防止每次VM exit和VM entry导致的TLB清空。

Intel 扩展页表EPT,将物理地址转换为机器地址,避免了页面失效带来的VM exit开销。

四、IO虚拟化

CPU的能力提升虽然可以更快地处理数据,但是其前提是:数据能够顺畅的到达CPU。因此,I/O的能力提升是一个重要的部分。由于I/O设备具有异构性强、内部状态不易控制等特点,I/O设备的虚拟化一直是虚拟化技术的难点所在。

1.模拟I/O设备

VMM 对虚拟机摸拟一个I/O设备,通过完全模拟设备的功能,虚拟机可以使用对应真实的驱动程序,这个方式可以提供完美的兼容性,但是显然这种模拟会影响到性能。

2. 额外软件接口

VMM软件将提供一系列直通的设备接口给虚拟机,这个方式可以提升虚拟化的性能,但兼容性有所降低。

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

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

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

  2. 虚拟化关键技术及解决方案

    试题二 虚拟化关键技术及解决方案 虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好 ...

  3. 北航教授李帅:“VR+医疗”仿真系统及关键技术分享

    "走进高校" CARA 第二期学术讲堂:智能几何计算篇,直播已圆满结束.错过直播的小伙伴,福利来了,CV君已将回放视频整理完毕,欢迎收看! 第二 part,是李帅老师的学术分享,主 ...

  4. 分布式视频会议系统的关键技术及实现

    引言 在目前已成为计算机领域热点的群组协作计算工具中,视频会议系统是其中的一个重要组成部分.电路交换网络中的视频会议系统已有较成熟的模型,如ITU的H.320标准等,但分组交换网(包括Ethernet ...

  5. 超详细!百度富媒体检索比对系统的关键技术

    导读:百度富媒体检索比对系统是一套基于 Ann(approximate nearest neighbor)检索和内容特征比对技术,旨在提供针对图像.音频.视频等多媒体资源的相似检索系统.包括离线训练. ...

  6. 计算机安全监控系统,关于计算机安全监控系统的关键技术

    1 计算机安全监控对象 计算机安全监控对象总的来讲包括信息和操作两类,其中信息主要指系统中文本.文件信息,操作主要是用户进行的操作行为.计算机监控系统的工作是对文本.文件的复制.变更以及用户操纵进行监 ...

  7. 地面无人系统人机交互关键技术

    地面无人系统的遥操作系统已进入模块化.通用化研制阶段,融入语音控制.手势控制.头盔显示器等操控手段,向着自主.通用.智能化.VR/AR遥操作.非视距实时操控方向发展. 人机交互遥操作整体由遥操作终端+ ...

  8. 【自动驾驶】自动驾驶感知系统与关键技术介绍

    文章目录 1.自动驾驶感知系统介绍 1.1 什么是自动驾驶? 1.2 什么是自动驾驶系统? 1.3 自动驾驶技术概览(以环境感知系统为主) 1.4 自动驾驶行业现状 1.自动驾驶感知系统介绍 1.1 ...

  9. 浅议网上支付系统关键技术探究

    [论文摘要:电子商务 网上支付系统 技术策略 [论文摘要我国电子商务和网上交易近年来取得了较大的发展 ,然而网上支付成为我国电子商务发展的瓶颈之一.因此 ,解决网上支付新问题是发展电子商务的必要环节. ...

最新文章

  1. 树莓派开发4-串口通讯wiringpi库
  2. 【QM-02】Master Data (QM主数据的设置)
  3. 要选择做有价值的事情
  4. HDFS restful API:关于WebHDFS与HttpFS的区别
  5. QT的QNetworkDiskCache类的使用
  6. Linux 下的 AddressSanitizer
  7. USTC 2011 homework list [现代软件工程 作业]
  8. kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接
  9. HTML元素(标签)大全及使用说明 (整)
  10. 这些话,是乔布斯给世间留下的真正伟大礼物
  11. JavaSE基础之JDK的下载和安装(四步开启Java编程的大门)
  12. eclipse的下载及安装教程
  13. 读npy、pck、nii格式数据集
  14. 软件开发工作量的估算方法
  15. 斯坦福大学-大数据与数据挖掘学习资料
  16. Idea设置ALT+/代码提示
  17. 两篇毕业论文致谢同一个女朋友?哈哈哈哈!
  18. 数字地、模拟地、信号地区分
  19. Bellhop-水平海底计算案例
  20. Python数据分析||基于逻辑回归的糖尿病视网膜病变的影响因素分析

热门文章

  1. python 如何用指数函数拟合数据?(2020年新型冠状病毒感染人数预测)
  2. 深入浅出python机器学习_9.1.5_通过数据预处理提高模型的准确率_MinMaxScaler
  3. Python 计算机视觉(一) —— 数字图像处理基础
  4. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(CSS字体,文本)
  5. java 表单请求_java模拟表单请求
  6. python socket sendto sendall_网络通信 Python Socket UDP Select
  7. Spring中对于WebApplicationInitializer的理解
  8. maven+springMVC+Eclipse建立工程框架
  9. java二叉堆_为什么二叉堆利用数组存储?
  10. 怎么查看电脑内存和配置_电脑内存条如何选择?老司机带你如何选择电脑内存条...