基于L4微内核的操作系统

转载至:http://hi.baidu.com/l4oss/item/a0c987973e7c1ecfb725310e

     近几年来,L4微内核越来越受到大家的关注,研究和使用L4的人越来越多,但是对于L4介绍的中文资料仍然很少,本文试图收集各种基于L4的操作系统项目,以帮助大家研究学习只用。基本上,各种L4系统可以分为两种,一种是dead system,另外一种就是live system。对于dead system,如果已经丧失了研究的意义,那么也不会收入本列表当中。

     关于L4系统,一般来讲,目前公认的L4系统有2个特点,Fast IPC和Sigma0协议。Sigma0是一种基于IPC的内存管理协议,使用Sigma0,内存管理呈现出一种层次状。举例:有A和B两个程序,如果程序B想使用程序A的内存。如果使用Sigma0,那么很容易实现,只要把A设置为B的pager,并提供B的page fault handler程序就可以。在这种情况下,程序A和程序B依然具有不同的Address Space,A和B之间互相隔离(关于这种层次式的内存管理,请参考The sawmill framework for virtual memory diversity)。 但是如果使用Linux来实现这种模式,除非使用share memory,我想不出其它更好的办法,但是share memory使得A和B之间有的Address Space有了交集,从security和safety两个方面来讲,都不是很好的解决方法。近年来,越来越多的L4系统开始支持一种新的特性-Capability, Capability是为了提高操作系统安全性而设计的,Capability和要访问的Resource之间的关系类似于文件描述符号和文件之间的关系一样,要访问一个Resource,必须通过Capability来进行,Capability里面规定了那么资源可以被访问等安全特性,Capability
