解密《一個作業系統的實現》這本書
5
月
18
日見到了《
Orange'S
:一個作業系統的實現》的樣書,多少有些激動。想一想前一版本《自己動手寫作業系統》是那麼暢銷,這一本一定不能含糊。整個出版過程我能看到作者於淵為此付出的努力,還在自己排版的過程有深入體會,通過於淵的講座也讓博文視點的員工分享到他在排版過程中的很多心得。
應該有幾萬個朋友讀過《自己動手寫作業系統》了,本書的第
2
版《
Orange'S
:一個作業系統的實現》出來肯定有非常多的朋友想問,這兩本書到底有何區別呢?就此博文視點對本書作者於淵進行了簡單的採訪。
*
提問:《
Orange'S
:一個作業系統的實現》與《自己動手寫作業系統》明顯區別在哪些方面?
*
於淵:作為《自己動手寫作業系統》(以下簡稱《自》)的第二版,《
Orange'S
:一個作業系統的實現》(以下簡稱“新版”)主要有以下變化:
1.
書中樣本作業系統的名字改為
Orange'S
2.
書名改為《
Orange'S
:一個作業系統的實現》
3.
增加了有關
IPC
、
FS
、
MM
等內容
4.
將預設開發平台改為
GNU/Linux
,同時兼顧
Windows
5.
更改了排版工具,並使用技術手段增加書的可讀性,比如程式碼號的運用
6.
建立專門網站以服務讀者
7.
建立專門討論區供讀者交流
讀過《自己動手寫作業系統》的讀者一定知道,其中預設使用
Windows
作為開發平台,同時使用虛擬機器來編譯及運行自己的
OS
,在新版中這一點發生了變化(如上述第
4
條所述),具體的變化原因在書中第二章有詳細的敘述。雖然開發平台是第二位的事情,但書中的預設平台卻不免影響到敘述細節,所以,如果讀者基於自己的原因堅持在
Windows
上開發(可能的原因或許有對
Linux
不熟悉、需要邊開發作業系統邊登入某些網上銀行等等),則可能對讀到的內容進行一點點額外加工。當然,所需的額外加工是少量的,而且在第二章中也有專門的文字介紹如何在兩種平台下搭建工作環境。此外,如果讀者不介意花錢,還可以同時購買《自己動手寫作業系統》和新版,相互參照閱讀。
*
提問:《
Orange'S
:一個作業系統的實現》與《自己動手寫作業系統》相比是否有所增加嗎?增加了多少內容量呢?
於淵:新版的內容是有增加的,新增文字約佔整本書的三分之一,《
Orange'S
:一個作業系統的實現》新增代碼則是《自己動手寫作業系統》中代碼的數倍。這些新增的內容,讀者只能從新版中獲得。目前並未有將新增內容單獨成書的打算,所以讀者即便僅想閱讀第八章以後的內容,也需要購買整本《
Orange'S
:一個作業系統的實現》。已經購買了《自己動手寫作業系統》的讀者可能覺得有點浪費,但事實並不如此,因為《自己動手寫作業系統》的內容經過了重新排版、修訂和編輯(比如代碼格式進行了重排,更方便與光碟片中的檔案對照閱讀,以及其中所有的向量圖都用
pgf/TikZ
重新繪製等)筆者傾注的心血使得新版的感官已經大為不同,讀者一看便知。
*
提問:在《自己動手寫作業系統》大賣的時候,您是否想過會有第二版出版呢?
*
於淵:坦白講,我在寫作《自》的時候,並沒有想過今天會有一個第二版。原因在於,我希望這本書是用來填補空白的,而不是重複去做別人已經做得很好的事情。所謂填補空白,具體說就是讓像我一樣的作業系統愛好者在讀完本書之後,能夠有信心去讀其他比較流行的開源的作業系統代碼,有能力從零開始自己動手寫作業系統,而這個任務第一版已經完成了。
*
提問:那麼為什麼又寫作了第二版呢?
*
於淵:原因有幾個方面。第一,雖然第一版未曾涉及的處理序間通訊、檔案系統等內容在許多書中都有講解,但閱讀的時候還是感覺有語焉不詳的通病,作者本人可能很清楚原委,但寫得太簡略,以至於讀者看來未必清晰。第二,我自己想把這個圈畫圓。第一版的書雖然完成了它的使命,但畢竟到書的結尾,讀者看到的不是一個真正的作業系統,它沒有檔案系統,沒有記憶體管理,什麼也幹不了。在第二版中,你將會看到,你已經可以通過交叉編譯的方式為我們的實驗性
OS
編寫應用程式了,也就是說,它已經具備作業系統的準系統,雖然仍然極其簡陋,但第一個圈,畢竟是已經圓起來了。第三,實踐類的作業系統書籍還是太少了,以至於你要想看看別人是怎麼做的,除了讀以《作業系統:設計與實現》為代表的極少數書籍之外,就是一頭紮進原始碼中,而結果有時相當令人氣餒。我自己也氣餒過,所以我在第二版中,仍然試圖把話說細一點,把自己的經驗拿出來分享。而且我選擇我能想到的最精簡的設計,以便讓讀者不至於陷入太多細節而無法看到全貌。我想這是本書可能具有的價值所在──簡化的易懂的設計,還有盡量詳細的文字。
*
提問:這本書為何不考慮用
WORD
排版?
*
於淵:新版的排版是我用
LaTeX
自己完成的。在排版中我花了一些工夫,因為我希望讀者購買的首先是一本易於閱讀且賞心悅目的書,其次才是編寫作業系統的方法。另外,書中列出的代碼均由我自己編寫的程式自動嵌入
LaTeX
源檔案,從而嚴格保認證和光碟片的一致性,讀者可以根據檔案名稱和行號方便地找到光碟片中代碼的準確位置。
*
提問:第二版還有哪些區別呢?
Orange'S
這個名字很特別,有什麼寓意嗎?
*
於淵:新版中還有一些小的變化。首先是作業系統的名字改變了,原因在於雖然我們的實驗性
OS
從前輩們那裡借鑒了很多東西,但其各個部分的設計(比如檔案系統和記憶體管理)往往有其獨特之處,所以我將原先的
Tinix
(本意為
TryMinix
)改成了新名字
Orange'S
(這個名字來自於我的妻子),以表示它們的不同。另外,書中的代碼風格,有些地方也做了調整。
新版中,原先的敘述風格都盡量地得以貫徹,而在表現形式上,新版用了更多心思,我相信讀者能在其中發現這些特點:關注動手細節,探尋代碼背後的故事,結果與過程兼顧,內容與形式並重。加上專門為本書建立的網站和討論區,我相信讀者能更容易地閱讀,更輕鬆地學習。
更多詳情請登入
http://osfromscratch.org/
。
《
Orange'S
:一個作業系統的實現》
出版單位:電子工業出版社
作者:於淵
ISBN
:
978-7-121-08442-3
本書官方網站:
http://osfromscratch.org/
網路購買地址:
http://www.china-pub.com/195571