操作系統 : 精髓與設計原理, 9/e

陳向群,陳渝 等 陳向群,陳渝 等

買這商品的人也買了...

商品描述

本書既是關於操作系統概念、結構和機制的教材,
目的是盡可能清楚和全面地展示現代操作系統的本質和特點;
也是講解操作系統的經典教材,不僅系統地講述了操作系統的基本概念、原理和方法,
而且以當代***的操作系統Windows 10、UNIX、Android、Linux為例,展現了當代操作系統的本質和特點。
全書共分背景知識、進程、內存、調度、輸入/輸出和文件、嵌入式系統六部分,
內容包括計算機系統概述、操作系統概述、進程描述和控制、線程、並發性:
互斥和同步、並發:死鎖和飢餓、內存管理、虛擬內存、單處理器調度、
多處理器和實時調度、I/O管理和磁盤調度、文件管理、嵌入式操作系統、
虛擬機、計算機安全技術、雲操作系統和IoT操作系統等。
此外,本書配套網站提供了及時、生動的材料。

作者簡介

William Stallings

美國聖母大學電氣工程專業學士,麻省理工學院計算機科學系博士。
William Stallings已出版圖書18種,含修訂版在內共出版圖書40種,
內容涉及計算機安全、計算機網絡和計算機體系結構。
在多家期刊上發表了大量論文,包括Proceedings of the IEEE、ACM Computing Reviews和Cryptologia。
13次榮獲教材與學術作者協會頒發的最佳計算機科學教材獎。在計算機科學領域的30多年,
William Stallings一直是一位技術貢獻者、技術管理者和多家高科技公司的主管;
針對許多計算機和操作系統,設計和實現了基於TCP/IP與基於OSI的協議套件。
William Stallings還是政府機構、計算機和軟件供應商以及設計、選用網絡軟件與產品的用戶的顧問。
創建與維護了計算機科學專業學生資源網站ComputerScienceStudent.com,
為計算機科學專業的學生(及專業人員)提供文獻及大量專題鏈接,也是學術期刊《密碼術》的編委會成員。

目錄大綱

目錄
第一部分背景知識
第1章計算機系統概述2
1.1基本構成2
1.2微處理器的發展3
1.3指令的執行4
1.4中斷6
1.4.1中斷和指令周期7
1. 4.2中斷處理8
1.4.3多個中斷10
1.5存儲器的層次結構11
1.6高速緩存13
1.6.1動機13
1.6.2高速緩存原理13
1.6.3高速緩存設計15
1.7直接內存存取15
1.8多處理器和多核計算機組織結構16
1.8.1對稱多處理器16
1.8.2多核計算機17
1.9關鍵術語、複習題和習題19
1.9.1關鍵術語19
1.9.2複習題19
1.9.3習題19
附錄1A兩級存儲器的性能特徵21

第2章操作系統概述26
2.1操作系統的目標和功能26
2.1.1作為用戶/計算機接口的操作系統26
2.1.2作為資源管理器的操作系統27
2.1.3操作系統的易擴展性28
2.2操作系統的演化29
2 .2.1串行處理29
2.2.2簡單批處理系統29
2.2.3多道批處理系統31
2.2.4分時系統33
2.3主要成就34
2.3.1進程34
2.3.2內存管理36
2.3.3信息保護和安全37
2.3.4調度和資源管理38
2.4現代操作系統的特徵39
2.5容錯性40
2.5.1基本概念41
2.5.2錯誤41
2.5.3操作系統機制42
2.6多處理器和多核操作系統設計考慮因素42
2.6.1對稱多處理器操作系統設計考慮因素42
2.6.2多核操作系統設計考慮因素43
2.7微軟Windows系統簡介44
2.7.1背景44
2.7.2體系結構44
2.7.3客戶-服務器模型46
2.7.4線程和SMP 47
2.7.5 Windows對象47
2.8傳統的UNIX系統48
2.8.1歷史48
2.8.2描述49
2.9現代UNIX系統50
2.9.1 System V Release 4(SVR4) 51
2.9.2 BSD 51
2.9.3 Solaris 11 51
2.10 Linux操作系統51
2.10.1歷史51
2.10.2模塊結構52
2.10.3內核組件53
2.11 Android 55
2.11.1 Android軟件體系結構56
2.11.2 Android運行時57
2.11.3 Android系統體系結構59
2.11.4活動60
2.11.5電源管理60
2.12關鍵術語、複習題和習題60
2. 12.1關鍵術語60
2.12.2複習題61
2.12.3習題61

