泰晓科技 -- 聚焦嵌入式 Linux - 追本溯源,见微知著!
网站地址:http://tinylab.org
微信公众号关注我们新浪微博


扫一扫

关注 @泰晓科技
赞助泰晓原创 ○ 在线实验Linux ○ 下载开源书籍
请稍侯

也谈虚拟化技术

Wu Zhangjin 创作于 2015/06/24

By Falcon of TinyLab.org 2008/02/02

背景:IBM CELL 架构大赛

去年参加了全球的 IBM CELL 架构大赛(http://tp4cell.sf.net),虽然最终没有获奖,不过对当时的开发环境依然记忆犹新。

刚比赛时,实验室还没有买 PS3,所以直接到 CELL 官方下载了 CELL SDK (当时是2.0吧),安装在 Fedora 7.0 上,后来 IBM 中国派工程师到学校授课时,因为借的是数学院的机器(CELL SDK对硬件要求比较高,要 2G 主频、1G 内存,信息院竟然连这个都没有,注:楼高很漂亮,设备很落后,呵呵!),而且他们跑的是 Windows XP,所以在上面跑了 Vmware,再跑 Fedora,再跑 CELL SDK。为什么说对这个记忆犹新呢?

看看这个有趣的架构,你也会这么认为的:

  • 底层硬件是 Intel 的机器,上面安装的 Windows XP 系统
  • 在 Windows XP 上安装了 Vmware 虚拟机,在 Vmware 虚拟机上安装了 Fedora 7.0 操作系统
  • 然后在 Fedora 7.0 上安装了CELL SDK,这个 SDK 包含了各种开发工具,更重要的一个是它里头包含了一个模拟 CELL 处理器的“虚拟机”(这里貌似要叫做仿真器emulator)。因此,这一点也可以说在 Fedora 7.0上又安装了一个和 Intel 处理器架构不一样的 CELL 处理器架构(即仿真了一个全新的硬件平台)
  • 之后呢,在这个仿真器上运行了一个 Linux 系统
  • 接着呢,就是让我们的 gdb tracepoint 在最最后那个 Linux 上跑起来,并能够分别跟踪调试 CELL 平台下的三种不同的应用程序(在 SPU、PPU 和同时在 SPU 和 PPU 上跑的程序)

是不是非常有趣?没有增加任何额外的硬件,有了操作系统的虚拟化技术(如 VMware)和处理器架构的仿真技术(如 Cell SDK),我们获得了不同的操作系统(Linux 的 Fedora 7发行版)和不同的硬件处理器架构(在 Intel 平台之上又有了一个 Cell 平台)。

与此同时,虚拟出来的系统之间的资源通过虚拟化技术实现了良好的隔离,在一定程度上保障了它们的安全性。不止于此,随着 HAL(硬件抽象层,估计和虚拟化技术中提的系统管理层应该类似)的剥离,操作系统冗余技术(在 HAL 上跑多个操作系统,即虚拟多个操作系统,当其中一个出现故障,把正在进行的任务马上切换到另外一个操作系统中)的提出,曾经火热过的 MicroKernel(微内核)的再次火爆,CPU 虚拟化技术(在 CPU 中引入支持虚拟化技术的指令)的发展,或许将带给虚拟化技术带来更光明的前途。

虚拟化技术的潜在应用

基于上面几点,暂时可以想到的几个潜在的应用有:

  1. 虚拟计算机实验室

    想起来就觉得这个太有意思了,这本身都包括很多层面。

    • 操作系统的虚拟化技术,为实验室成员(特别是计算机专业的学生)提供更丰富的操作系统实验环境。当然,也可以为普通计算机用户提供一个操作系统多样性的体验平台甚至是“展览馆”。

    • 处理器和外设的仿真,为电信、微电子、嵌入式系统、计算机的学生提供丰富的处理器学习平台,练习包括汇编语言、驱动程序的编写在内的相关知识等。

    • 把不同操作系统通过网络连接起来,构成网络实验环境、网格计算环境、高性能计算环境。

      接着为用户提供统一的管理接口、使用界面、相关手册、即时交流接口,进而建设出一套包括教学、实验、演示、交流等在内虚拟计算机实验平台。 如果不使用上面提到的虚拟化技术,而是已经有各种硬件设备(比如有多种不同的开发板,如 ARM、PowerPc、MIPS 等),也可以通过引入一些统一的硬件管理设备(电源管理、U 口管理等),并接口上面的管理接口、使用界面等构件一套虚拟实验平台。

  2. 虚拟化技术应用于工控领域

    结合操作系统冗余技术、Microkernel 技术(L4、Xtraturm),虚拟化技术可能会给工控领域带来变革,为工业控制的安全性、实时性提供更可靠的保障。

  3. 虚拟化技术隔离不同的网络服务

    目前就已经有很多这样的应用,比如把 Http 服务专门置于 chroot(一个Linux平台下的命令,通过它可以启用新的 ROOT 目录,并在该环境下运行应用程序)“虚拟”的 Linux 根文件系统下面,实现和系统原有系统的分离,保障该服务和系统其他服务的隔离。把不同的网络服务通过虚拟机隔离开来,“划分”潜在的“冲突域”(貌似交换机,呵呵),从此保障整个系统的稳定性和可靠性。

现在的虚拟化技术解决方案正在蓬勃发展,目前流行的有 Vmware、Virtual PC、UML、Qemu、KVM、Skyeye、Xen 等(更多信息可以看 wikipedia 上的虚拟机列表)。如果考虑到价格方面的因素,特别是教育领域、科研领域的需要,Linux 平台下的很多解决方案应该是更好的选择,诸如 Xen,KVM,UML、Qemu、Skyeye 等不仅提供了免费的应用而且开放了源代码,方便了我们进一步的学习和研究。

再补充一点,在实现虚拟化技术的时候,诸如 Vmware 提供了一些硬件(包括 CPU 以及各种外设)的抽象层,因此无须对客户(guest)操作系统进行修改,而诸如 Xen 等则需要对客户操作系统进行一定的修改,这代表了两种不同的虚拟化技术方向。不过,随着 CPU 虚拟化技术(在 CPU 中引入一些支持虚拟化的特殊指令)的引入,可能会带来一些变革。

更多的信息请看相关资料,或许你也会从中发现乐趣所在。

相关资料

Read More: