FreeBSD作業系統設計與實現,內容回顧與作者採訪

weixin_33806914發表於2015-10-28

Pearson/Addison-Wesley Professional 出版的《FreeBSD作業系統設計與實現》歷經人們的期盼而終於完成,它是FreeBSD核心的權威指南。第二版涵蓋了從FreeBSD 5 到11之間的所有主要更新,根據發行註記,相比於第一版大範圍的修改了三分之一的內容,而且還有三分之一的內容是新增加的。

\\

第二版要明顯的比第一版增加了很多內容,光頁數都超過900多頁,而且覆蓋了FreeBSD的諸如虛擬化,沙箱,NFSv4,以及ZFS支援等等很多新的特性。

\\

書的第一章介紹了FreeBSD的發展歷史,第二章簡要的概括了FreeBSD核心的所有元件,剩下的章節即是根據第二章的結構引導讀者進入每個題目的細節。

\\

此書採用的是按照FreeBSD的技術架構由內而外的來講述的,從核心的服務開始,繼而是程式和內容管理,然後是I/O和裝置,檔案系統,IPC(程式間通訊),網路協議,最後是系統的啟動與關閉。內容豐富,知識密集,以清晰明瞭的方式講述技術話題,書中採用了大量的虛擬碼,示意圖,表格來說明主要的觀點,每一章均是以日常見到的主題開始介紹,然後深入擴充套件到細節。

\\

儘管此書深入到FreeBSD的底層細節,但仍然提供了很多作業系統設計和概念的深刻洞見,這不僅對於FreeBSD的開發者有吸引力,任何對現代作業系統的思考和討論有興趣的人都是有益處的。

\\

InfoQ採訪了本書的作者之一Marshall Kirk McKusick

\\

InfoQ:FreeBSD作業系統設計與實現描述了FreeBSD內部的運作機理,而且提供了大量翔實的資料,您此書的目標讀者是哪些人?人們能夠通過閱讀此書能夠學習到關於FreeBSD的什麼內容?

\\
\

Marshall: 我們的書的目標是哪些工作在FreeBSD下的專業人士,應用程式開發者可以學到如何有效的利用介面和系統互動;系統程式設計師可以學到如何擴充套件、加強系統;沒有FreeBSD核心經驗的系統管理員們可以學習到如何維護、除錯和配置系統;技術和銷售支援的個人參與者可以學習到系統具備哪些能力以及有哪些侷限。

\\

我們的書提供了FreeBSD如何實現它的基本服務的廣泛的概述。這對哪些需要學習FreeBSD是如何提供服務的人們非常的有幫助。能夠從本書中受益的人們包括作業系統實現者,系統程式設計師,UNIX應用程式開發者,系統管理與,以及對FreeBSD充滿好奇的使用者。本書針對的是擁有至少一年的使用類Unix系統的人們,懂一些C語言是非常有幫助的,但不是必須的。讀者需要了解基本的演算法(搜尋、排序、雜湊)和資料結構(連結串列、佇列、陣列)。

\\

本書講述了FreeBSD核心背後的機理。從介紹核心和服務開始,其中包含了用於併發控制的鎖。接下來,就是程式的細節描述,包括諸如排程,訊號等程式管理任務。概述了安全的框架和策略,包括Capsicum 沙箱和FreeBSD jail,Jail是一個允許在同一個系統中建立隔離的虛擬主機的程式,以核心和程式的記憶體管理的描述結束了程式的管理。然後轉到核心的I/O,通過介紹I/O的框架,服用I/O的基礎設施細節,以及本地和遠端檔案系統的支援。然後描述瞭如何配置、操作字元裝置和批量資料傳輸裝置,例如磁碟,以及如何管理虛擬裝置從而支援Xen和bhyve虛擬化的。也涵蓋了三個檔案系統的設計和實現,它們分別是:快速檔案系統(FFS),Zettabyte檔案系統(ZFS),和網路檔案系統(NFS)。接下來是程式間通訊(IPC/套接字)介面,通過涵蓋了網路的分層和實現進行了詳細的描述,網路包括了路由,轉發以及安全的TCP/IP協議。最後,講述了核心的啟動過程,本書更加的強調程式碼的組織,資料結構的表示,以及演算法本身,而不是過一遍核心的程式碼。它沒有包含機器的某個特定部分,例如裝置驅動的實現。

\
\\

InfoQ: 您認為FreeBSD在其它的類Unix作業系統中是一個什麼樣的地位?

\\
\

