由于工作的原因,需要开始接触虚拟化。正好前几天学了许岑的《如何成为有效学习的高手》,其中建议成年人需要以任务驱动的方式进行学习,并且需要刻意制造反馈,比如把学习内容整理成文章才能更有效的学习,所以尝试写下此文作为学习虚拟化历程的记录。

虚拟化我们都不陌生,平时我们网络工程师或者 Linux 运维工程师进行实验的各个平台都用了虚拟化的技术,比如VMware 还有EVE 模拟器等等。但其实我们使用的 Windows 其实也是一种最基础的虚拟化,它是分时复用系统,会将所有硬件进行虚拟化,再硬件资源逻辑化的基础之上,使用分时复用和共享内存功能,所以我们的电脑才能同时处理不同软件的工作。编程领域的 Java 虚拟机其实也是一种虚拟化技术,也是将操作系统资源进行虚拟化,然后 Java 程序就可以方便的移植到其他计算机上了。

广义上来讲,虚拟化就是在一套硬件上同时运行多个OS。虚拟化的实现就是开发出VMM(virtual machine monitor)虚拟机监视程序。最早的发展其实就是 IBM 开发分时系统了,IBM 工程师们通过将 CPU 的占用切分为无数个极短的时间片,然后让每片去执行不同的任务,通过轮询的方式使之伪装成多个 CPU 处理不同的程序,把物理资源逻辑化,以提高利用效率。

不同厂家开发出了不通的虚拟化软件和技术,他们的实现也有所不同。比如VMware 针对个⼈⽤户是VMware Workstation ,针对苹果系统是VMware Fusion,针对企业⽤户是VMware vSphere+VMware vCenter。Linux大厂 RedHat 使用的是(QEUM-KVM)kernel-based virtual machine 和QEUM。微软开发的是 hyper-V 运用在自家的 windows 系统上,厂家Citrix开发的是 Xen,这家和其他厂家不太相同,是一种半虚拟化技术。

因为工作的原因,我注重学习的是 Linux 的 KVM ,Linux 在 IT 领域应用的更为广泛,学习 Linux 就不在此多叙,如果想系统的入门学习Linux,可以去看看《Linux就该这么学》这本书。

在虚拟化中,物理机提供物理资源,再上一层是 Hypervior/VMM 也就是宿主机,由他分成不同的客户机 OS1,OS2,OS3......

虚拟化模式下有两种指令,特权指令和敏感指令。顾名思义,特权指令是操作和管理关键系统资源的指令,只有在最高特权级才能正确运行,如果在非最高特权级运行,特权指令会引发一个异常,处理器可能会陷入最高特权级,交由系统软件进行处理。敏感指令,是操作特权资源的指令,其中包含修改虚拟机的运⾏模式或者下⾯物理机的状态;读写时钟、地址重定位系统及所有的I/O指令、中断等寄存器;访问存储保护系统等等。通过对比可以得出特权指令比敏感指令等级更高。当 guest OS 执⾏特权指令的时候,VMM会捕捉到异常,对 guest OS 执⾏的特权指令进⾏特权降级,然后进行模拟,通过模拟的⽅式实现 guest OS 需要实现的操作。

需要注意的是由于X86架构的CPU,敏感指令并不完全是特权执⾏,有些敏感指令对于VMM来说是捕捉不到的,所以⽆法进⾏特权降级然后陷⼊模拟,所以由于X86架构的CPU的这种情况,⽆法实现虚拟化的全部功能。

但如何解决X86架构的虚拟化实现呢,VMware给出了他们的技术方案,那就是通过二进制翻译(BinaryTranslation)。X86硬件虚拟化诞生也就十多年,但VMware已经成立了二十多年了,BT技术的历史也早已超过硬件虚拟化的历史,所以这是一项成熟到有些过时的技术了。BT技术包含了二进制代码翻译技术还有优先级压缩技术,他们的共用实现了让虚拟监视器和客户机可以运行在不同的特权级,实现Guest OS 的核心指令通过虚拟监视器的捕获和模拟来执行,实现客户操作系统需要做的操作。由于纯软件的实现⽅式导致效率极低,速度慢,所以又有了半虚拟化技术。半虚拟化采用了 Hypercall 技术,guest os 部分的代码被改变,使它会将特权指令的草案中都转还给 VMM 的 Hypercall,由 VMM 继续处理,使 guest os 知道自己运行在1环而不是0环,有效的避免了虚拟化的执行冲突问题。半虚拟化有一项优点,那就是效率高,但缺点是他无法虚拟化Windows,因为Windows不能修改代码。

本片介绍了虚拟化的概念还有各个厂家对虚拟化的不同技术实现,下一篇会持续介绍Linux 虚拟化技术 KVM 的安装和使用等。

