Chinaunix首页 | 论坛 | 博客
  • 博客访问: 494783
  • 博文数量: 102
  • 博客积分: 4001
  • 博客等级: 上校
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-21 16:01
文章分类

全部博文(102)

文章存档

2011年(1)

2010年(1)

2009年(56)

2008年(44)

我的朋友

分类:

2008-09-15 16:23:54

微内核(Microkernel)与一体化内核(Monolithickernel)[1]分别属于操作系统设计中的两种不同的技术路线,就技术本身而 言,也是各有优劣。一般认为,微内核强调强调内核的单纯性与安全性,其代价就是性能不可避免的下降;一体化内核追求很高性能。因为在操作系统发展的不同阶 段,大家关注不同的问题,由此会产生不同的研究与应用热点。
     在上世纪70年代,硬件很昂贵的情况下,如何充分发挥CPU的性能就成了操作系统的主要任务,因此而产生的UNIX席卷了整个工业界与学术界。大概10年 以后,从1985年开始,CMU(卡耐基梅隆大学)开始了MACH项目,一开始我本人更倾向认为MACH是作为UNIX的一种系统重构 (refactor),当然后续就陆续出现了我们现在微内核所提倡的一些概念。MACH项目一直发展到了1994年结束,共计9年时间。虽然MACH最终 没有能够像UNIX那样在操作系统领域占据统治地位,但是作为一个科研项目,MACH依然是很成功的。不能因为MACH商业上的不成功就抹杀MACH为微 内核系统概念所作的贡献。
     Jochen Liedtke(雅亨 里特克)(1953-2001)刚好经历了UNIX与MACH的那个年代。1984年开始,他开始着手研究L3微内核,L3内核不是从头开始的,而是作为 他以前工作(Eumel)的一个延续。从时间上来看,L3项目跟MACH几乎是同时起步的,我们可以想象在那个年代,MACH也不是一枝独秀的,应该有好 多研究机构在同时微内核研究操作系统,只是MACH的名气更大,类似于我们现在听说到的Plan9,也是一个名气很大但是不是很实用的操作系统。在研究 L3的过程中,他指出,精心的系统设计和实现能够减少因为系统IPC开销过大而造成的性能损失,在此期间,他发表了很多的Paper(他是我读过的 Paper中,在ACM SOSP这种级别上发表文章最多的人)去论述如何设计微内核系统等等。不过,很奇怪的是,这么牛的人直到1996年才拿到他在柏林工业大学的PHD学位, 不知道是他的BOSS苛刻呢,还是人家根本不在乎,所以拖了这么久。然后,他去了IBM的Thomas J. Watson Research Center,直到1999年。在IBM,他和他的同事们提出了SawMill MultiServer的OS架构,如果对微内核架构感兴趣的人可以翻阅这篇paper[2],文章详细描述了SawMill Linux的基本原理和实现方案。这篇文章的作者一共9个人,包括Jochen在内,9个人分别来自德国卡尔斯鲁尔大学(Uni Karlsruhe)、德国德累斯顿工业大学(TU Dresden)、澳大利亚新南威尔士州立大学(UNSW)。而这三所大学在目前的L4的研究领域仍然处于处于旗舰水平。只不过不过他们分别关注不同的领 域而已。1999年,Jochen取得了卡尔斯鲁尔大学的教授职位,在卡大的两年内,他基本上定义了L4 V.2的所有接口细节和实现方案,这些技术细节都以文档形式发布。不幸的是,Jochen于2001年10月份去世,年仅48岁,他的去世是L4 Community最大的损失。这里有缅怀Prof. Jochen Liedtke的文章,详细记述了他的生平,大家可以看看:
     卡尔斯鲁尔大学的系统结构小组(L4Ka)负责L4的研发(),称为L4Ka:Pistachio, 这个版本的L4是由卡尔斯鲁尔大学和UNSW的Disy()。目前卡尔斯鲁尔大学的工 作主要集中在Pistachio的维护和多种基于Pistachio的虚拟化技术、多处理器的支持以及相关设备驱动的复用等领域。感觉卡尔斯鲁尔大学和澳 大利亚的研究小组联系很密切,他们发表很多共同署名的paper,而且L4Ka:Pistachio的team member也都是两家共同出人,比较奇怪的是,还有一位来自Rice University的PhD负责研发IDL4的研究。总的感觉,就是L4Ka:Pistachio的开发比较国际化。L4:Pistachio是目前开 源的L4中支持平台最多的,目前可用的有Alpha, AMD64, ARM, IA32, IA64, MIPS64, POWERPC32,另一个需要指出的就是L4:Pistachio遵守BSD License。L4:Pistachio中类似L4Env的东西叫做kenge,kenge似乎是ERTOS单独开发,只是存在与EROTS的网站上, 有另外一个项目名称叫做Iguana。 Wombat也是ERTOS开发,类似于Pistachio+Iguaua之上的L4Linux。
     德累斯顿理工大学的操作系统研究小组(TUDOS)负责Fiasco的研发,在目前所有还继续存在的L4项目中,Fiasco是最早出现并获得关注的一个 项目,因为微内核领域很有影响力的paper(The Performance of µ-Kernel-based Systems)发表在SOSP97,而在此时,Fiasco以及L4Linux-2.x已经完成,文章里面所应用的数据都是基于当时主流的Linux- 2.0.x。而在此前,Jochen的L4/X86是用汇编语言实现的,Fiasco是兼容L4/X86的C++实现版本。此后的工作,根据我个人观点来 看,TUDOS试图完全按照SawMill架构所描述的步骤来进行,先开发Fiasco作为微内核,然后开发了一系列的Server来完成一个真正的OS 所要进行的工作,包括任务管理,内存分配,时钟管理,设备管理等等,这些Server总称为L4Env。基本上,他们已经完成了一个OS所具备的所有功 能,甚至开发具有实时功能的窗口管理器DoPE,可以使用DoPE创建按钮,对话框等各种桌面元素,成为一个可用的GUI。但是L4Env同真正的 Linux相比,易用性方面还是有很大的欠缺,所以,L4Linux的升级更新,从来没有停止,从L4Linux-2.0.x,到L4Linux- 2.2.x,再到L4Linux-2.4.x,到最新的L4Linux-2.6.x的时候,更新速度已经接近正常的Linux Release的速度,基本上可以达到同步。这项工作带来的另一个好处就是实现了Linux的虚拟化,L4Env的每一项功能都是以Server的形式提 供,因此可以同时服务给众多的Client,而不是产生冲突,自然就可以运行多个Linux了,这为以后TUDOS在Trusted Computing方面的工作奠定了基础。目前TUDOS的工作重点包括:实时系统,系统安全以及虚拟化技术,这三个方面都是基于微内核技术而来。参与 Fiasco工作的团队远远没有Pistachio那么国际化,基本上是TUDOS一家在作,虽然从公开发表的论文来看,也有一些大学在从事Fiasco 相关的工作,但是基本上都是在L4Env或者L4Linux层面,很少有人能够切入Fiasco本身。Fiasco遵从GPL V2协议,目前TUDOS的shepherd是Prof. Hermann Haretig教授。关于TUD在微内核方面的工作,有一点可以强调一下,就是TUD目前在Trusted Computing方面的工作,基于微内核进行TC架构的研发是TUD的微内核研究中的一个特色,目前相关研究都是从L4/NIZZA而来, L4/NIZZA原本是为提高VPN的安全性而开发的一套架构,其基本原理就是利用同一台机器上的2个L4Linux来分割内网和外网,而网络协议栈从 L4Linux中分离出来,直接运行与微内核之上,从而极大地提高了网络设备的安全性。Fiasco也有类似于一般实时系统的资源预留机制 (Resource Reservation),从而达到硬实时的效果。
     关于澳大利亚在L4方面的研究,前后共有三个机构,第一个是UNSW(新南威尔士州立大学),第二个是NICTA(澳大利亚信息与通讯技术研究中心),第 三个是公司OKL4 Labs。这三套机构是同一批人,而且shepherd都是同一个人德国人Prof. Gernot Heiser。其中OKL4 Lab应该是为了商业化NICTA在L4领域的研究而成立的公司。前面已经略微介绍了一些EROTS在L4:Pistachio方面的一些研究成果,不再 重述。EROTS合作开发Pistachio之后,他们继续在Pistachio改进,而且他们一开始就以嵌入式系统为明确的目标,最终扩展成了 NICTA::Pistachio-embedded。从功能上讲,NICTA::Pistachio-embedded应该是L4:Pistachio 的子集,而且在安全性上又有所增强。再后来,Gernot Heiser成了OKL4 Labs公司的CTO,正式推出了OKL4,为OKL4提供商业支持,当然是要付费的,最初的OKL4采用BSD License,目前使用 License(我不了解这个License,但是据说是跟GPL兼容的,呵呵,难度不小)。从总体上讲,OKL4的优势可能在于更加严格的资源限制和较 好的性能。从EROTS的主页上看,他们建立了专门的L4.Verified和seL4用于L4的形式化验证,虽然TUD也有类似的项目L4.Sec,但 是规模上远远比不上L4.Verified和seL4,可能这个也从另一个方面保证了OKL4的工业可用性(我自己对于model checking在OS上面验证的可行性有些怀疑,我觉得可以验证是没有问题,但是C/C++验证的结果似乎只能保证某一个level上的可靠性,向硬件 电路那样全部验证似乎不大可行,在大规模集成电路里面,全部验证也是很费时间的)。但是,总的说来,OKL4的商业化道路走的很好,已经有Toshiba 和Ericsson正在使用OKL4,一个重要的理由就是provably correct version of L4 able to satisfy the highest security requirement,即OKL4是可以证明的能够满足最高安全性需求的L4版本。但是,总体说来,因为OKL4很关注security,所以它的 API相对于Pistachio,Fiasco来讲,已经变化很多。
         前面三种都是开源版本的L4,也有不开源的L4,称为LEO/P4,这个微内核很奇怪。它基于一个P4微内核实现了一个被用在车载电子设备的操作系统接口 OSEK。后来基于P4微内核,又实现了LEO/Lynx和LEO/Linux ()。按照Sysgo网站上的说法,它有一下用途:航空国防,自动化运输,网络,消费类电子。如果横向来比这些L4,那么P4 绝对是其中的佼佼者,P4支持ARIC-664(支持航空,运输,铁路和军用等系统的实时飞行器网络总线协议),Real-Time, Embedded Linux, Real-Time Java还有POSIX。因此,P4完全是工业化的L4微内核系统,而关于LEO/P4的公开发表的文章,描述其设计架构的也仅仅只有一篇(LEO/P4 - A µ-Kernel Based OSEK Implementation),从文章来看,P4似乎也跟之前的OKL4也有类似之处,在设计之初,考虑了很多的用户需求。不过从Paper来看,P4 并没有完全超越L4的设计理念,只是相当于L4在某个领域的特化,这篇文章发表于2000年,所以P4也出来很久了。只是作为一种非开源的专有系统,而且 用在诸如航天国防等领域,不太容易为人所知,但是近2年在欧洲的发展速度居于欧洲各大嵌入式厂商之手。新的P4被命名为PikeOS,最新的关于 SysGo公司的消息请参考(http://www.linuxdevices.com/news/NS4944421557.html),在 Linuxdevices网站上,你可以找到很多关于SysGo公司的消息,从另一个方面来讲,也证明PikeOS的成功,关于Sysgo AG近几年的发展情况,可以参考调查报告(http://linuxdevices.com/articles/AT2246626299.html)。 但是在网络上,有关PikeOS和L4关系的文章屈指可数,而且相关的宣传资料上面也不提这一点,因此,现在的PikeOS与L4 Family之间的差距,也估计只有Sysgo AG才能说清楚。此外,我没有查到任何关于P4或者PikeOS开发人员的信息,很奇怪。
         下面再介绍一种跟L4类似的微内核EROS(),目前EROS的作者去了John Hopkins 大学,所以基于EROS的新OS被称之为coyotos()问世,EROS和coyotos的作者 Jonathan Shapiro,目前也是微内核领域的领军者之一。之所以介绍coyotos,是因为在L4设计之初,Jochen追求的目标是一种可以跟Native Linux从性能上想媲美的L4,所以L4/86更多地关注于性能的提升,而忽视了security,但是随着硬件性价比的提高,对于security的 要求明显地增强。而EROS和coyotos则从一开始更多地关注security,目前就security而言,从设计理念而言,我认为coyotos 走在了众多开源L4包括Fiasco和Pistachio的前面。但是L4也在不断提升自身的security,就像当初EROS借用来自L4的Fast IPC等概念一样,L4也在利用coyotos中的某些特性。或许,coyotos将会是未来L4设计的一个方向。在这里(http: //os.inf.tu-dresden.de/pipermail/l4-hackers/2004/000910.html),TUD,UNSW, UKA(卡尔斯鲁尔)以及Jonathan本人都参与了这次辩论,这次长达2个月的讨论是从这里开始Unifying EROS and L4(), 不过看题目,就知道很火爆了,不过还是很佩服Jonathan,敢出这样的题目,一般情况下,这样的题目,都是被拍的对方,不过大家可以拭目以待。
     最后一个是L4/Hurd。我们周围的好多人把Hurd都作为一个joke,觉得从GNU开始,Hurd一直都是名气很大,但是从来没有一个实体。这个其 实是错误的,Hurd的确是没有能够达到让大家可用的地步,但是它从来都是active的项目,我周围就有一位美国人,他就是Hurd军团的一员,他就是 以写Hurd为任务的。但是,为什么Hurd将近这么多年没有成形,我觉得可能有以下的几个原因: Linux强势崛起使得大牛们觉得Hurd可有可无,反正GNU里面有Linux在支撑,但是这个不是主要原因;Hurd的设计者们对于Hurd太过理 想,因为GNU系列的gcc和gdb是很杰出的软件,还有emacs都是软件设计的杰作,而对于GNU的灵魂的HURD,更需要比杰出的还要杰出,无论从 性能上还是从架构上,都要超过同类一大截,设计的过度追求完美,加上当时以MACH为代表的微内核技术的不成熟,导致HURD迟迟不能发布,最终近乎流 产。目前的Hurd正在基于L4:Pistachio开发。关于设计超出技术成熟度而最终导致项目失败,是有先例的,IBM的Workplace OS就是一个,开始于1991年的workplace os几乎承载了IBM再一次统一江湖(CPU + OS)的所有希望,这是一个极其有魄力的计划,他们计划基于MACH开发出一个Microkernel,,这个Microkernel几乎可以运行当时所 有的OS Personality(DOS, OS/2, Microsoft Windows, OS/400, AIX),不仅如此,还要保证这个微内核有非常高的portability,可以的平台包括PowerPC, ARM, X86以及从PDAs到Workstation的各种不同大小,甚至还有支持更大的Server。或许这种项目只有IBM敢提出来,的确,这可能是人类历 史上有史以来最宏伟的操作系统计划了。当时为了完成这个计划,IBM说服了当时如日中天的Taligent联合开发(类似于IBM,Motorola, Apple的合作,风险利润均摊),项目进行了5年,一共花了2 Billon的美元(Cliton当政时候的美元,可是很值钱的啊),最后于1996年宣告失败。从此以后IBM只是修修补补AIX,放弃自研操作系统, 转而全力拥抱Linux,扶持Redhat和Novell。而对于Taligent,Wikipdia上面的说明是,它和IBM联合冒险(Joint Venture),最终于90年代disappered。所以基于MACH的HURD项目失败也是情有可原。
    
         
[1]注意,在这里Monolithickernel有人称之为宏内核,大内核(可能相对于微内核而言),还有巨内核(比较奇怪的称呼)。但是似乎都不太准确,采用一体化内核比较能反映问题的本质,即所有的功能都被封装在同一个地址空间内。
[2]
阅读(2802) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~