服务器 频道

虚拟化风暴前夕 微软HyperV技术分析

  Microsoft Hyper-V和VMware ESX Server是比较相像的,都是Bare-Metal类型,但是它们的内核架构也有着明显的不同。微软在谈到竞争对手ESX Server时,总会提到,Hyper-V是微内核架构的,而ESX Server是单内核架构,Hyper-V要更好。

  这两者具有什么不同?到底谁更好呢?

 


单内核(分层的内核)与微内核

  单内核和微内核实际上是操作系统内核术语,操作系统的内核——实现核心功能的那部分——可能是微内核(Micro kernel),也可能是单内核(Monolithic kernel,有时也叫宏内核Macro kernel)。按照类似封装的形式,这些术语定义如下:

  微内核(Micro kernel)――在微内核中,最常用的功能被精心挑选设计在内核模式(或者按照上一页的说法,在x86上是Ring 0权限下)运行的一个进程上,而其它大部分不怎么重要的核心功能都作为单独的进程运行在用户模式下(类似地,Ring 3权限下)运行,它们通过消息传递进行通讯(例如,Windows采用的进程间通信IPC机制,IPC就是Inter Process Communication)。最基本的思想就是要尽量地小。通常微内核只包含了进程调度、内存管理和进程间通信这几个根本的功能。
  这种设计具有许多好处,例如增加了灵活性,易于维护,易于移植。微内核的模块化设计让其他核心功能模块都只依赖于微内核模块或其他模块,并不直接依赖硬件。要添加新的特性只需要另行编写用户模式的微内核服务器。而只需把微内核本身进行移植就能够完成将整个内核移植到新的平台上。
  由于模块化的设计,不包含在微内核内的驱动程序可以动态地加载,或者卸载。同时,微内核也不依赖于固定的文件系统,用户可以随意选择对文件系统的支持。用户甚至能够在系统运行时将研发出的新系统模块或需要替换现有模块的模块直接而且迅速的加入系统。不需要的模块将不会被加载到内存中,因此微内核就能够更有效的利用内存。微内核还具有的好处是实时性、安全性比较好,并且更适合于构建分布式操作系统和面向对象操作系统。
  微内核操作系统的典型例子是,Mach(一个非原生的分布式操作系统内核,被众多操作系统采用,例如,被应用在Mac OS X上)、IBM AIX、BeOS,以及Windows NT(Windows Server 2003和Windows Server 2008都包含其内),还有著名的Minix(一个主要用于教学的Unix系统)和Amoeba(一个真正原生的分布式操作系统)。

  单内核(Monolithic kernel)――单内核是个很大的进程。它的内部又能够被分为若干模块(或层次,或其他),但是在运行的时候,它是一个单独的大型二进制映象。因为是在同一个进程内,其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是微内核那样在多个进程之间进行消息传递。因此在运行效率上,单内核会具有一定的好处。
  单内核操作系统的典型例子是,大部分Linux,包括BSD在内的几乎所有的Unix,MS-DOS,Windows 9x。例如Sun Solaris的内核就运行着数百个线程以实现各种功能,而编译过Linux内核的人就知道Linux内核有数十MB之巨。

  单内核和微内核哪个更好显然是一个很有争议性的问题,必须说明的很有趣的一点是,这种争论经常会令人想到上一个时代CPU领域中RISC和CISC的斗争。现代的成功CPU设计中都包含了任何的这两种技术,就像现在Linux(单内核)和Windows NT(微内核)实际上都是微内核和单内核的混合产物一样,只是或多或少的问题而已。历史上有过这样的争论,Linux(单内核)的作者Linus和Minix/Amoeba(均为微内核)的作者Andrew S. Tanenbaum教授在讨论组上论战,并卷入了大量的爱好者。最终Linus也同意Tanenbaum微内核架构更为先进的论点。

  掉书袋就到这里,回到Hyper-V上来,通过采用微内核架构,Hyper-V在体积上很有优势,它的大小只有300k左右(似乎新版本的更加小),而VMware ESX Server的Linux核心则非常大。就VMM虚拟化管理程序来说,需要的功能不多,因此采用微内核架构是很合适的,运行效率可以很高。不过就理论上来说,合理配置的单内核其实和微内核也很相似。哪一种性能更好?这要在测试之后才能知晓了,不过在这之前,我们接下来可以先看看微内核带来的一个好处:设备驱动程序的变迁。

注:分布式操作系统(Distributed Operation Systems)

  分布式操作系统DOS(可不是Disk Operation System)的具有多个定义,是是管理分布式系统的资源的操作系统。这样的说法比较抽象,我们可以通过与网络操作系统(例如,我们使用的Windows)对比来简单阐述分布式操作系统的特点:
(1)分布性。分布式操作系统的处理和控制功能均为分布式的;网络操作系统其控制功能却是集中在某个或某些主机或网络服务器中,即集中式控制方式。
(2)并行性。分布式操作系统具有任务分配功能,可将多个任务分配到多个处理单元上,使这些任务并行执行,从而加速了任务的执行;而网络操作系统通常无任务分配功能,网络中每个用户的一个或多个任务通常都在本地计算机上处理。
(3)透明性。分布式操作系统通常能很好地隐藏系统内部的实现细节。包括对象的物理位置、并发控制和系统故障等对用户都是透明的。例如,当用户要访问某个文件时,只需提供文件名而无须知道(所要访问的对象)它是驻留在那个站点上,即可对它进行访问,亦即具有物理位置的透明性。此外,当分布式操作系统运行一个程序时,该程序无需经过特别设计以及经过用户特别设置,就可以自动划分到多个处理器上并行运行。
(4)共享性。分布式操作系统支持系统中所有用户对分布在各个站点上的软硬件资源的共享和透明方式访问。而网络操作系统所提供的资源共享功能仅局限于主机或网络服务器中资源,对于其它机器上的资源通常仅有使用该机的用户独占。
(5)健壮性。分布式操作系统由于处理器和控制功能的分布性而具有较好的可用性和可靠性,即健壮性,只有所有的处理节点损坏,一个分布式操作系统才算是崩溃了。

  典型的分布式系统包括了SETI@Hom这样的项目,Cluster、集群、云计算,也属于分布式操作系统的范畴。典型的分布式操作系统有Amoeba、Mach、DCE等。

0
相关文章