Andrew S. Tanenbaum,Herbert Bos 著,陳向群 譯
本書是操作系統(tǒng)領(lǐng)域的經(jīng)典教材,主要內(nèi)容包括進(jìn)程與線程、內(nèi)存管理、文件系統(tǒng)、輸入/輸出、死鎖、虛擬化和云、多處理機(jī)系統(tǒng)、安全,以及關(guān)于UNIX、Linux、Android和Windows的實(shí)例研究等。第4版對知識點(diǎn)進(jìn)行了全面更新,反映了當(dāng)代操作系統(tǒng)的發(fā)展與動向。本書適合作為高等院校計(jì)算機(jī)專業(yè)的操作系統(tǒng)課程教材,也適合相關(guān)技術(shù)人員參考。
出版者的話
譯者序
前言
作者簡介
第1章 引論1
1.1 什么是操作系統(tǒng)2
1.1.1 作為擴(kuò)展機(jī)器的操作系統(tǒng)2
1.1.2 作為資源管理者的操作系統(tǒng)3
1.2 操作系統(tǒng)的歷史4
1.2.1 第一代(1945~1955):真空管和穿孔卡片4
1.2.2 第二代(1955~1965):晶體管和批處理系統(tǒng)4
1.2.3 第三代(1965~1980):集成電路和多道程序設(shè)計(jì)6
1.2.4 第四代(1980年至今):個人計(jì)算機(jī)8
1.2.5 第五代(1990年至今):移動計(jì)算機(jī)10
1.3 計(jì)算機(jī)硬件簡介11
1.3.1 處理器12
1.3.2 存儲器14
1.3.3 磁盤15
1.3.4 I/O設(shè)備16
1.3.5 總線18
1.3.6 啟動計(jì)算機(jī)19
1.4 操作系統(tǒng)大觀園20
1.4.1 大型機(jī)操作系統(tǒng)20
1.4.2 服務(wù)器操作系統(tǒng)20
1.4.3 多處理器操作系統(tǒng)20
1.4.4 個人計(jì)算機(jī)操作系統(tǒng)20
1.4.5 掌上計(jì)算機(jī)操作系統(tǒng)21
1.4.6 嵌入式操作系統(tǒng)21
1.4.7 傳感器節(jié)點(diǎn)操作系統(tǒng)21
1.4.8 實(shí)時操作系統(tǒng)21
1.4.9 智能卡操作系統(tǒng)21
1.5 操作系統(tǒng)概念22
1.5.1 進(jìn)程22
1.5.2 地址空間23
1.5.3 文件23
1.5.4 輸入/輸出25
1.5.5 保護(hù)25
1.5.6 shell25
1.5.7 個體重復(fù)系統(tǒng)發(fā)育26
1.6 系統(tǒng)調(diào)用28
1.6.1 用于進(jìn)程管理的系統(tǒng)調(diào)用31
1.6.2 用于文件管理的系統(tǒng)調(diào)用32
1.6.3 用于目錄管理的系統(tǒng)調(diào)用32
1.6.4 各種系統(tǒng)調(diào)用34
1.6.5 Windows Win32 API34
1.7 操作系統(tǒng)結(jié)構(gòu)35
1.7.1 單體系統(tǒng)36
1.7.2 層次式系統(tǒng)36
1.7.3 微內(nèi)核37
1.7.4 客戶端–服務(wù)器模式38
1.7.5 虛擬機(jī)39
1.7.6 外核41
1.8 依靠C的世界41
1.8.1 C語言41
1.8.2 頭文件41
1.8.3 大型編程項(xiàng)目43
1.8.4 運(yùn)行模型43
1.9 有關(guān)操作系統(tǒng)的研究44
1.10 本書其他部分概要45
1.11 公制單位45
1.12 小結(jié)46
習(xí)題46
第2章 進(jìn)程與線程48
2.1 進(jìn)程48
2.1.1 進(jìn)程模型48
2.1.2 進(jìn)程的創(chuàng)建49
2.1.3 進(jìn)程的終止51
2.1.4 進(jìn)程的層次結(jié)構(gòu)51
2.1.5 進(jìn)程的狀態(tài)51
2.1.6 進(jìn)程的實(shí)現(xiàn)53
2.1.7 多道程序設(shè)計(jì)模型54
2.2 線程54
2.2.1 線程的使用54
2.2.2 經(jīng)典的線程模型57
2.2.3 POSIX線程60
2.2.4 在用戶空間中實(shí)現(xiàn)線程60
2.2.5 在內(nèi)核中實(shí)現(xiàn)線程63
2.2.6 混合實(shí)現(xiàn)63
2.2.7 調(diào)度程序激活機(jī)制64
2.2.8 彈出式線程64
2.2.9 使單線程代碼多線程化65
2.3 進(jìn)程間通信67
2.3.1 競爭條件67
2.3.2 臨界區(qū)68
2.3.3 忙等待的互斥68
2.3.4 睡眠與喚醒71
2.3.5 信號量73
2.3.6 互斥量74
2.3.7 管程78
2.3.8 消息傳遞81
2.3.9 屏障82
2.3.10 避免鎖:讀–復(fù)制–更新83
2.4 調(diào)度84
2.4.1 調(diào)度簡介84
2.4.2 批處理系統(tǒng)中的調(diào)度88
2.4.3 交互式系統(tǒng)中的調(diào)度89
2.4.4 實(shí)時系統(tǒng)中的調(diào)度92
2.4.5 策略和機(jī)制93
2.4.6 線程調(diào)度93
2.5 經(jīng)典的IPC問題94
2.5.1 哲學(xué)家就餐問題94
2.5.2 讀者–寫者問題96
2.6 有關(guān)進(jìn)程與線程的研究97
2.7 小結(jié)97
習(xí)題98
第3章 內(nèi)存管理102
3.1 無存儲器抽象102
3.2 一種存儲器抽象:地址空間104
3.2.1 地址空間的概念104
3.2.2 交換技術(shù)106
3.2.3 空閑內(nèi)存管理107
3.3 虛擬內(nèi)存109
3.3.1 分頁110
3.3.2 頁表112
3.3.3 加速分頁過程112
3.3.4 針對大內(nèi)存的頁表114
3.4 頁面置換算法117
3.4.1 最優(yōu)頁面置換算法117
3.4.2 最近未使用頁面置換算法118
3.4.3 先進(jìn)先出頁面置換算法118
3.4.4 第二次機(jī)會頁面置換算法118
3.4.5 時鐘頁面置換算法119
3.4.6 最近最少使用頁面置換算法119
3.4.7 用軟件模擬LRU120
3.4.8 工作集頁面置換算法121
3.4.9 工作集時鐘頁面置換算法123
3.4.10 頁面置換算法小結(jié)124
3.5 分頁系統(tǒng)中的設(shè)計(jì)問題124
3.5.1 局部分配策略與全局分配策略124
3.5.2 負(fù)載控制126
3.5.3 頁面大小126
3.5.4 分離的指令空間和數(shù)據(jù)空間127
3.5.5 共享頁面128
3.5.6 共享庫128
3.5.7 內(nèi)存映射文件130
3.5.8 清除策略130
3.5.9 虛擬內(nèi)存接口130
3.6 有關(guān)實(shí)現(xiàn)的問題131
3.6.1 與分頁有關(guān)的工作131
3.6.2 缺頁中斷處理131
3.6.3 指令備份132
3.6.4 鎖定內(nèi)存中的頁面132
3.6.5 后備存儲133
3.6.6 策略和機(jī)制的分離134
3.7 分段134
3.7.1 純分段的實(shí)現(xiàn)136
3.7.2 分段和分頁結(jié)合:MULTICS136
3.7.3 分段和分頁結(jié)合:Intel x86138
3.8 有關(guān)內(nèi)存管理的研究141
3.9 小結(jié)141
習(xí)題142
第4章 文件系統(tǒng)147
4.1 文件148
4.1.1 文件命名148
4.1.2 文件結(jié)構(gòu)149
4.1.3 文件類型149
4.1.4 文件訪問151
4.1.5 文件屬性151
4.1.6 文件操作152
4.1.7 使用文件系統(tǒng)調(diào)用的一個示例程序152
4.2 目錄154
4.2.1 一級目錄系統(tǒng)154
4.2.2 層次目錄系統(tǒng)154
4.2.3 路徑名154
4.2.4 目錄操作156
4.3 文件系統(tǒng)的實(shí)現(xiàn)157
4.3.1 文件系統(tǒng)布局157
4.3.2 文件的實(shí)現(xiàn)157
4.3.3 目錄的實(shí)現(xiàn)160
4.3.4 共享文件162
4.3.5 日志結(jié)構(gòu)文件系統(tǒng)163
4.3.6 日志文件系統(tǒng)164
4.3.7 虛擬文件系統(tǒng)165
4.4 文件系統(tǒng)管理和優(yōu)化167
4.4.1 磁盤空間管理167
4.4.2 文件系統(tǒng)備份171
4.4.3 文件系統(tǒng)的一致性174
本書的第4版與第3版有很大的不同。因?yàn)椴僮飨到y(tǒng)并非一成不變,所以書中隨處可見許多為介紹新內(nèi)容而做的細(xì)小改動。我們刪除了有關(guān)多媒體操作系統(tǒng)的章節(jié),主要是為了給新內(nèi)容騰出空間,同時也避免此書的篇幅變得不可控。還刪除了有關(guān)Windows Vista的章節(jié),這是因?yàn)閂ista的表現(xiàn)并沒有達(dá)到微軟公司的預(yù)期。同樣被刪除的還有Symbian章節(jié),因?yàn)镾ymbian已不再被廣泛使用。我們用Windows 8替換了Vista的內(nèi)容,用Android替換了Symbian的內(nèi)容。此外,我們還增加了關(guān)于虛擬化和云的章節(jié)。以下是有關(guān)各章節(jié)更改的概要。
第1章的很多地方都進(jìn)行了大量的修改和更新,除增加了移動計(jì)算外,沒有增加或刪減主要章節(jié)。
第2章在刪除一些過時內(nèi)容的同時也增加了一些新內(nèi)容。例如,增加了futex同步原語,還增加了一節(jié)介紹怎樣通過讀–復(fù)制–更新(Read-Copy-Update)的方式來避免鎖定。
第3章更關(guān)注現(xiàn)代的硬件部件,而減少了對段和MULTICS的介紹。
第4章刪除了有關(guān)CD-ROM的內(nèi)容,因?yàn)樗鼈円巡怀R?。替代它們的是更加現(xiàn)代的解決方案(比如閃存盤)。不僅如此,我們還在討論RAID時添加了6級RAID的內(nèi)容。
第5章的內(nèi)容做了很多改動,CRT和CD-ROM等過時設(shè)備的介紹被刪掉了,同時加入了觸摸屏等新技術(shù)。
第6章的內(nèi)容基本沒有改變,有關(guān)死鎖的主題基本上是穩(wěn)定的,并沒有新的成果。
第7章是全新的,涵蓋虛擬化和云等重要內(nèi)容,并加入了一節(jié)有關(guān)VMware的內(nèi)容作為案例。
第8章是對之前討論的多處理機(jī)系統(tǒng)的更新。如今我們更加強(qiáng)調(diào)多核與眾核系統(tǒng),因?yàn)樗鼈冊谶^去的幾年中變得愈發(fā)重要。高速緩存一致性近年來也已經(jīng)成為一個重要問題,這里將會有所涉及。
第9章進(jìn)行了大量修改和重新組織,增加了對缺陷代碼、惡意軟件進(jìn)行探查和防御的新內(nèi)容。對于空指針引用和緩沖區(qū)溢出等攻擊行為提出了更詳細(xì)的應(yīng)對方法,并從攻擊路徑入手,詳細(xì)論述了包含金絲雀(canary)保護(hù)、不執(zhí)行(NX)位以及地址空間隨機(jī)化在內(nèi)的防御機(jī)制。
第10章有很大改變,除了對UNIX和Linux的內(nèi)容進(jìn)行更新外,還新增了有關(guān)Android操作系統(tǒng)的詳細(xì)章節(jié),該系統(tǒng)如今已廣泛用于智能手機(jī)與平板電腦。
第11章在本書第3版中主要針對Windows Vista,然而這些內(nèi)容已經(jīng)被Windows 8尤其是Windows 8.1取代,本章介紹了有關(guān)Windows的最新內(nèi)容。
第12章是對本書前一版本的第13章的修訂。
第13章是一份全新的推薦閱讀目錄。此外,我們也對參考文獻(xiàn)進(jìn)行了更新,收錄了本書第3版推出后發(fā)表的233篇新論文。
此外,每章末的相關(guān)研究部分完全重寫了,以反映最新的操作系統(tǒng)研究成果。并且,所有章節(jié)都增加了新的習(xí)題。
本書提供了大量的教學(xué)輔助工具。針對教師的教學(xué)建議可以在如下網(wǎng)站上得到:www.pearsonhighered.com/tanenbaum。網(wǎng)站中包含幻燈片、學(xué)習(xí)操作系統(tǒng)的軟件工具、學(xué)生實(shí)驗(yàn)、模擬程序以及許多有關(guān)操作系統(tǒng)課程的材料。
有很多人參與了本書第4版的編寫工作。我要介紹的第一位同時也是最重要的一位,是來自阿姆斯特丹自由大學(xué)的Herbert Bos教授,他是本書的合著者。他是一名全方位的系統(tǒng)專家,尤其是在安全和UNIX方面,有他的幫助真是太好了。他編寫了除以下所述內(nèi)容之外的絕大部分新內(nèi)容。
我們的編輯Tracy Johnson出色地完成了她的工作,像以往一樣,她將所有零碎的東西整理在一起,解決了所有的麻煩,使得這項(xiàng)工作能夠按時完成。我們同樣為擁有一位長期合作的制作編輯而感到幸運(yùn),那就是Camille Trentacoste。多虧她在諸多方面的技巧,為我們節(jié)省了很多時間。我們很高興在許多年之后又能有她的加入。Carole Snyder在本書編寫過程中出色地完成了協(xié)調(diào)工作。
第7章中有關(guān)VMware的內(nèi)容(7.12節(jié))是由Edouard Bugnion完成的,他來自洛桑聯(lián)邦理工學(xué)院(EPFL)。Edouard是VMware公司的創(chuàng)始人之一,他比其他人更了解VMware,我們感謝他所提供的巨大支持。
佐治亞理工學(xué)院的Ada Gavrilovska 是Linux內(nèi)核專家,她幫忙更新了第10章的內(nèi)容。第10章中有關(guān)Android的內(nèi)容是由來自Google的Android系統(tǒng)核心工程師Dianne Hackborn編寫的。Android現(xiàn)在是智能手機(jī)的主要操作系統(tǒng),所以我們非常感謝Dianne所提供的幫助。如今第10章篇幅較長并且十分詳細(xì),UNIX、Linux和Android的粉絲們都能從中學(xué)到很多。值得一提的是,本書中最長并且最有技術(shù)含量的章節(jié)是由兩位女士所寫的,而我們只是完成了其余容易的工作。
. 然而,我們并沒有忽略Windows。Microsoft的Dave Probert更新了上版中第11章的內(nèi)容,這一版將詳細(xì)講解Windows 8.1。Dave擁有完備的Windows知識及足夠的遠(yuǎn)見,可以辨別出微軟正確的地方和錯誤的地方。Windows的粉絲們肯定會喜歡這一章。
這本書由于所有這些專家所做出的貢獻(xiàn)而變得更好,所以再一次感謝他們的寶貴幫助。
同樣令我們感到幸運(yùn)的是,我們擁有那么多閱讀過原稿并提出建議的評論者,他們是Trudy Levine、Shivakant Mishra、Krishna Sivalingam以及Ken Wong。
更多建議: