水煮操作系统之虚拟化
扫描二维码
随时随地手机看文章
作者:朱老师,华清远见嵌入式学院讲师。
一个成功的操作系统离不开各种虚拟设备的支持。虚拟通常发生在某种资源不足的情况下,但实现起来要依赖另一种资源与能力的不足过剩。
早期的计算机比较慢,一个人用都嫌慢,而现在经过摩尔定律式的增长,CPU的速度已经远远超过人的反应速度,10**9:10= 100000000倍。一个CPU对应一个人已经太浪费了。
于是出现了瘦客户端-服务器这个业务模型, 一台服务器可以同时满足N台客户机的请求。每个客户机丝毫感觉不到其他客户端的存在,还以为是自己独占某台服务器。现在的网络游戏就是充分利用了这个特性。云计算的实现基本原理也是如此。即使是同一台PC, 也是有多个任务在并发执行的。进程,线程,超线程,多核等都是不同层次的虚拟机。多线程释放了CPU强大的计算处理能力,使他的能力得以充分发挥。处理器虚拟化是因为处理器个数的不足,而得以实现是因为CPU的高效性。
另一种广泛应用的就是虚拟内存,虚拟内存摆脱了物理内存不足对应用程序的局限,保证了进程的空间独立性,背后依赖的是CPU的高速性及硬盘的交换缓冲区。当然叫起真来,每个进程同时用光分配给自己的进程空间,内存管理肯定招架不住。就像保险公司,如果所有人都出问题索保,那么保险公司也会立刻破产。实际上不大可能, 前者因为程序的局部性及多次性,后者因为出问题是个小概率事件。我们的方法能够解决平均情况下的问题,但是一般不考虑小概率的最坏情况。
虚拟网络硬盘同样如此,就像有些邮件系统,虽然每个人可有NG空间可以支配,但平均情况下,可能只有很小比例的人完全用光。所以我们不必准备理论上的最大磁盘空间,真的有最坏情况发生,再解决也不迟。
虚拟磁盘,使逻辑磁盘摆脱了物理磁盘的局限, 一个物理磁盘可以是多次逻辑磁盘,一个逻辑磁盘也可以包含多个物理磁盘。
虚拟光驱,记得以前有个哥们玩游戏,此游戏可能因为版权控制问题,必须依赖光盘。 但是他靠在磁盘创建了一个虚拟光盘蒙混过关了。而现在虚拟光盘iso文件已经在广泛应用,你可以用它刻录物理光盘,也可以用虚拟机直接加载它。
虚拟专用网,几乎每个大公司都有。物理IP地址是按照地域分配的,中国与美国的计算机肯定不在一个子网之中。但是跨国公司都有自己的虚拟子网,每个人可以自由访问公司内的服务器,哪怕横跨万水千山,跨越千万个子网。而且查看ip, 也会觉的是在同一个子网里。极大方便了公司内部的协作,提高了跨区协同工作的效率。实现起来,主要依赖IP隧道技术,你看到的Ip包并非实际的ip包,而只是数据部分, 经过不同的子网要填入不同的ip头部。
最近几年,最热门最实用的虚拟技术估计就是虚拟机了。当年开发操作系统内核及驱动的时候就用到VMware,觉得很方便,重启快,调试更简单。没想到后来它成为市场的主流。想想也是,很多公司的服务器硬件能力已经过剩,一个物理机器编程多个虚拟机器甚至安装不同的操作系统,满足不同的需求,提高了资源的利用率,降低了硬件及电力成本。而且虚拟机技术也提高了安全性,有一种双重文件系统技术,网络只能访问逻辑文件系统,*也只能访问破坏逻辑文件系统,而实际的物理文件系统是被隔离保护了。虚拟机是全面的使用了虚拟技术,它里面的所有硬件都是虚拟的,CPU只是宿主机的一个进程而已,内存也只是宿主虚拟内存的一部分,硬盘,软盘,光驱其实是宿主机硬盘中的一个文件,网卡也是逻辑上的网卡。
所谓的虚拟大型机,是由成千上万个PC结点组成的,可以完成高性能的计算任务, 而成本比真正的大型机还便宜。软件环境更是有好的多。
“本文由华清远见http://www.embedu.org/index.htm提供”
华清远见