小摸的趕羚羊世界-SUN分部

« 如何用Java開發遊戲 – 談Java遊... | Main | 世界上最短又最長的距離 – 讓我們更了解... »

20050905 Monday September 05, 2005

剖析作業系統運作的好書

 

國內有一家知名的老牌出版社,過去出版了很多經典的老書,包括Windows作業系統核心、CPU保護模式等,幾乎每本都膾炙人口,可是近幾年卻沒有類似的出版品問世。筆者對該出版社的轉變感到非常疑惑,所以逮到機會就詢問該出版社的朋友,他們給我的答案是,過去的IT從業人員,看到任何講述特殊技術的書籍,或是看不懂的書名,不管如何,一定會買一本回家,找機會學習。而現在的IT從業人員,見到看不懂的書名就避之唯恐不及,買書都是以可以最快找到他們所要的結果為主,而這些朋友在學生時代,通常只購買能夠最快找到課堂作業答案的書籍。

 

其實這種情況的演變,並非現代IT從業人員的錯。在過去,開發人員可以直接在DOS下叫用中斷,直接和機器溝通,在Windows下,最有效率的方法就是直接呼叫Win32 API。而隨著時代的進步,軟體越來越複雜,整個資訊科技的分枝越來越細,再也沒有任何一個人有能力搞懂所有的技術,就像現代西方醫學的分類,內科醫生對泌尿系統的了解比不上泌尿科醫生,泌尿科醫生對腎臟的了解,也比不上專攻腎臟的腎臟科醫生。懂得作業系統運作的人不見得了解Java虛擬機器如何運作,而知道如何實做Java虛擬機器的人,也不見得可以寫出好的Java應用程式。所有的開發人員和真正運作的機器之間,隔了一層又一層的抽象層。這些抽象層之所以產生,就是為了讓開發人員『不要管底層怎麼做』,可以快快樂樂地開發應用程式。於是,Java.net變成顯學,在這個以Web應用程式為主的時代裡,ASP.netJavaServer Faces變成顯學中的顯學,卻鮮少人會問『那麼CLR Hosting怎麼實現?』、或是『如何實作一個J2EE Web Container?』因為這些問題沒有急迫性,就算不懂,對薪水根本沒影響,如果花時間去窮究,反而專案惠趕不上時程進度。

 

即使如此,作業系統還是每天出現在我們生活中,我們買來的硬體要能夠幫我們做點事,非得先灌好作業系統才行,不管是WindowsLinuxFreeBSD、或是Solaris x86版。撇開組合語言不談,要在每種平台上開發出最有效率的應用程式、或是發揮該平台所賦予的所有功能、甚至想要產生一個抽象層讓其他人快快樂樂地開發應用程式,那麼CC++無疑是最佳選擇,這是一個與機器隔閡最少的位置。當您選擇了這條路,雖然少了現代高階程式語言所附的豐富函式庫(Java Class Library.NET Framework),很多功能都要自己親自動手,但是也進入了一個前所未有的發揮空間。既然這是一個離機器最近的位置,開發人員跟機器之間只隔了一個作業系統,這個時候,了解作業系統的運作就變得非常重要。

 

市場佔有率最高的作業系統

如果您所從事的平台是目前佔有率最高的Windows平台,Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server 2003, Windows XP, and Windows 2000這本書就是必備書籍。這本書經過四個版本的演進:

Windows NT for Open VMS Professionals

Inside Windows NT, Second Edition

Inside Microsoft Windows 2000, Third Edition

Microsoft Windows Internals, Fourth Edition

每一次改版,作者都將Windows作業系統最新的改變與資訊做了詳盡的說明。作者之一的 David A. Solomon,早期在Digital Equipment Corporation,將近10年的時間從事VAX/VMS的開發工作,後來全心轉移至Windows NT開發人員的教育訓練工作(曾經有人說,WNT就是從VMS三個英文字母各自向後偏移一個字母而來),業界一直認為Windows NTVMS關係匪淺,因為Windows NT的開發人員很多來自Digital Equipment Corporation,尤其是VMS的首席設計師,也是Windows NT設計小組的成員。從這本書的版本演進,大體上可以看出一個輪廓。

 

來勢洶洶的小企鵝

除了Windows作業系統之外,市場上公認最具有淺力的大概就是Linux作業系統,要能夠理解Linux Kernel,首推Understanding the Linux Kernel, 2nd Edition這本書,不過這本書於2002年出版,講解的是2.4版的Kernel,而目前最新的Kernel版本為2.6,因此稍嫌老舊了些,即使如此,並不影響這本書的可讀性,作為一本介紹Linux Kernel的入門書,這本書有其獨特性。閱讀此書的時候,建議可以搭配O’Reilly的另外一本書Linux Device Drivers, 3rd Edition為輔助,這本書第三版於20052月出版,講的是2.6Kernel上的驅動程式開發,大家都知道驅動程式的開發和作業系統內部運作有密不可分的關係,因此這本Linux Device Drivers, 3rd Edition,有很多地方足以和Understanding the Linux Kernel, 2nd Edition相輔相成,彌補一些新舊版Kernel上的差異,或者作為彼此書中主題的輔助和延伸。

 

專家們喜愛的小惡魔

另外一個廣為人使用的Unix作業系統,就是以一個小惡魔為圖騰的FreeBSD了。FreeBSD以嚴謹著稱,雖然並非各種新軟體都能夠立刻找到FreeBSD的版本,但是FreeBSD的穩定性,讓很多專家們愛不釋手,尤其是目前火熱的MacOS X作業系統,其核心Darwin,有很大的部分也是來自於FreeBSDKernel。所以不管是想研究FreeBSD或是MacOS X作業系統的朋友,這本The Design and Implementation of the FreeBSD Operating System肯定可以帶來最多幫助,專門介紹Linux Kernel的書有許多,但是介紹FreeBSD Kennel的書僅此一本。

 

開放的太陽

Solaris一直是業界公認最穩定的商用UNIX作業系統,可用的應用程式也高居商用UNIX之冠,從筆者大學時代學習IC設計時,SUN工作站就一直扮演重要的角色。SUN2005年初推出了Solaris 10作業系統,除了更漂亮的操作畫面,更增加了許多讓開發人員可以更容易找出程式錯誤的機制(例如:DTrace)。應應開放原始碼的潮流,SUN準備於2005年第二季開放Solaris原始碼,讀者可以參考 http://www.opensolaris.org/ 取得最新資訊。在Solaris開放原始碼後之後,相信會有更多人對Solaris的應用更有興趣,到時候一定會出現專門介紹Solaris Kernel的書籍,不過到目前為止,唯一一本可以幫助大家更認識Solaris Kernel內部資料結構和運作方式的書籍,只有Solaris Internals: Core Kernel Architecture這本書,這本書於2000出版,介紹的內容大致上以Solaris 2.6/2.6Solaris 7為基礎,和最新的Solaris 10相隔了三個版本,可以說相距甚遠。不過這本書所講解的內容,有很多地方並沒有隨著Solaris版本的改變而改變,例如檔案系統的部分,在新版的Solaris中,只有增加新的檔案系統,但是其本質和運作方式一直沒有改變。 (2005-09-05 04:05:37.0) Permalink Comments [0]

Trackback URL: http://blogs.sun.com/moli/entry/%E5%89%96%E6%9E%90%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E9%81%8B%E4%BD%9C%E7%9A%84%E5%A5%BD%E6%9B%B8
Comments:

Post a Comment:

Name:
E-Mail:
URL:

Your Comment:

HTML Syntax: NOT allowed