第二部分進程
第3章進程描述和控制64
3.1什麼是進程64
3.1.1背景64
3.1 .2進程和進程控制塊65
3.2進程狀態66
3.2.1兩狀態進程模型67
3.2.2進程的創建和終止68
3.2.3五狀態模型69
3.2.4被掛起的進程71
3.3進程描述74
3.3.1操作系統的控制結構75
3.3.2進程控制結構75
3.4進程控制79
3.4.1執行模式79
3.4.2進程創建80
3.4.3進程切換81
3.5操作系統的執行82
3.5.1無進程內核82
3.5.2在用戶進程內運行83
3.5.3基於進程的操作系統84
3.6 UNIX SVR4進程管理84
3.6.1進程狀態84
3.6.2進程描述85
3.6.3進程控制87
3.7小結87
3.8關鍵術語、複習題和習題88
3.8.1關鍵術語88
3.8.2複習題88
3.8.3習題88

第4章線程91
4.1進程和線程91
4.1. 1多線程91
4.1.2線程的功能93
4.2線程分類95
4.2.1用戶級和內核級線程95
4.2.2其他方案97
4.3多核和多線程99
4.3 .1多核系統上的軟件性能99
4.3.2應用示例:Valve遊戲軟件100
4.4 Windows的進程和線程管理101
4.4.1後台任務管理和應用生命週期102
4.4.2 Windows進程103
4.4.3進程對象和線程對象103
4.4.4多線程104
4.4.5線程狀態104
4.4.6對操作系統子系統的支持105
4.5 Solaris的線程和SMP管理106
4.5.1多線程體系結構106
4.5.2動機106
4.5.3進程結構107
4.5.4線程的執行108
4.5.5把中斷當作線程108
4.6 Linux的進程和線程管理109
4.6.1 Linux任務109
4.6.2 Linux線程110
4.6.3 Linux命名空間111
4.7 Android的進程和線程管理112
4.7.1安卓應用112
4. 7.2活動113
4.7.3進程和線程114
4.8 Mac OS X的GCD技術114
4.9小結116
4.10關鍵術語、複習題和習題116
4.10.1關鍵術語116
4. 10.2複習題116
4.10.3習題117

第5章並發:互斥和同步121
5.1互斥:軟件解決方法122
5.1.1 Dekker算法122
5.1.2 Peterson算法125
5.2並發的原理126
5.2.1一個簡單的例子127
5.2.2競爭條件128
5.2.3操作系統關註的問題128
5.2.4進程的交互128
5.2.5互斥的要求131
5.3互斥:硬件的支持131
5.3.1中斷禁用131
5.3.2專用機器指令132
5.4信號量133
5.4. 1互斥136
5.4.2生產者/消費者問題137
5.4.3信號量的實現142
5.5管程142
5.5.1使用信號的管程142
5.5.2使用通知和廣播的管程145
5.6消息傳遞146
5.6.1同步147
5.6.2尋址148
5.6.3消息格式149
5.6.4排隊原則149
5.6.5互斥149
5.7讀者/寫者問題150
5.7.1讀者優先151
5.7.2寫者優先152
5.8小結154
5.9關鍵術語、複習題和習題154
5.9.1關鍵術語154
5.9.2複習題154
5.9.3習題155

第6章並發:死鎖和飢餓164
6.1死鎖原理164
6.1.1可重用資源167
6.1.2可消耗資源167
6.1.3資源分配圖168
6.1.4死鎖的條件169
6.2死鎖預防169
6.2.1互斥170
6.2.2佔有且等待170
6.2.3不可搶占170
6.2.4循環等待170
6.3死鎖避免170
6.3.1進程啟動拒絕171
6.3.2資源分配拒絕171
6.4死鎖檢測174
6.4.1死鎖檢測算法174
6.4.2恢復175
6.5一種綜合的死鎖策略175
6.6哲學家就餐問題176
6.6.1基於信號量的解決方案177
6.6.2基於管程的解決方案178
6.7 UNIX並發機制178
6.7.1管道179
6.7.2消息179
6.7.3共享內存179
6.7.4信號量179
6.7.5信號180
6.8 Linux內核並發機制180
6.8.1原子操作181
6.8.2自旋鎖182
6.8.3信號量183
6.8.4屏障184
6.9 Solaris線程同步原語185
6.9.1互斥鎖186
6.9.2信號量186
6.9.3多讀者/單寫者鎖186
6.9.4條件變量187
6.10 Windows的並發機制187
6.10.1等待函數187
6.10.2分派器對象187
6.10. 3臨界區188
6.10.4輕量級讀寫鎖和條件變量188
6.10.5鎖無關同步機制189
6.11 Android進程間通信189
6.12小結190
6.13關鍵術語、複習題和習題190
6.13.1關鍵術語190
6.13.2複習題190
6.13.3習題191

第三部分內存
第7章內存管理196
7.1內存管理的需求196
7.1.1重定位196
7.1.2保護197
7.1.3共享197
7.1.4邏輯組織197
7.1.5物理組織198
7.2內存分區198
7.2.1固定分區198
7.2.2動態分區200
7.2.3夥伴系統202
7.2.4重定位203
7.3分頁204
7.4分段206
7.5小結207
7. 6關鍵術語、複習題和習題207
7.6.1關鍵術語207
7.6.2複習題208
7.6.3習題208
附錄7A加載和鏈接210

第8章虛擬內存214
8.1硬件和控制結構214
8.1.1局部性和虛擬內存215
8.1.2分頁216
8.1.3分段222
8.1.4段頁式223
8.1.5保護和共享224
8.2操作系統軟件224
8.2.1讀取策略225
8.2.2放置策略226
8.2.3置換策略226
8.2.4駐留集管理230
8.2.5清除策略234
8.2. 6加載控制234
8.3 UNIX和Solaris內存管理235
8.3.1分頁系統235
8.3.2內核內存分配器237
8.4 Linux內存管理238
8.4.1虛擬內存239
8.4.2內核內存分配240
8.5 Windows內存管理240
8.5.1 Windows虛擬地址映射241
8.5.2 Windows分頁241
8.5.3 Windows交換242
8.6 Android內存管理242
8.7小結242
8.8關鍵術語、複習題和習題243
8.8.1關鍵術語243
8.8.2複習題243
8.8.3習題243

第四部分調度
第9章單處理器調度248
9.1處理器調度的類型248
9.1.1長程調度249
9.1.2中程調度250
9.1.3短程調度250
9.2調度算法250
9. 2.1短程調度規則250
9.2.2優先級的使用251
9.2.3選擇調度策略252
9.2.4性能比較258
9.2.5公平共享調度261
9.3傳統的UNIX調度263
9.4小結264
9.5關鍵術語、複習題和習題264
9.5.1關鍵術語264
9.5.2複習題264
9.5.3習題265

