这里写自定义目录标题

  • 虚拟化技术 - cpu虚拟化
    • kvm for x86

虚拟化技术 - cpu虚拟化

物理机器是由CPU、内存和I/O 设备等一组资源构成的实体。虚拟机也一样,由虚拟CPU,虚拟内存和虚拟IO设备组成。VMM(VM Monitor)按照与传统OS并发执行用户进程的相似方式,仲裁对所有共享资源的访问。

在虚拟化平台上,虚拟机(guest VM)所使用的多个虚拟CPU(以下称vCPU)可能共享同一个物理CPU(以下简称pCPU)的。VMM负责vCPU的调度,当一个vCPU被调度到获得pCPU的使用权后,基于该vCPU运行的guest OS 又可以调度OS中的各个线程/进程了。也就是说,guest OS 中的各个线程 / 进程分时复用了vCPU,而各个vCPU又分时复用了pCPU。

为了从硬件上提供对vCPU调度和切换的支持,Intel 推出了被称为VT-x(Virtualization Technology for x86)的虚拟化扩展技术,用户可通过VMXON / VMXOFF 指令打开/ 关闭这个功能。AMD也推出AMD-V的对应技术。

在Linux中,从用户空间trap到内核空间可以通过system call 或者 interrupt / exception。以system call 基于x86 的实现为例,早期x86 提供的trap方式是int 0x80 这样的software interrupt 机制,而后改为了 SYSENTER / SYSEXIT的指令对,现在则已经被速度更快的SYSCALL / SYSRET 取代了。

kvm for x86

传统的x86架构的运行级别有4种,从ring0 到 ring3,ring0是最高特权级,通常用于操作系统内核,ring3是最低特权级,通常用于用户程序。ring1 最初本来设定为运行驱动程序,但在使用宏内核的Linux中,驱动程序也和内核一样运行于ring0 级别,因而ring1和 ring2 通常不被使用。


而x86开始从支持硬件支持虚拟化扩展,也就是上文提到的VMM,按照VMM运行的特权级应该比OS更高,可是OS已经是ring 0了,可以想到常规的解决办法有两个:

  1. 降OS的运行级别调到ring1,像这样:


因为之前操作系统的实现都是基于ring 0的,调到ring1 势必会造成很多的不兼容,需要进行OS代码改动量较大。
2. 增加一个ring -1 级别给VMM用。你说要是x86 最开始把ring3 设为最高级,ring0设置为最低级,那直接弄一个ring 4 给VMM 就可以了,可x86诞生之初怎么会预料到后来虚拟化扩展呢。不过这使用负数ring -1 怎么看都是别扭吧。

为了解决这个难题,x86采用的办法是增加一个root mode,大概原理是这样的:


对于KVM 这种基于host OS的,如果只有host OS运行于root mode,host上的Apps(userspace)运行在non-root mode的ring3 级别,那么host userspace 到host kernel的切换就和guest VM 向VMM 的切换一样了。

所以,最终的实现是root mode里也有 ring0 到 ring3 共4个级别,也就是说 root mode和ring是正交的关系。

对于KVM,其基于host OS 也就是(Linux内核)运行在root mode的ring0 级别,host userspace 运行在root mode的ring3 级别,还是ring 0 和ring 3和 Linux传统用法一样,因此对Linux来说不用做什么大的修改。guest OS 和 guest Apps则分别运行在non-root mode的ring 0 和 ring3。

虚拟化技术 - CPU虚拟化相关推荐

  1. 《深入浅出DPDK》读书笔记(十一):DPDK虚拟化技术篇(I/O虚拟化、CPU虚拟化、内存虚拟化、VT-d、I/O透传)

    Table of Contents DPDK虚拟化技术篇 X86平台上的I/O虚拟化 120.X86平台上的I/O虚拟化 121.X86平台虚拟化概述 122.CPU虚拟化 123.内存虚拟化 124 ...

  2. 云计算学习(4-3)虚拟化技术-存储虚拟化

    云计算学习(4-3)虚拟化技术-存储虚拟化 存储虚拟化:统一存取接口,屏蔽物理实现. 1.存储类型支持 本地存储:本地硬盘 光纤FC存储:外接存储设备,使用光纤来与服务器通讯 ISCSI存储:外接存储 ...

  3. 虚拟化技术--服务器虚拟化

    1.        数据中心服务器的运行现状<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi ...

  4. 什么是虚拟化技术?虚拟化常见架构

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...

  5. amd 服务器 虚拟化技术,关于“虚拟化”(Intel VT和AMD SVM)的一些认识

    零,前言 前几天,我把进入到BIOS中随便翻了一下,随手关掉了一个不了解的功能,再重启到系统(黑苹果)中,发现一些软件不能正常运行了,主要包括虚拟机软件(VMware.ParaDesktop)和一些用 ...

  6. 虚拟化技术之虚拟化技术介绍及Xen的应用实现

    虚拟化技术是什么: 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切 ...

  7. kvm虚拟化之cpu虚拟化

    (文章来自作者维护的社区微信公众号[虚拟化云计算]) (目前有两个微信群<kvm虚拟化>和<openstack>,扫描二维码点击"云-交流",进群交流提问) ...

  8. 虚拟化技术--桌面虚拟化(VDI)

    桌面虚拟化VDI <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...

  9. 网络服务器虚拟化技术,网络虚拟化技术

    虚拟私有云 VPC 虚拟私有云(Virtual Private Cloud)是用户在华为云上申请的隔离的.私密的虚拟网络环境.用户可以自由配置VPC内的IP地址段.子网.安全组等子服务,也可以申请弹性 ...

最新文章

  1. 【SICP练习】38 练习1.43
  2. suse linux mysql_SUSE Linux 下 MySQL集群配置
  3. 2017-06-14 Linux 添加密钥key
  4. Linux大文件切割命令split
  5. Ghost 系统的过程
  6. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(三)
  7. 接口访问超时 504 Gateway Time-out 优化方案
  8. 智能一代云平台(二十三):Mycat高可用的探索
  9. 12306微信小程序上线 提供余票查询暂不支持购票
  10. 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)...
  11. python调用通达信函数_如何把通达信公式变成python
  12. java实现gps定位_GPS定位数据的提取与存储系统的设计
  13. 【软件使用】Cadence定制化安装——仅安装PSpice组件教程
  14. 【寒江雪】Go实现工厂模式
  15. (全)Docker安装+人脸比对算法服务(win10)
  16. 【葡萄城报表】还在为画“类Word文档报表”而发愁吗?
  17. 多线程相关实例(多线程经典应用场景)
  18. SpringSecurity(二)、权限项目框架搭建
  19. FM调制的FPGA实现
  20. 面试题目20130722 瞬联软件

热门文章

  1. 什么是传导干扰,什么是辐射干扰
  2. EMC设计技巧--传导整改时,什么时候该加大电容?什么时候该加小电容?
  3. SurfaceView实战打造农药钻石夺宝
  4. 东邪西毒 - 台词全本
  5. 热点全能服务器系统,云服务器win系统开热点
  6. 针对东北老公马俊打上海老婆黄佳的看法
  7. 红薯微剧场 | 开源众包发包记第一集 —— 前端篇
  8. 用计算机处理信息的过程,计算机处理信息的全过程
  9. 杂谈随笔 --《人性的弱点》
  10. 网络七层模型(iso)