L4作業系統(L4/Fiasco介紹)

來源:互聯網
上載者:User

(轉自:http://oss.lzu.edu.cn/blog/article.php?tid_583.html)

    我們學習作業系統課程的時候,一直在講微核心,說什麼“微核心是現代作業系統的主流”(時間太久,記不清了,如果說錯了,不要拍我)。可是事實上,真正進入工業層級應用的微核心作業系統並不多,Microsoft的系統雖然宣稱是微核心,但是應該不是,因為從來沒有見過一個人可以把XP或者2000系統裁減到50M以內(95/98可以做小,這個可以從網路搜尋到相關資料,但是它們是DOS的封裝,這裡不談)。但是Linux不是微核心,而是 monolitic,這是大家都公認的,Linux的前輩Unix當然也不是微核心。具體說來,這個分歧主要是學術界和工業屆的分歧。學術界認為,微核心是作業系統發展的主流方向,但是工業界卻不這樣認為。這也許是當linus推出Linux以後,和他的老師Andy Taonenbau(寫Minix的牛人)互相拍磚頭的緣由。
    不過確切的說,microkernel的整體效能不如monolitic,這對於追求性價比的廠商而言,採用monolitic也是有道理的。不過 microkernel也有自己的長處,就是穩定。相對而言,microkernel比monolitic的依賴更為簡單,所以它更穩定。不過第一代microkernel真的很令人失望,到了 Jochen Liedtke(German),他設計了第二代microkernel,稱為L4,為了追求效率,所有的L4用組合語言實現(牛人吧,用彙編寫作業系統),但是這樣的結果是在追求效率的同時,使得第一代L4隻能運行在486和pentium上面。但是目前L4已經變成微核心的一個設計標準,圍繞這個標準,有很多的L4的實現(http://os.inf.tu-dresden.de/L4/impl.html)。最初的由Jochen設計的L4目前稱之為L4/X86,現在最活躍的兩個分別是Pistachio和Fiasco。前者是普通的 microkernel,後者是專門為即時系統設計的microkernel,實現了L4V2(L4 API Version 2)。由於Fiasco跟L4的這種關係,所以平時Fiasco也被稱做L4/Fiasco,以強調它是L4的一個implementation。
    現在,終於開講Fiasco,Fiasco的意思是“失敗“,好像是從意大利語裡面借來的(不知道他們為什麼去這麼一個名字,不過聽起來還蠻上口的)。 Fiasco是Dresden Real-Time Operating Systems Project(德累斯敦大學即時作業系統項目)的核心子項目,它是一個具備即時功能的microkernel。我們知道,在一個即時系統裡面,通常有兩種任務,一種是real-time的,另一種是time- sharing的。real-time部分由Fiasco提供,在time-sharing部分,開發人員們利用了Linux。平常Linux都是跑在某一種硬體平台(X86,ARM,PowerPC,MIPS),而在Fiasco/L4裡面,開發人員對Linux進行了修改,使得Linux能夠運行在L4 /Fiasco,這部分叫做L4Linux。目前,L4Linux的最新版本已經到了L4Linux-2.6.17,這是現行的最新的Linux-2.6 的穩定版本。
    下面,我們說說L4/Fiasco中的服務模式(程式架構),這個我認為比較有意思。如果沒有任何module被載入,單純一個microkernel那是什麼事情也做不了的。所以基於L4/Fiasco有好多的module被設計出來,這些module以server的形式為後面載入的module提供服務,就好似多個C/S嵌套起來一樣。
    最後,講一下microkernel跟monolitic的區別,前面說Fiasco的時候,也說到module,大家在編譯Linux kernel的時候,也會有module。這兩個地方的module是不一樣的。前面的module是彼此之間是隔離的,具有不同的address space,而後者之間共用同一個address space。

 

Operating System Based L4-Like Microkernel

     近幾年來,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 為了您的安全,請只開啟來源可靠的網址

開啟網站    {
share.safelink.close();return false;
}" href="http://writeblog.csdn.net/#">取消

來自: {
share.safelink.showConfirm(this);
}" href="http://hi.baidu.com/l4os/blog/item/7838405269fb64080df3e3d4.html" target="_blank">http://hi.baidu.com/l4os/blog/item/7838405269fb64080df3e3d4.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.