本書是面向操作系統(tǒng)導(dǎo)論課程的經(jīng)典書籍,從第1版至今被國內(nèi)外眾多高校選作教材。全書共六部分,不僅詳細(xì)講解了進(jìn)程管理、內(nèi)存管理、存儲(chǔ)管理、保護(hù)與安全等概念,而且涵蓋重要的理論結(jié)果和案例研究,并且給出了供讀者深入學(xué)習(xí)的推薦讀物。這一版新增了多核系統(tǒng)和移動(dòng)計(jì)算的內(nèi)容,每一章都融入了新的技術(shù)進(jìn)展,并且更新了習(xí)題和編程項(xiàng)目。本書既適合高等院校計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生學(xué)習(xí),也是專業(yè)技術(shù)人員的有益參考。
		
	
前 言O(shè)perating System Concepts, Ninth Edition操作系統(tǒng)是任何計(jì)算機(jī)系統(tǒng)的重要組成部分。同樣,操作系統(tǒng)課程也是計(jì)算機(jī)科學(xué)教育的基本組成部分。隨著計(jì)算機(jī)逐漸滲透到日常生活的每個(gè)方面,從汽車的嵌入設(shè)備到政府和跨國公司的先進(jìn)規(guī)劃工具,這個(gè)領(lǐng)域發(fā)展迅猛。然而,其中的基本概念仍然比較清晰,這些概念就是本書討論的基礎(chǔ)。
    本書是面向操作系統(tǒng)導(dǎo)論課程的教科書,適用于大三、大四學(xué)生和一年級研究生,同時(shí)也可供工程技術(shù)人員參考。本書清晰地描述了操作系統(tǒng)的概念。作為先決條件,我們假設(shè)讀者熟悉基本數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成和一種高級語言(如C或Java)。本書第1章包括了學(xué)習(xí)操作系統(tǒng)所需的硬件知識,還包括大多數(shù)操作系統(tǒng)普遍使用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。代碼示例主要使用C和Java,不過,即使讀者不具有這些語言的全部知識也能理解這些算法。
    本書不僅直觀描述了概念,而且包括重要的理論結(jié)果,但是省略了大部分的形式化證明。每章結(jié)尾的推薦讀物給出了相關(guān)研究論文,其中有的首次提出或證明了這些理論結(jié)果,有的提供深入閱讀的最新材料。本書通過圖形和舉例來代替證明,以說明為什么有關(guān)結(jié)果是真實(shí)有效的。
    本書描述的基本概念和算法通常用于商用和開源的操作系統(tǒng)。我們的目標(biāo)是,按照通用的(而非特定的)操作系統(tǒng)來描述這些概念和算法。另外,我們提供了最受歡迎和最具創(chuàng)新的操作系統(tǒng)的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我們還給出了兩個(gè)主要移動(dòng)操作系統(tǒng)(Android和iOS)的示例。
    本書的編寫綜合了我們從事操作系統(tǒng)教學(xué)的多年經(jīng)驗(yàn)以及IEEE計(jì)算機(jī)協(xié)會(huì)和ACM共同出版的課程指南。另外,還考慮了多位審稿人員提供的反饋意見,以及以前版本讀者和學(xué)生的許多意見和建議。
    本書內(nèi)容本書包括六大部分:
    概論。第1章和第2章解釋了操作系統(tǒng)是什么,它們能做什么,以及它們是如何設(shè)計(jì)與構(gòu)造的。這一部分討論了操作系統(tǒng)的常見功能是什么,以及操作系統(tǒng)能為用戶提供什么。我們不僅討論P(yáng)C和服務(wù)器的傳統(tǒng)操作系統(tǒng),而且討論移動(dòng)設(shè)備的操作系統(tǒng)。描述主要以啟發(fā)和解釋為主,避免討論內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。因此,這部分適合低年級學(xué)生或類似讀者,以便了解操作系統(tǒng)是什么而無需關(guān)注內(nèi)部算法細(xì)節(jié)。
    進(jìn)程管理。第3~7章描述了進(jìn)程概念和并發(fā),這是現(xiàn)代操作系統(tǒng)的核心。進(jìn)程是系統(tǒng)內(nèi)的工作單元。這種系統(tǒng)包括一組并發(fā)執(zhí)行進(jìn)程,其中一些是操作系統(tǒng)進(jìn)程(執(zhí)行系統(tǒng)代碼的進(jìn)程),其余的是用戶進(jìn)程(執(zhí)行用戶代碼的進(jìn)程)。這一部分包括進(jìn)程調(diào)度、進(jìn)程間通信、進(jìn)程同步及死鎖處理等的方法,還包括線程分析以及多核系統(tǒng)和并行編程的有關(guān)分析。
    內(nèi)存管理。第8章和第9章是關(guān)于進(jìn)程執(zhí)行期間的內(nèi)存管理的。為了改進(jìn)CPU的使用率及其對用戶的響應(yīng)速度,計(jì)算機(jī)必須在內(nèi)存中同時(shí)保存多個(gè)進(jìn)程。內(nèi)存管理具有很多不同方案,反映了內(nèi)存管理的各種方法;而特定算法的有效性取決于應(yīng)用情形。
    存儲(chǔ)管理。第10~13章描述了現(xiàn)代計(jì)算機(jī)系統(tǒng)如何處理文件系統(tǒng)、大容量存儲(chǔ)和I/O。文件系統(tǒng)提供了一種機(jī)制,以對數(shù)據(jù)和程序進(jìn)行在線存儲(chǔ)與訪問。這一部分描述了存儲(chǔ)管理的經(jīng)典內(nèi)部算法和結(jié)構(gòu),并且深入討論了這些算法,比如它們的特性、優(yōu)點(diǎn)和缺點(diǎn)。由于連到計(jì)算機(jī)的I/O設(shè)備種類如此之多,操作系統(tǒng)需要為應(yīng)用程序提供大量的功能,以控制這些設(shè)備的方方面面。這一部分深入討論了I/O系統(tǒng),包括I/O系統(tǒng)設(shè)計(jì)、接口及系統(tǒng)內(nèi)部的結(jié)構(gòu)和功能。在許多方面,I/O設(shè)備也是計(jì)算機(jī)中最慢的主要組件。因?yàn)樵O(shè)備通常是性能瓶頸,所以這一部分也討論了I/O設(shè)備的性能問題。
    保護(hù)與安全。第14章和第15章討論了計(jì)算機(jī)系統(tǒng)保護(hù)與安全的必需機(jī)制。操作系統(tǒng)的進(jìn)程活動(dòng)必須互相保護(hù),為此,我們必須確保只有獲得操作系統(tǒng)適當(dāng)授權(quán)的進(jìn)程才能使用系統(tǒng)的文件、內(nèi)存、CPU和其他資源。保護(hù)是一種機(jī)制,用于控制程序、進(jìn)程和用戶對計(jì)算機(jī)系統(tǒng)資源的訪問,這種機(jī)制必須提供指定控制和實(shí)施控制的手段。安全機(jī)制保護(hù)系統(tǒng)存儲(chǔ)的信息(數(shù)據(jù)和代碼)的完整性和計(jì)算機(jī)的物理資源,從而避免未經(jīng)授權(quán)的訪問、惡意破壞或修改以及意外引入的不一致。
    案例研究。本書的第16章和第17章以及附錄A和附錄B(見www.wiley.com/college/silberschatz),詳細(xì)研究了操作系統(tǒng)的實(shí)際案例,包括Linux、Windows 7、FreeBSD和Mach。雖然本書前面章節(jié)也有Linux和Windows 7的討論,但是案例研究提供了更多細(xì)節(jié)。比較這兩個(gè)非常不同的系統(tǒng)的設(shè)計(jì)是特別有意義的。最后的第18章簡要地描述了其他一些有影響的操作系統(tǒng)。
    第9版在編寫本書第9版時(shí),我們考慮了影響操作系統(tǒng)的兩個(gè)重要領(lǐng)域的新發(fā)展:
    多核系統(tǒng)移動(dòng)計(jì)算為了強(qiáng)調(diào)這兩個(gè)重要領(lǐng)域的新發(fā)展,我們在新版本中融入了相關(guān)討論。另外,我們幾乎重寫了每章內(nèi)容以反映最新變化,并且刪除不再有趣或有關(guān)的材料。
    我們也做了大量調(diào)整,例如刪除了實(shí)時(shí)系統(tǒng)一章,但在其他章節(jié)中整合了對這些系統(tǒng)的適當(dāng)討論。大多數(shù)調(diào)整都是基于我們講授操作系統(tǒng)課程的經(jīng)驗(yàn)。
    下面簡要描述各章的主要修改:
    第1章,導(dǎo)論,包括關(guān)于多處理器和多核系統(tǒng)以及內(nèi)核數(shù)據(jù)結(jié)構(gòu)的新內(nèi)