Marshall: FreeBSD是三大主要發行版中最為流行的系統(另外兩個分別是OpenBSD和NetBSD)。FreeBSD大範圍的應用於世界上很多公司的核心基礎設施,包括NetFlix,WhataApp,Yahoo!,Juniper網路,EMC/Isilon。另外蘋果公司的Darwin使用的也是FreeBSD,也就是Mac OS X的基礎作業系統。也由於它可以構建一個非常小的系統,所以能夠在嵌入式系統中的應用逐漸增多。開源界主要替代FreeBSD的還是Linux。FreeBSD的許可條款允許修改和改進系統而無需再發行,這樣使得FreeBSD的許可更加的友好,無論是企業還是個人使用者。Linux的許可條款要求所有的更改和改進核心進行原始碼可以以最低的成本再發布。因此,若企業需要控制發行版的智慧財產權,那麼使用FreeBSD來構建他們的產品就是不錯的選擇。

\
\\

InfoQ: FreeBSD在過去相當長的一段時間裡是最為流行的BSD系統,你認為導致專案如此成功的主要因素是什麼?

\\
\

Marshall: 從1993年成立伊始,FreeBSD專案的目標就是能夠為一些企業和個人提供易用和易安裝的發行版。

\\

另外一個讓FreeBSD成功的原因是FreeBSD不像其他開源專案那樣設有永久的掌控者(例如Linux中Linus Torvolds和他的忠實的副手),FreeBSD的系統治理是自我組織型的,允許受到鼓舞的人們上升到關鍵角色,且設定了開發者輪流掌控的機制。

\\

在外圍,有5000到6000名開發者,他們每個人都為系統的某個部分工作,例如,維護FreeBSD核心,持續開發FreeBSD 1000個核心工具,撰寫FreeBSD文件,移植其它開源軟體到FreeBSD中等等。開發者可以訪問FreeBSD的倉庫,但是沒有更改的許可權。他們若想提交,則必須和級別更高的提交者代為提交,或者是將問題以檔案對形式報告給提交者,方可為系統新增程式碼。

\\

比外圍更近一層的是比開發者更高階別的提交者,目前有300到400名提交者,和開發者一樣,他們大多數也是為系統的某個部分工作。和開發者不同的是,他們具有更改屬於自己的系統部分,並提交到程式碼倉庫。所有的非同尋常的變更都須有一個或多個其他的提交者稽核後才能正式到進入到原始碼倉庫。多數的提交者除了自己的本職工作以及稽核之外,均會幫助多個開發者提交程式碼。

\\

由開發者晉升為提交者的建議是由現有的提交者來做的,絕大多數的情況是提名開發者晉升的提交者,他們往往原來就是在一起共事過的,晉升的描述和評估,以過去的工作和當前的工作為準,然後傳送給核心團隊等待批准。

\\