整理一下虚拟化与Linux的学习经历相关推荐

  1. linux操作系统学习网站整理(100个)

    linux操作系统学习网站整理(100个) 评选出的这100个优秀站点,将按照下述20个类别作以评介: (一) 文件下载 (二) 幽默娱乐 (三) 相关新闻 (四) 通用硬体 (五) 专用硬体 (六) ...

  2. Linux系统学习导图整理

    前段时间整理了一个Java的思导图,今天整理了一下收集的Linux思维导图. PS.图片都是在学习中或者偶然看到的,感谢感谢,因此我会附上图片的来源,如有侵权,请联系我,谢谢. Linux学习路径: ...

  3. linux操作系统学习网站整理

    linux操作系统学习网站整理(100个) 评选出的这100个优秀站点,将按照下述20个类别作以评介: (一) 文件下载 (二) 幽默娱乐 (三) 相关新闻 (四) 通用硬体 (五) 专用硬体 (六) ...

  4. 电脑小白自学linux,Linux小小白的学习经历那点事

    不知道大家知不知道Linux,或者说对于Linux了解有多少,曾经的我连计算机都不会操作,更别说Linux系统了,可以说完全是一个小白,上了大学后才知道原来电脑除了Windows系统外还有别的,而且用 ...

  5. 一个拿到人人网和淘宝网offer的大四学生的Android学习经历

    一个拿到人人网和淘宝网offer的大四学生的Android学习经历 本来早就应该整理好的,但是最近一直杂事比较多,现在在家,我家不能上网,在亲戚家用网,总算整理好了.我也着急啊.因为过几天就要去实习了 ...

  6. 嵌入式Linux+Android学习路线图

    嵌入式Linux+Android学习路线图 2016-08-01 韦东山 百问科技 网站/论坛:www.100ask.net,www.100ask.org 淘     宝:100ask.taobao. ...

  7. 嵌入式Linux+Android学习路线图+学习进度

    嵌入式Linux+Android学习路线图 转载:http://www.100ask.net/a/howtostudy/ 重拾Linux驱动,就按照百问网的步骤一步一步做,看自己最后能坚持到哪一步!! ...

  8. flayber正文 再谈如何学习Linux,一线Linux专家学习经验谈

    记得最早接触linux是在2000年,那个时候,还在上大学,一个同学从荷兰回来,带回来了一个Linux的拷贝版,记得版本还是Redhat6.2.曾经为安装一个系统让我们忘记疲劳,挑灯夜战,不亦乐乎.那 ...

  9. 鸟哥的Linux私房菜(基础篇)-第二章、 Linux 如何学习(二.3. 有心朝Linux作业系统学习者的学习态度)

    第二章. Linux 如何学习 最近更新日期:2009/08/06 3. 有心朝Linux作业系统学习者的学习态度 3.1 从头学习Linux基础 3.2 选择一本易读的工具书 3.3 实作再实作 3 ...

最新文章

  1. php编程输出心形图案_利用php输出不同的心形图案,php心形图案_PHP教程
  2. 再窥--单链表和顺序存储
  3. iOS开发之share第三方登录以及分享
  4. echarts 地图常见效果
  5. 2018 蓝桥杯省赛 B 组模拟赛(五)题 F题
  6. libmesh 实现 流程
  7. 关于opencv4.5.3读取视频失败问题
  8. JS逆向---获取某知名外卖平台数据(_token)
  9. windows怎么删除服务, OpenService 失败 5,拒绝访问解决
  10. 【手持式微波频谱分析仪】真正便携且功能强大的仪器 - 欧洲制造
  11. 矩阵的逆及求逆矩阵的方法,可逆矩阵定理与判定方法,(非)奇异矩阵,方程Ax=b解法,Hilbert矩阵及其逆的求法,条件数(Condition Number)及其计算方法
  12. 苹果CMS自动定时采集教程
  13. PHP基础+php高级+前端+项目实战视频教程免费分享
  14. jenkins自动化打包android,Android使用Jenkins实现自动化打包
  15. C语言n层嵌套平方根的计算n
  16. 全志A40i开发板(4核ARM CortexA7)测评合集——存储介质读写测试
  17. LVS 的 Tunneling 模式
  18. ad stm8l 热电偶_[转载]STM8S单片机入门3(AD转换及锂电池管理)
  19. 【周志华机器学习】十二、计算学习
  20. 外卖匹配系统_快餐外卖系统得需求分析

热门文章

  1. PowerShell 设置文件只读 (设置文件属性)
  2. java实现Word文档转换PDF文档
  3. DEVOPS:统一DEV、OPS和QA
  4. 【计算机网络】 IP地址划分
  5. 时间计算题100道_B5 小学二年级数学100以内加减法口算计算题横式电子版3600道题 直接打印...
  6. 在校大学生学业预警系统java_关于学业预警系统上线使用的通知
  7. kaliddos教学
  8. 香港20年十大最具影响力电影
  9. Oracle将收购Sun公司
  10. Cocos精品《热血传奇》|五千个日夜 同一个传奇