多數(shù)操作系統(tǒng)教材都重理論而輕實踐,本書希望在這二者之間求取較好的平衡。本書詳細論述了操作系統(tǒng)的所有基本概念,包括進程、進程間通信、信號量、管程、消息傳遞、調度算法、輸入/輸出、死鎖、設備驅動程序、存儲器管理、頁面調度算法、文件系統(tǒng)設計、安全與保護機制等。同時,本書也詳細討論了MINIX(——一個與UNIX(兼容的操作系統(tǒng),并提供了完整的源代碼供學習之用這樣的安排使讀者不僅學習到理論,而且能夠理解它們如何應用在一個實際的操作系統(tǒng)之中。
本書第一版在1987年出版時,曾引發(fā)了操作系統(tǒng)課程教學的一場小小的變革。在此之前多數(shù)課程都只講理論。隨著MINIX的出現(xiàn)9許多學校開始增加實驗環(huán)節(jié)以使學生了解實際的操作系統(tǒng)是如何運作的。我們認為這種趨勢是可取的3并希望通過本書第二版能進一年加強這種趨勢。
MINIX在其出現(xiàn)以來的十年間發(fā)生了許多變化,最初的代碼是為基于8088芯片、256K內存和兩個軟驅的IBM PC機型編寫的,它基于UNIX版本7。隨著時間的推移,MINIX在許多方面有所發(fā)展,比如當前版本可運行在眾多機型上,從16位實模式的Pc機到配有大容量硬盤的奔騰機(32位保護模式),而且它不再基于UNIX版本7,而是基于國際上的POSIX標準(POSIX 1003.1和ISO 9945-1)。與此同時,有許多新特征被添加到MINIX中,在我們看來,所增加的特征可能已經太多了,但有些人則認為還不夠,這最終導致了LINUX的誕生。 MINIX還被移植到許多其他平臺上,包括Macintosh、Amiga、Atari和SPARC.本書只涉及M則說2.0,到目前為止,該版本只能運行于基于80x86的機器或者可模擬此類CPU的機器,或者運行于SPARC機器。
與第一版相比,第二版有許多變化,原理性部分基本都被修改過,同時增加了大量新內容。最主要的變化是新的基于POSIX的MINIX,以及對其源代碼的剖析。另外,每本書都附帶一張CD-ROM,它包含了全部MINIX源代碼,以及在PC上安裝MINIX(的說明(見CD—ROM主目錄下的README.TXT文件).
在一臺80x86的PC機上安裝MINIX(很方便。它需要一個至少30MB的硬盤分區(qū),然后按照CD-ROM上README.TXT文件中的步驟進行即可。在打印README.TXT文件之前,先啟動MS-DOS(若運行WINDOWS,則雙擊MS-DOS圖標),然后鍵入copy readme.txt prn即可。該文件也可以用edit、wodpad、notepad等任何可以處理ASCⅡ正文的編輯器進行瀏覽。
對于沒有Pc機的學校和個人,有兩種解決辦法,即CD-ROM上提供的兩個模擬程序。一個是由Paul Ashton為SPARC機器編寫的,可作為用戶程序在Solaris上運行,此時MINIX被編合成SPARC上的可執(zhí)行文件。在這種模式下,MINIX不再是一個操作系統(tǒng),而只是一個用戶程序,所以必須對其底層做一些修改。
另一個模擬程序由Bochs軟件公司的Kevin P.Lawton編寫,它解釋Intel 80386的指令集以及足以使M取搬運行所需的I/O指令。顯然,在解釋器層次上運行使性能有所下降,但這使得學生更容易進行調試。該模擬程序運行在所有支持M.I.T的x-Window的系統(tǒng)上,更詳細的信息諸參看。CD-ROM上的有關文件。
MINIX仍在繼續(xù)發(fā)展,本書和CD—ROM中的內容僅僅反映了本書出版時的情況,有關MI-NIX的最新動態(tài)請訪問MINIX的主頁:http://www.cs.vu.nl/~ast/minix.html。 MINIX也有自己的USENET新聞組:comp.os.minix,讀者可以訂閱該新聞組。對于僅有e—mdl的讀者可通過以下步驟來加入MINIX的郵件用戶通信組。給1istserv@listserv.nodak.edu發(fā)一封信,其中只需一行字:“subscribe minix-l<您的完整用戶名>”,此后你便會通過e—mai1獲得很多的信息。
講授本課程的教師可以從Prentice Hall出版公司獲得一份習題解答手冊。從WWW地址httP://www.cs.W.nl/ast/沿著“Software and supplementary material”鏈接可以獲得一些有用的PostScript文件,其中包含本書中所有的圖表,可供需要時使用。
在MINIX(的開發(fā)項目中我們有幸得到了許多人的幫助。首先要感謝Kees Bot在MINIX標準化和軟件發(fā)布中所做的大量工作,沒有他的幫助,我們不可能完成這件工作。他自己編寫了大量的代碼(如POSIX終端I/O),并修正了一些數(shù)年來一直存在的錯誤,還整理了其他的代碼。
這些年來,Bruce Evans、Philip Homburg、Will Rose和Michael Temari為MINIX的開發(fā)做了大量的工作。有幾百人通過新聞組對MINIX做出了貢獻,他們人數(shù)眾多,所做出的貢獻也各不相同,在此謹向他們一并表示感謝。
John Casey、Dale Grit、Frans Kaashoek等人閱讀了本書的部分手稿并提出了寶貴建議,在此向他們表示謝意。
Vrije大學的許多學生測試了CD—ROM中MINIX的β版本,他們是:Ahmed Batou、Goran Dokic、Peter Gijzel、Thomer Gil、Dennis Grimbergen、Roderick Groesbeek、Wouter haring、Guido Kollerie、Mark Lassche、Raymond Ris、Frans ter Borg、Alex van Ballegooy、Ries van der Velden、Alexander Wels以及Thomas zeeman。我們對他們細致的工作和詳盡的報告致以衷心的感謝。
阿爾伯特·S·伍德豪爾向他從前的幾位學生表示感謝,特別是Hampshire學院的Peter W.Young,Nacional Autonma de Nicaragua大學的Maria Isabel Sanchez和Willam Puddy Vargas。
最后要向我們的家庭成員表示感謝。 Suzanne已是第十次在我埋頭寫作時給我支持,對Barbara是第九次,Marvin是第八次,甚至小Bram也是第四次了。他們的支持和愛心對我非常重要。(塔嫩鮑姆)
至于阿爾伯特的Barbara,這倒是第一次,假如沒有她的支持、耐心和幽默,我們是不可能完成這一工作的;對我的兒子Gordon而言,在編寫本書時,他大部分時間都不在家中,而是在大學學習,但是,他與我志趣相投,并能理解和關注我所從事的工作,這讓我感到十分欣慰。(伍德豪爾)
安德魯·S·塔嫩鮑姆
阿爾伯特·S·伍德豪爾