允许被grant(从一个用户转移到另外一个用户),总之,Capability是比Access Control List更好的一种增强系统安全性的方法。
Live System
    1, PikeOS/ELinOS 德国SYSGO AG公司的商用非开源系统,它提供了很好的Resource Isolation机制,使用ParaVirtualization,让每一个OS Personality运行在一个VM里面,可以支持Java和Ada的应用程序。PikeOS不但具有Spatial Isolation,还具有很好的Temporal Isolation,因此也支持Real-Time application。ELinOS是移植到PikeOS的嵌入式Linux系统(2.4和2.6),支持众多硬件平台和开发板。PikeOS通过ARINIC 653,D0-178B认证,因此被用于军工航天等Safety-Critical和Secure Application。PikeOS是从98年开始开发的,近几年Sysgo已经成为欧洲增长最快嵌入式厂商,ELinOS也成为比较流行的嵌入式Linux开发环境。因为是商用系统,可参考的资料很少。(www.sysgo.com, http://en.wikipedia.org/wiki/PikeOS)
   2,Fiasco/L4Env/L4Linux Fiasco是TUD Operating System Group (os.inf.tu-dresden.de)开发的Real-Time微内核,支持L4 V2.0和L4 X.0标准(L4的接口标准),Fiasco是由C++实现的典型L4系统,Fiasco提供众多L4系统调用以及Fiasco的实时扩展,请点击Fiasco Syscalls。L4Env是一套基于Fiasco的服务程序,包括roottask, sigma0, log, names, dm_phys, l4vfs, l4io, dope, con等各种server,L4Env是一种典型SawMill Multi-Server OS (参考paper The SawMill multiserver approach),关于L4Env的一些基本情况,请点击L4Env Manual。L4Linux是基于L4Env移植的Linux系统,Linux-2.0, Linux-2.2, Linux-2.4, Linux-2.6前后分别被移植到L4Env上面,目前L4Linux版本更新到2.6.26,L4Linux相当于一种基于“L4 CPU”的Linux系统,对Linux系统的修改都存放在arch/l4目录下面,较好地维持了Linux系统semantic integrity。关于Fiasco/L4Env/L4Linux的设计,请参考Paper The Performance of µ-Kernel-Based Systems ,这个Paper也是微内核领域最著名的Paper之一。值得注意的是,基于Fiasco和L4Linux,有2个很重要的研究成果,DROPS实时系统是一种面向服务质量需求的实时系统,可以提供某种程度的保证(guarantee)。L4/Nizza,一种面向Trusted Computing的基于微内核的系统架构,这也是最早利用L4微内核进行security system研究的工作,可以参考Paper : Security Architecture Revisited。此外,他们维护一个IDL for L4,称为Dice。
     3, Pistachio/AfterBurner Pistachio是目前最好的L4微内核之一,它由卡尔斯鲁尔大学系统体系结构研究组和新南威尔士州立大学操作系统研究小组共同开发的微内核。跟所有的研究机构一样,一开始大家都是单干,卡尔斯鲁尔作Hazelnut,新南威尔士州立做L4/MIPS,L4/Alpha。后来,大家联合起来,做成了Pistachio。不过微内核之上的部分大家一直单干,各有各的系统。卡尔斯鲁尔的Pistachio小组在很长的时间内,一直使用来自TUD的L4Linux作为基于Pistachio的虚拟化技术,直到Pistachio的Afterburner技术出现为止才有了改观。AfterBurning是该小组研发的一种Pre-Virtulization技术(Pre-Virtualization是一种兼顾Para-Virtulization的高性能和Modularity的可维护性而出现的一种尝试,具体来说,是把一种source code可以根据需求编译出不同的系统,同样的Linux,可以编译出适用于Xen的Guest OS,也可以编译出使用L4:Pistachio的Virtual Machine。由于这项工作是在编译阶段完成的,因此诸多优化也可以同时生效,而避免了Para-Virtualization的单一性。比如L4Linux只能应用用Fiasco,XenLinux只适合于Xen等等),因为是通过编译来完成的,所以性能会更好一些。比较有趣的是,他们有一个BurnNT技术,可以支持Multi-Windows,网站上面提供源代码下载。他们关于Device Driver Virtualization有一篇Paper是OSDI的,Unmodified Device Driver Reuse ,是近几年L4领域一篇少有的佳作。其主要思想是把每一个Virtual Linux当作一个Device Driver Server,从而提供Dependable System.
      4, OKL4/Iguana OKL4是L4:Pistachio-Embedded的延续,它目前有Open Kernel Labs公司维护,但是研究工作基本上都是在ERTOS完成的。目前OKL4的市场化推广作的不错,已经有很多产品使用了OKL4,包括基于OKL4的OpenMoko,也已经面世。相当于TU-D和Uni Karlsruhe的L4小组,ERTOS规模显得很庞大,他们网站上面的项目也很多,各种项目都有。主要有:1)基本系统维护, OKL4+ Iguana+ Magpie+ Wombat, Iguana类似于L4Env, Magpie类似于Dice,Wombat类似于L4Linux,一一对应。2)Security seL4+L4.Verified,我分不清楚2个项目的目标有什么不同,seL4是security Embedded L4的意思,总之,其核心内容即使使用formal method来验证OKL4 is secure kernel,似乎他们现在已经达到验证机器码的程度,大概步骤就是使用Haskell重新实现OKL4的API,然后使用Isabela进行证明,在这个方面,Kernel Verification,他们作的很成功,这也是他们可以赢得众多工业厂商青睐的一个原因3)Real-Time 既然是面向Embedded的,Real-Time自然是要用;Component-based Microkernel;Power Management,这些也都是目前OS研究的一些Hotopic.
      5, Coyotos 首先,Coyotos不是L4,但是Coyotos和L4之间的关系之密切远远胜过了其他微内核和L4之间的关系。比如Fast IPC, Capability-Based OS, IDL。Coyotos是KeyKOS和EROS(Extremely Reliable OS)的改进版本,从EROS的名称或许可以看出,这个系统和以上的系统有些不同,它强调reliable,所以EROS刚开始的时候,被应用于一些军用系统,但是后来发现Synchronous IPC会导致一个Denial of Service的Bug,这个Bug存在于所有基于Synchronous IPC的系统中,当然也包括所有的L4,在Vulnerability In Synchronous IPC design中有详细的描述。当然,现在这个Bug也已经被修正。Coyotos的目标应该是提供具有军用级别的(EAL7 =Evaluation Assurance Level)的microkernel, 它使用一种新的称为BitC(类似于Haskell的Safety Language)来实现这个系统,而且整个系统采用一种类似于OOP的形式(所有的L4系统都是OOP的,Fiasco和Pistachio都是C++的)。Coyotos is still persistant and transactional microkernel OS。从概念上来讲,Coyotos更为先进,Capability也是在该系统上面首次被应用,所以有志于研发3rd Microkernel的不妨多多关注这个Microkernel.
     6,Mungi Mungi是ERTOS小组开发的persistant SASOS (single address space operating system), 这个项目已经停止。但是作为第一个利用L4/Microkernel来开发不同类型的OS,仍然可以给我们提供很多新的idea,尤其是persistant,即使到目前为止,应该有值得研究的价值。http://www.coyotos.org/官网上面有很多该Microkernel的设计文档,值得一看。
     7, M. D. Bennett 《A Kernel For IMA Systems》 这是University of York的以为PH.D基于L4尝试构建IMA系统,IMA全程是Integrated_Modular_Avionics,也就是面向航空航天控制的系统,这也是我能找到的基于L4所作的safety critical system的唯一一次尝试,因为我自己是倾向于作这个方向的,所以列举这个Kernel在这里。因为University Of York是safety critical system的大本营,所以这篇paper应该不错。
   8, Genode OS Framework. 一个recursive hierarchical constructive os framework. 目前基于L4/Fiasco开发,主页: genode.org

你可能感兴趣的:(微内核)