第10章多處理器、多核和實時調度268
10.1多處理器和多核調度268
10.1.1粒度268
10.1.2設計問題269
10.1.3進程調度270
10.1.4線程調度271
10.1.5多核線程調度275
10.2實時調度276
10.2.1背景276
10.2.2實時操作系統的特點276
10.2.3實時調度278
10.2.4限期調度279
10.2.5速率單調調度282
10.2.6優先級反轉284
10.3 Linux調度285
10.3.1實時調度285
10.3.2非實時調度286
10.4 UNIX SVR4調度287
10.5 FreeBSD調度程序288
10.5.1優先級288
10.5.2對稱多處理器與多核支持289
10.6 Windows調度290
10.6.1進程和線程優先級290
10.6.2多處理器調度291
10.7小結291
10.8關鍵術語、複習題和習題292
10.8.1關鍵術語292
10.8.2複習題292
10.8.3習題292

第五部分輸入/輸出和文件
第11章I/O管理和磁盤調度296
11.1 I/O設備296
11.2 I/O功能的組織297
11.2.1 I/O功能的發展297
11.2.2直接內存訪問298
11.3操作系統設計問題299
11.3.1設計目標299
11.3.2 I/O功能的邏輯結構300
11.4 I/O緩衝301
11.4.1單緩衝301
11.4.2雙緩衝302
11.4.3循環緩衝302
11.4.4緩衝的作用302
11.5磁盤調度303
11 .5.1磁盤性能參數303
11.5.2磁盤調度策略304
11.6 RAID 307
11.6.1 RAID級別0 310
11.6.2 RAID級別1 310
11.6.3 RAID級別2 311
11 .6.4 RAID級別3 311
11.6.5 RAID級別4 312
11.6.6 RAID級別5 312
11.6.7 RAID級別6 312
11.7磁盤高速緩存313
11.7.1設計考慮因素313
11.7.2性能考慮因素314
11.8 UNIX SVR 4 I/O 315
11.8.1緩衝區高速緩衝315
11.8.2字符隊列316
11.8. 3無緩衝I/O 316
11.8.4 UNIX設備316
11.9 Linux I/O 317
11.9.1磁盤調度317
11.9.2 Linux頁面緩存319
11.10 Windows I/O 320
11. 10.1基本I/O機制320
11.10.2異步I/O和同步I/O 320
11.10.3軟件RAID 321
11.10.4捲影複製321
11.10.5捲加密321
11 .11小結321
11.12關鍵術語、複習題和習題322
11.12.1關鍵術語322
11.12.2複習題322
11.12.3習題322

第12章文件管理324
12.1概述324
12 .1.1文件和文件系統324
12.1.2文件結構325
12.1.3文件管理系統326
12.2文件組織和訪問327
12.2.1堆328
12.2.2順序文件328
12.2.3索引順序文件329
12.2.4索引文件329
12.2.5直接文件或散列文件330
12.3 B樹330
12.4文件目錄332
12.4.1內容332
12.4.2結構333
12.4.3命名334
12.5文件共享335
12.5.1訪問權限335
12.5.2同時訪問335
12 .6記錄組塊336
12.7輔存管理337
12.7.1文件分配337
12.7.2空閒空間管理339
12.7.3捲341
12.7.4可靠性341
12.8 UNIX文件管理341
12.8.1索引節點342
12.8.2文件分配343
12.8.3目錄344
12.8.4捲結構344
12.9 Linux虛擬文件系統344
12.9.1超級塊對象345
12.9.2索引節點對象346
12.9.3目錄項對象346
12.9.4文件對象346
12.9.5緩存346
12.10 Windows文件系統347
12.10.1 NTFS的重要特徵347
12.10.2 NTFS捲和文件結構347
12.10.3可恢復性349
12.11 Android文件系統350
12.11.1文件系統350
12.11.2 SQLite 350
12.12小結351
12.13關鍵術語、複習題和習題351
12.13.1關鍵術語351
12.13.2複習題351
12.13.3習題352

