對Vista的商業用戶來說,Linux內核的開發可能非常復雜神秘,因為由幾十個人維護著不同的部分,有幾百名志願者提交代碼,你很難判斷新功能的走向。
從本質上來說Linux的開發也沒有線路圖。要一窺全豹,以下是7個值得關注的開發熱點,基於對開發人員和內核維護人員的采訪。不是所有的新功能都進展順利,下文展現了各新功能進入內核的崎岖之道。
1、虛擬化
認識到虛擬化在這十年裡日益成為“大趨勢”,Linux內核維護者把它作為優先考慮的功能,加快了虛擬化技術添加到內核的進程。由初創公司Qumranet的Avi Kivity提供的KVM虛擬管理程序,就包含在2006年末發布的內核中並在上個月的發布中繼續升級。這個例子很好地展現了快速內核發布和緩慢企業版進展之間矛盾。
Novell公司的副總裁霍爾格•杜爾夫(Holger Dryoff)表示“我們認為KVM還不適合企業使用。”他補充說,在KVM能被加到SUSE Linux之前,它需要在內核子系統包括調度器的交互上經過更多的測試。
最近被Citrix Systems耗費5千萬美元收購的商業開源虛擬化公司XenSource,一直在游說想把自己架構的Xen虛擬機管理程序(Hypervisor)加入到內核裡。內核維護人員認為添加這種虛擬化功能會大大增加維護工作量。最終XenSource的工程師放棄了,但仍繼續調整Xen以配合內核的運行。它暫時還進不了內核,只能先增加了一些支持,使Linux在運行虛擬環境時可以識別它。
其他的虛擬化功能發展迅速,包括KVM和Lguest。Lguest是由IBM工程師Rusty Russell開發的一個只有5000行代碼的精簡hypervisor(虛擬機管理程序),它已經包括在最近版本的內核裡了。和KVM相似,它支持Intel和AMD芯片的最新虛擬化技術。但又與VMware公司的ESX Server不同,在Lguest創建的虛擬機裡的操作系統知道自己是被虛擬出來的。所以在調用CPU周期時它可以直接向真正的硬件發出請求,而不是作為中間媒介而降低了效率,因此這種架構大大提高了效率。
2、實時操作
Linux在實時操作上獲得了長足的提升,因為現在它常常被用作手機和其它設備上的嵌入式系統。但最近發布的2.6.23內核顯示它在實時操作上“稍有退步”,商業嵌入式Linux廠商MontaVista 的首席技術長官(CTO)和創始人吉姆•瑞爾迪(Jim Ready)抱怨說。這個新的進程調度器更強調“公平”——這意味著要由最終用戶告訴處理器哪些待處理的任務可以獲得更高的優先級。
“實時用戶不需要公平,”瑞爾迪認為,因為實時要求無論CPU在做什麼,都可以插入一個新的優先級以中斷操作。一個簡單的例子是,在醫療設備裡監控病人呼吸的軟件在發現病人呼吸停頓時,能發送一個即時警告,軟件無論在處理什麼任務都要先中斷停下來。瑞爾迪表示,除非實時性能有改善,否則MontaVista不會把新的內核整合到自己的產品中來。Gartner分析師喬治•維斯(George Weiss)預測標准版的Linux要到2008年才能成為有競爭力的實時系統。
3、中斷處理
維斯那樣說其中一個原因是因為內核開發人員正致力於使進程調度器具有實時功能。操作系統的關鍵環節是中斷的管理——它決定了哪些任務能獲得CPU的處理權,如何排列不同行為之間的優先級。如果所有的中斷處理器都可以被結合到自己的線程中去,那個線程就可以被調度並設置優先級,而不是無法預知地運行和延遲的實時響應。
過去三年來這樣的努力一直沒有停歇過。MontaVista的斯文•托斯滕•迪特裡奇(Sven-Thorsten Dietrich)在2004年就提交了代碼,希望防止中斷處理程序為了常規任務而中斷內核,因為它們干擾了實時響應。但這些代碼的破壞性太大,以致無法獲得內核調度領域的專家Ingo Molnar的認可。這些代碼影響了一個關鍵內核功能自旋鎖(spinlock),當進程在等待需要的數據或事件時,它可以鎖定CPU。許多進程依賴於自旋鎖。Dietrich的代碼把幾百個自旋鎖減少到30個;Molnar的修訂保留了90個自旋鎖,比前者破壞性要來得少些。
把中斷處理器集合到一個統一的獨立線程的想法看來已開始成熟並准備進入內核了。“Ingo替換了我們的做法,但他做得很棒,” 瑞爾迪說道。MontaVista並不在乎自己的努力是否能獲得更多的榮譽,瑞爾迪理解這就是開源合作的方式,因此他接受正在進入內核的實時功能的修改。
4、安 全
人人都希望有個更安全的系統。Novell在發布SUSE Linux Enterprise Server 10的同時一起發布了AppArmor,它是一個限定應用程序可以訪問操作系統哪些資源的軟件,這樣可以限制應用因非法授權訪問而造成的危害。然而在近期內它還不太可能會被加進內核。
Linux安全的權威專家、另一套安全機制SELinux 的開發人員斯蒂芬•斯瑪萊(Stephen Smalley)則認為AppArmor不能被加進內核是因為它的保護機制是基於“路徑名稱”的方式,它本質上就是一個白名單設置,AppArmor只允許應用程序訪問在名單上的文件,所有其他的文件都不能訪問了。根據去年喬納森•科貝特(Jonathan Corbet)的一份報告,斯瑪萊認為一個狡猾的入侵者可以利用合法路徑名稱而猜出其他的名字,制造不必要的暴露。
內核維護人員安德魯•莫頓同意是因為這種路徑名機造成AppArmor不能進入內核的根本原因。“我不是個安全程序員,”他說。“我不知道可以怎樣解決這個問題。”
5、系統診斷
Solaris可以使用DTrace工具檢測操作系統核心的運行狀況,但Linux缺乏用戶界面友好的檢測工具。目前僅有的幾個工具之一是ptrace,該程序可以讓一個進程跟蹤另一個進程的行為。但ptrace使用起來非常笨拙並容易發生錯誤,現在有了替代品utrace,它已經進入Morton的內存管理代碼樹,即將會被提交給李納斯•托沃茲。當Utrace被一個程序執行時它可以跟蹤該進程的行為,卻沒有ptrace的那些問題,但它仍然會導致內核裡的鎖問題。科貝特預測在下一版本的內核裡仍然不可能包含該工具。
6、文件系統
Reiser4文件系統已被考慮額外增加到內核裡去,內核現在已經包含30多種文件系統。Reiser4是一個大型的文件管理系統,根據漢斯•瑞塞爾(Hans Reiser)的文檔,它的優勢在於只需要最少的磁盤空間,就能處理數量眾多的小文件。
該文件系統要求對文件的操作要不就完成,要不就放棄,以避免文件操作完成到一半導致文件被破壞。這對許多Linux應用看起來很完美,但經過多年的爭辯,Reiser4還是沒能加入內核。它與內核的某些部分配合不好,而且最重要的開發人員瑞塞爾本人已經退出了項目。“要使它成為Linux主流的一部分,它需要一個新的帶頭人,”科貝特在本月早些時候預測它的前景時說。
ZFS是Sun Microsystems的128位文件系統,它可以乘數方式擴展 Linux的地址空間,遠超現在系統的最大使用需求。它的支持者認為它應該被加進內核。但它目前的授權與Linux GPL不兼容。
7、電源管理
Linux 在電源管理上相對落後,而Windows筆記本上的電源管理則令人刮目相看,這刺激了Intel工程師內核開發人員Molnar和托馬斯•格雷賽納爾(Thomas Gleixner)以及其它人推動電源管理的改進。一年前,內核加入“tick-less idle”機制,當沒有工作需要完成的時候通知處理器處於空閒狀態。如果沒有它CPU的時鐘就會每秒向內核發出1000次詢問,查看是否有工作要完成,白白浪費了電力。
Intel的首席Linux技術員德克•亨德爾預計在電源管理上會有進一步的改進。但內核和系統時鐘裡的任何改動都會影響許多其他的交互。他認為,“這些事情可能會困難重重,需要花費很長的時間,但是我肯定這個發展方向是正確的。”