---作者簡介---
亞伯拉罕·西爾伯沙茨(Abraham Silberschatz) 計(jì)算機(jī)科學(xué)家,ACM、IEEE和AAAS會(huì)士,F(xiàn)任耶魯大學(xué)計(jì)算機(jī)科學(xué)系教授,之前曾任貝爾實(shí)驗(yàn)室信息科學(xué)研究中心副主管。除本書外,他還是知名教材《數(shù)據(jù)庫系統(tǒng)概念》的作者之一。
彼得·B. 高爾文(Peter B. Galvin) 現(xiàn)任Pluribus Networks首席解決方案架構(gòu)師,之前曾任系統(tǒng)集成商Corporate Technologies的首席技術(shù)官,還曾在波士頓大學(xué)擔(dān)任講師。
格雷格·加涅(Greg Gagne) 威斯敏斯特學(xué)院計(jì)算機(jī)科學(xué)系主任,操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、并行編程和軟件工程方面的專家。
---譯者簡介---
鄭扣根,浙江大學(xué)計(jì)算機(jī)學(xué)院教授、博士生導(dǎo)師。1994年起于浙江大學(xué)任教至今,長期從事操作系統(tǒng)、計(jì)算理論、形式化方法、計(jì)算機(jī)網(wǎng)絡(luò)等方面的教學(xué)和科研工作。
目 錄
Operating System Concepts, Ninth Edition
出版者的話
譯者序
前言
第一部分 概論
第1章導(dǎo)論  2
1.1操作系統(tǒng)的功能  2
1.1.1用戶視角  2
1.1.2系統(tǒng)視角  3
1.1.3操作系統(tǒng)的定義  4
1.2計(jì)算機(jī)系統(tǒng)的組成  4
1.2.1計(jì)算機(jī)系統(tǒng)的運(yùn)行  5
1.2.2存儲(chǔ)結(jié)構(gòu)  6
1.2.3I/O結(jié)構(gòu)  8
1.3計(jì)算機(jī)系統(tǒng)的體系結(jié)構(gòu)  9
1.3.1單處理器系統(tǒng)  9
1.3.2多處理器系統(tǒng)  10
1.3.3集群系統(tǒng)  12
1.4操作系統(tǒng)的結(jié)構(gòu)  13
1.5操作系統(tǒng)的執(zhí)行  14
1.5.1雙重模式與多重模式的執(zhí)行  15
1.5.2定時(shí)器  16
1.6進(jìn)程管理  17
1.7內(nèi)存管理  18
1.8存儲(chǔ)管理  18
1.8.1文件系統(tǒng)管理  18
1.8.2大容量存儲(chǔ)器管理  19
1.8.3高速緩存  19
1.8.4I/O系統(tǒng)  21
1.9保護(hù)與安全  21
1.10內(nèi)核數(shù)據(jù)結(jié)構(gòu)  22
1.10.1列表、堆棧及隊(duì)列  22
1.10.2樹  23
1.10.3哈希函數(shù)與哈希表  23
1.10.4位圖  24
1.11計(jì)算環(huán)境  24
1.11.1傳統(tǒng)計(jì)算  24
1.11.2移動(dòng)計(jì)算  25
1.11.3分布計(jì)算  26
1.11.4客戶機(jī)-服務(wù)器計(jì)算  26
1.11.5對等計(jì)算  27
1.11.6虛擬化  28
1.11.7云計(jì)算  29
1.11.8實(shí)時(shí)嵌入式系統(tǒng)  30
1.12開源操作系統(tǒng)  31
1.12.1歷史  31
1.12.2Linux  31
1.12.3BSD UNIX  32
1.12.4Solaris  32
1.12.5用作學(xué)習(xí)的開源操作系統(tǒng)  33
1.13小結(jié)  33
習(xí)題  35
推薦讀物  36
參考文獻(xiàn)  36
第2章操作系統(tǒng)結(jié)構(gòu)  38
2.1操作系統(tǒng)的服務(wù)  38
2.2用戶與操作系統(tǒng)的界面  40
2.2.1命令解釋程序  40
2.2.2圖形用戶界面  41
2.2.3界面的選擇  42
2.3系統(tǒng)調(diào)用  43
2.4系統(tǒng)調(diào)用的類型  46
2.4.1進(jìn)程控制  46
2.4.2文件管理  49
2.4.3設(shè)備管理  50
2.4.4信息維護(hù)  50
2.4.5通信  50
2.4.6保護(hù)  51
2.5系統(tǒng)程序  51
2.6操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)  52
2.6.1設(shè)計(jì)目標(biāo)  52
2.6.2機(jī)制與策略  53
2.6.3實(shí)現(xiàn)  53
2.7操作系統(tǒng)的結(jié)構(gòu)  54
2.7.1簡單結(jié)構(gòu)  54
2.7.2分層方法  55
2.7.3微內(nèi)核  56
2.7.4模塊  57
2.7.5混合系統(tǒng)  58
2.8操作系統(tǒng)的調(diào)試  60
2.8.1故障分析  60
2.8.2性能優(yōu)化  60
2.8.3DTrace  61
2.9操作系統(tǒng)的生成  63
2.10系統(tǒng)引導(dǎo)  64
2.11小結(jié)  64
習(xí)題  65
編程題  66
編程項(xiàng)目  66
推薦讀物  69
參考文獻(xiàn)  69
第二部分 進(jìn)程管理
第3章 進(jìn)程  72
3.1進(jìn)程概念  72
3.1.1進(jìn)程  72
3.1.2進(jìn)程狀態(tài)  73
3.1.3進(jìn)程控制塊  73
3.1.4線程  74
3.2進(jìn)程調(diào)度  75
3.2.1調(diào)度隊(duì)列  75
3.2.2調(diào)度程序  77
3.2.3上下文切換  78
3.3進(jìn)程運(yùn)行  79
3.3.1進(jìn)程創(chuàng)建  79
3.3.2進(jìn)程終止  82
3.4進(jìn)程間通信  83
3.4.1共享內(nèi)存系統(tǒng)  85
3.4.2消息傳遞系統(tǒng)  86
3.5IPC系統(tǒng)例子  89
3.5.1例子:POSIX共享內(nèi)存  89
3.5.2例子:Mach  91
3.5.3例子:Windows  92
3.6客戶機(jī)/服務(wù)器通信  93
3.6.1套接字  93
3.6.2遠(yuǎn)程過程調(diào)用  96
3.6.3管道  98
3.7小結(jié)  102
習(xí)題  103
編程題  105
編程項(xiàng)目  107
推薦讀物  110
參考文獻(xiàn)  110
第4章 多線程編程  112
4.1概述  112
4.1.1動(dòng)機(jī)  112
4.1.2優(yōu)點(diǎn)  113
4.2多核編程  114
4.2.1編程挑戰(zhàn)  115
4.2.2并行類型  115
4.3多線程模型  116
4.3.1多對一模型  116
4.3.2一對一模型  116
4.3.3多對多模型  116
4.4線程庫  117
4.4.1Pthreads  118
4.4.2Windows線程  119
4.4.3Java線程  121
4.5隱式多線程  122
4.5.1線程池  123
4.5.2OpenMP  124
4.5.3大中央調(diào)度  125
4.5.4其他方法  125
4.6多線程問題  125
4.6.1系統(tǒng)調(diào)用fork()和exec()  125
4.6.2信號處理  126
4.6.3線程撤銷  127
4.6.4線程本地存儲(chǔ)  128
4.6.5調(diào)度程序激活  128
4.7操作系統(tǒng)例子  129
4.7.1Windows線程  129
4.7.2Linux線程  130
4.8小結(jié)  131
習(xí)題  131
編程題  133
編程項(xiàng)目  134
推薦讀物  136
參考文獻(xiàn)  136
第5章 進(jìn)程調(diào)度  138
5.1基本概念  138
5.1.1CPU-I/O執(zhí)行周期  138
5.1.2CPU調(diào)度程序  139
5.1.3搶占調(diào)度  139
5.1.4調(diào)度程序  140
5.2調(diào)度準(zhǔn)則  140
5.3調(diào)度算法  141
5.3.1先到先服務(wù)調(diào)度  141
5.3.2最短作業(yè)優(yōu)先調(diào)度  142
5.3.3優(yōu)先級調(diào)度  144
5.3.4輪轉(zhuǎn)調(diào)度  145
5.3.5多級隊(duì)列調(diào)度  147
5.3.6多級反饋隊(duì)列調(diào)度  148
5.4線程調(diào)度  149
5.4.1競爭范圍  149
5.4.2Pthreads調(diào)度  149
5.5多處理器調(diào)度  151
5.5.1多處理器調(diào)度的方法  151
5.5.2處理器親和性  151
5.5.3負(fù)載平衡  152
5.5.4多核處理器  152
5.6實(shí)時(shí)CPU調(diào)度  154
5.6.1最小化延遲  154
5.6.2優(yōu)先權(quán)調(diào)度  155
5.6.3單調(diào)速率調(diào)度  156
5.6.4最早截止期限優(yōu)先調(diào)度  157
5.6.5比例分享調(diào)度  158
5.6.6POSIX實(shí)時(shí)調(diào)度  158
5.7操作系統(tǒng)例子  160
5.7.1例子:Linux調(diào)度  160
5.7.2例子:Windows調(diào)度  162
5.7.3例子:Solaris調(diào)度  164
5.8算法評估  165
5.8.1確定性模型  166
5.8.2排隊(duì)模型  167
5.8.3仿真  167
5.8.4實(shí)現(xiàn)  168
5.9小結(jié)  169
習(xí)題  170
推薦讀物  172
參考文獻(xiàn)  173
第6章 同步  175
6.1背景  175
6.2臨界區(qū)問題  177
6.3Peterson解決方案  178
6.4硬件同步  179
6.5互斥鎖  181
6.6信號量