處於專案中心的是核心團隊。核心團隊由9人組成,每2年一次選舉出來的。核心團隊的候選人來自提交者,且由提交者選舉。核心團隊扮演著原始碼最後的守護者的角色,他們會監控已經提交的內容,以及在兩個或多個提交者就如何解決特定問題無法達成共識的情況下解決他們的衝突。核心團隊還有一項職責是批准開發者晉升為提交者,(在罕見情況下)暫時或永久的將一些人從提交者組中清除。被清除的原因多數是不再活躍(超過一年的時間對系統沒有任何的更改)。 ```

\
\\

InfoQ: 是什麼讓FreeBSD成為獨特的,或者說,你個人意願,為什麼選擇FreeBSD而不是其它BSD系統?

\\
\

Marshall: 不像其它的BSD系統或者是通常的開源專案,FreeBSD對於每個大版本的維護最少週期為5年,在整個支援期間提供bug修復和安全更新。在這加大的支援期間,哪些基於某個版本開發自己產品的公司就無須為其自己所構建的產品失去支援而擔心不已。

\
\\

InfoQ: FreeBSD在過去幾年中增加的最為引人注目的特性有哪些?

\\
\

Marshall: FreeBSD最近新增的一個引人注目的特性是:Capsicum 介面,允許來歷不明不明的程式碼在沙箱中執行,Capsicum允許具有安全影響的應用程式有非常緊密的邊界,從而確保應用不能訪問到,修改或盜取任何未授權到資訊。

\\

另外一個引人注目的特性是為FreeBSD新增了非常重要的ZFS檔案系統,ZFS檔案系統來自Open Solaris。不像Linux因為許可的衝突不允許引入ZFS,FreeBSD將ZFS完全整入核心,並且交付ZFS的全部功能集以及效能。

\
\\

InfoQ: 在2012年對FreeBSD基金會的總監Dru Lavigne的採訪中,他說:“FreeBSD一直很幸運的是具有吸引安全研究經費和與學術界在安全領域的合作的能力。”這對FreeBSD過去幾年產生了什麼樣的影響?

\\
\

Marshall: 我們剛才提到的Capsicum專案,就是來自劍橋大學(UK)的研究專案。這完全是研究員們使用FreeBSD作為他們的開發平臺的功勞,簡直是天作之合,今天由FreeBSD所提供的產品介面,輔助庫以及支援的程式均非常的適應他們的研究。真如Dru所指出的,FreeBSD基金會籌集資金來將研究原型轉化為產品,這些轉換工作離不開這些發掘,掏腰包和管理的人們。

\
\\

InfoQ: 你認為FreeBSD能夠為學習關於作業系統提供一個很好的參考嗎?如果是的話,作為學習工具它能提供何種優勢?

\\
\

Marshall: 三位作者均倡導以FreeBSD作為教學工具。我們開發教學計劃,課程筆記,以及實驗室試驗,用於教授高年級的本科生或者是第一、兩年的研究生課程,這些我們開發的課程我們都發布在www.teachbsd.com網站上了,關於此專案我們才剛剛開始做,希望在一、兩後有更多豐富的內容。

\\

FreeBSD基金會最近開始了一個專案,將FreeBSD引入高中電腦科學課程。雖然這個專案才剛剛開始,願景是希望能夠提高高中學生對計算機技術的興趣,尤其是FreeBSD。

\
\\

InfoQ: 哪裡是FreeBSD所引導的方向?其未來有何願景?

\\
\

Marshall: 專案的RoadMap由開發者們來驅動,這一般是在每年至少舉辦兩次的FreeBSD開發者峰會上引入新的想法,開發者峰會分別是BSDCan(在加拿大的渥太華)和EruoBSD(在歐盟國家輪流)研討會。當然,它也有來自FreeBSD使用者社群的反饋,這一般是來自於每年3-4次的FreeBSD供應商峰會。

\\

傳統的FreeBSD發行主要是針對伺服器和嵌入式系統的。PC-BSD的目標使用者則是桌面使用者,它基於當前的FreeBSD發行版,從移植集中將一些軟體包整合在一起(桌面、瀏覽器、郵件客戶端等),打造為一個簡單易用且輕鬆安裝的桌面(筆記本)系統。

\
\\

此採訪基於 ‘FreeBSD作業系統設計與實現’, 第二版一書,作者:Marshall Kirk McKusick, George V. Neville-Neil , Robert N.M. Watson, Pearson/Addison-Wesley Professional出版, 2014年9月, ISBN 978–0–321–96897–5. 更多資訊請訪問出版商網站

\\

在2015年9月,出版商又發行了McKuscik新的視訊教程:“FreeBSD開源作業系統介紹線上課程”。

\\

關於作者

\\

1d77f5fce83f82ec7c218960ee5bac62.jpgMarshall Kirk McKusick 長期從事於Unix和BSD相關的寫作、諮詢和教授學生的工作,在加利福利亞伯克利分校期間完成了4.2BSD的快速檔案系統。他還是伯克利計算系統研究小組的一名科學家,負責開發和釋出4.3BSD和4.4BSD,他是FreeBSD基金會的董事會成員,FreeBSD的長期貢獻者,USENIX協會的兩屆主席,他還是 ACM, IEEE, 和 AAAS的成員。

\\\\

0a404e55822554b17182b512557122d8.jpgGeorge V. Neville-Neil 安全、網路、作業系統方面的黑客,作家,教師,和諮詢師。FreeBSD基金會董事成員,在FreeBSD核心團隊工作了4年,2004年起,他為ACM的佇列和通訊寫專欄“Kode Vicious”,他是ACM的從業者委員會副主席,也是Usenix協會,ACM,IEEE和美國科學促進會的成員。

\\\\

bf7f2a0d54b07274dbf1ef2808660f12.jpgRobert N.M. Watson 大學講師,劍橋大學計算機實驗室的安全研究小組中講授系統,安全以及架構。他負責監督計算機體系結構,編譯器,程式分析,作業系統,網路和安全等先進領域的研究。FreeBSD基金會董事成員,在FreeBSD核心團隊10年,作為貢獻者有15年的歷史,他是在Usenix協會和ACM的會員。

\\\\

檢視英文原文:The Design and Implementaiton of FreeBSD Operating System, Review and Q\u0026amp;A With Author

\\

感謝張龍對本文的審校。

\\

給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ@丁曉昀),微信(微訊號:InfoQChina)關注我們,並與我們的編輯和其他讀者朋友交流(歡迎加入InfoQ讀者交流群06e1fec4a87eca3142d54d09844c629f.png)。

相關文章