第六部分嵌入式系統
第13章嵌入式操作系統354
13.1嵌入式系統354
13.1.1嵌入式系統概念354
13.1.2通用處理器和專用處理器355
13.1.3微處理器355
13.1.4微控制器356
13.1.5深度嵌入式系統357
13.2嵌入式操作系統的特性357
13.2.1主環境和目標環境358
13.2.2開發方法359
13 .2.3適配現有的操作系統359
13.2.4根據目標建立的嵌入式操作系統359
13.3嵌入式Linux 360
13.3.1嵌入式Linux系統的特性360
13.3.2嵌入式Linux文件系統361
13.3.3嵌入式Linux的優勢361
13.3.4 μClinux 362
13.3.5 Android 363
13. 4 TinyOS 364
13.4.1無線傳感器網絡364
13.4.2 TinyOS的目標365
13.4.3 TinyOS的組件365
13.4.4 TinyOS的調度程序367
13.4.5配置示例367
13. 4.6 TinyOS的資源接口369
13.5關鍵術語、複習題和習題370
13.5.1關鍵術語370
13.5.2複習題370
13.5.3習題370

第14章虛擬機372
14. 1虛擬機概念372
14.2虛擬機管理程序374
14.2.1虛擬機管理程序374
14.2.2半虛擬化375
14.2.3硬件輔助虛擬化376
14.2.4虛擬設備376
14.3容器虛擬化377
14.3.1內核控制組377
14.3.2容器的概念377
14.3.3容器文件系統379
14.3.4微服務380
14.3.5 Docker 380
14.4處理器問題381
14.5內存管理382
14.6輸入/輸出管理383
14.7 VMware ESXi 384
14.8微軟Hyper-V與Xen系列385
14.9 Java虛擬機386
14.10 Linux VServer虛擬機架構386
14.10.1架構387
14.10.2進程調度387
14.11小結388
14.12關鍵術語、複習題和習題388
14.12.1關鍵術語388
14.12.2複習題389
14.12.3習題389

第15章操作系統安全技術390
15.1入侵者與惡意軟件390
15.1.1系統訪問威脅390
15 .1.2應對措施391
15.2緩衝區溢出392
15.2.1緩衝區溢出攻擊392
15.2.2編譯時防禦394
15.2.3運行時防禦396
15.3訪問控制397
15. 3.1文件系統訪問控制397
15.3.2訪問控制策略399
15.4 UNIX訪問控制402
15.4.1傳統UNIX文件訪問控制402
15.4.2 UNIX中的訪問控制列表403
15.5操作系統加固404
15.5.1操作系統安裝:初始安裝與後續更新404
15.5.2刪除不必要的服務、應用與協議405
15.5.3對用戶、組和認證過程進行配置405
15.5.4對資源控制進行配置405
15.5.5安裝額外的安全控制工具406
15. 5.6對系統安全進行測試406
15.6安全性維護406
15.6.1記錄日誌406
15.6.2數據備份和存盤407
15.7 Windows安全性407
15.7.1訪問控制方案407
15.7.2訪問令牌408
15.7.3安全描述符408
15.8小結410
15.9關鍵術語、複習題和習題411
15.9.1關鍵術語411
15.9.2複習題411
15.9.3習題411

第16章雲與物聯網操作系統413
16.1雲計算413
16.1.1雲計算要素413
16.1.2雲服務模型414
16.1.3雲部署模型415
16.1.4雲計算參考架構416
16.2雲操作系統418
16.2.1基礎設施即服務419
16.2.2雲操作系統的需求420
16.2 .3雲操作系統的基本架構420
16.2.4 OpenStack 424
16.3物聯網428
16.3.1物聯網中的物429
16.3.2升級換代429
16.3.3物聯網支持設備的組件429
16.3.4物聯網和雲環境429
16.4物聯網操作系統431
16.4.1受限設備431
16.4.2物聯網操作系統的要求432
16.4.3物聯網操作系統架構433
16.4.4 RIOT 434
16.5關鍵術語和復習題435
16.5.1關鍵術語435
16.5.2複習題436
附錄A並發主題437
附錄B編程和操作系統項目446
參考文獻450