l4 微內核

近幾年來,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.comhttp://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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章