虚拟化技术 - CPU虚拟化
这里写自定义目录标题
- 虚拟化技术 - 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了,可以想到常规的解决办法有两个:
- 降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虚拟化相关推荐
- 《深入浅出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 ...
- 云计算学习(4-3)虚拟化技术-存储虚拟化
云计算学习(4-3)虚拟化技术-存储虚拟化 存储虚拟化:统一存取接口,屏蔽物理实现. 1.存储类型支持 本地存储:本地硬盘 光纤FC存储:外接存储设备,使用光纤来与服务器通讯 ISCSI存储:外接存储 ...
- 虚拟化技术--服务器虚拟化
1. 数据中心服务器的运行现状<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi ...
- 什么是虚拟化技术?虚拟化常见架构
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...
- amd 服务器 虚拟化技术,关于“虚拟化”(Intel VT和AMD SVM)的一些认识
零,前言 前几天,我把进入到BIOS中随便翻了一下,随手关掉了一个不了解的功能,再重启到系统(黑苹果)中,发现一些软件不能正常运行了,主要包括虚拟机软件(VMware.ParaDesktop)和一些用 ...
- 虚拟化技术之虚拟化技术介绍及Xen的应用实现
虚拟化技术是什么: 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切 ...
- kvm虚拟化之cpu虚拟化
(文章来自作者维护的社区微信公众号[虚拟化云计算]) (目前有两个微信群<kvm虚拟化>和<openstack>,扫描二维码点击"云-交流",进群交流提问) ...
- 虚拟化技术--桌面虚拟化(VDI)
桌面虚拟化VDI <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...
- 网络服务器虚拟化技术,网络虚拟化技术
虚拟私有云 VPC 虚拟私有云(Virtual Private Cloud)是用户在华为云上申请的隔离的.私密的虚拟网络环境.用户可以自由配置VPC内的IP地址段.子网.安全组等子服务,也可以申请弹性 ...
最新文章
- 【SICP练习】38 练习1.43
- suse linux mysql_SUSE Linux 下 MySQL集群配置
- 2017-06-14 Linux 添加密钥key
- Linux大文件切割命令split
- Ghost 系统的过程
- 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(三)
- 接口访问超时 504 Gateway Time-out 优化方案
- 智能一代云平台(二十三):Mycat高可用的探索
- 12306微信小程序上线 提供余票查询暂不支持购票
- 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)...
- python调用通达信函数_如何把通达信公式变成python
- java实现gps定位_GPS定位数据的提取与存储系统的设计
- 【软件使用】Cadence定制化安装——仅安装PSpice组件教程
- 【寒江雪】Go实现工厂模式
- (全)Docker安装+人脸比对算法服务(win10)
- 【葡萄城报表】还在为画“类Word文档报表”而发愁吗?
- 多线程相关实例(多线程经典应用场景)
- SpringSecurity(二)、权限项目框架搭建
- FM调制的FPGA实现
- 面试题目20130722 瞬联软件