內容簡介
在《現代作業系統(英文版第3版)》第3版中,作者深入討論了許多主題,包括:進程,執行緒,存儲管理,檔案系統,I/O死鎖,接口設計,多媒體,性能權衡。以及有關作業系統設計的最新趨勢。書中不僅涵蓋了現代作業系統的原理和實踐,而且特別關注了Linux作業系統,WindowsVista作業系統、嵌入式作業系統、實時作業系統以及多媒體作業系統。
·涉及WindowsVista以及最新的Linux/Unix作業系統。
作者簡介
AndrewS.Tenenbeum,擁有美國麻省理工學院的理學學士學位和加州大學伯克利分校的哲學博士學位,是荷蘭阿姆斯特丹Vrije大學的計算機科學系教授。多年來,他在編譯技術,作業系統,網路及局域分散式系統方面進行了大量的研究工作。他專注於系統和安全方面的高級研究。他已經發表了近150篇論文。並在十幾個國家做了有關作業系統的學術報告。Tanenbaum是ACM會員,IEEE資深會員,荷蘭皇家藝術和科學學院院士,並由於。對計算領域,特別是計算機組織,網路和作業系統方面的教育所做的貢獻。而獲得2007年度IEEEJarnesHMulligan,JL教育獎。他還入選了《世界名人錄》。
編輯推薦
《現代作業系統(英文版第3版)》介紹:在商業化的進程中,美國的產業界與教育界越來越緊密地結合,計算機學科中的許多泰山北斗同時身處科研和教學的最前線,由此而產生的經典科學著作,不僅擘劃了研究的範疇,還揭示了學術的源變,既遵循學術規範,又自有學者個性,其價值並不會因年月的流逝而減退。
作品目錄
前言
1 引言 1
1.1 什麼是作業系統? 3
1.1.1 所有延長機器的作業系統 4
1.1.2 作為一個資源管理器的作業系統 6
1.2 作業系統的歷史 7
1.2.1 第一代(1945年至1955年)真空管 7
1.2.2第二代(1955年至1965年)電晶體和批處理系統 8
1.2.3 第三代(1965年至1980年)的積體電路 10
1.2 4 第四代(1980年至今)個人電腦 15
1.3計算機硬體檢查 19
l.3.1處理器 19
1.3.2記憶體 23
1.3.3 磁碟 26
1.3.4 膠帶 27
1.3.5 I/O設備 27 (I/O即輸入輸出)
1.3.6匯流排 30
1 3.7啟動計算機 33
1.4 作業系統動物園 33
1.4.1大型機作業系統 34
1.4.2 伺服器作業系統34
1.4.3多處理器的作業系統 34
1.4.4個人電腦作業系統 35
1.4.5掌上電腦作業系統 35
1.4.6 嵌入式作業系統. 35
1.4.7 感測器節點的作業系統 36
1.4.8 實時作業系統 36
1.4.9 智慧卡作業系統 37
1.5作業系統的概念 37
1.5.1 流程 38
1.5.2 地址空間 40
1.5.3檔案 40
1.5.4輸入/輸出 43
1.5.5保護 44
1.5.6 殼牌 44
1.5.7系統發育個體發育重演 46
1.6 系統調用 49
1.6.1 流程管理系統調用 52
1.6.2檔案管理系統調用 56
1.6.3 目錄管理系統調用 57
1.6.4雜項系統調用 58
1.6.5 在Windows的Win32 API 59
1.7 作業系統結構 62
1.7.1單片系統 62
1.7.2分層系統 63
1.7.3微核心 64
1.7.4 客戶 - 伺服器模型 67
1.7.5 虛擬機 67
1.7.6 出的核心 71
1.8 根據C的WORLD 72
1.8.1 C語言 72
1.8.2頭檔案 73
1.8.3大的編程項目 74
1.8.4運行時模型75
1.9作業系統上的研究 76
1.10 本書的其餘部分的概要 77
1.11 公制單位 78
1.12 概要 79
2進程和執行緒
2.1工序83
2.1.1 過程模型 84
2.1.2 進程創建 86
2.1.3 進程終止 88
2.1.4 流程層次結構 89
2.1.5 進程國家 90
2.1.6實施流程 91
2.1.7多多建模的建模 93
2.2 螺紋 95
2.2.1執行緒使用情況 95
2.2.2古典的執行緒模型 100
2.2.3POSIX執行緒 104
2.2.4在用戶空間中實現的執行緒 106
2.2.5在核心中實現的執行緒 109
2.2.6混合實現 110
2.2.7調度激活 111
2.2.8 彈出式執行緒 112
2.2.9 使單執行緒代碼中使用多執行緒技術 114
2.3 進程間通信 117
2.3.1靜態條件 117
2.3.2關鍵區域 119
2.3.3忙等待的互斥 120
2.3.4 睡眠和喚醒 125
2.3.5 信號燈 128
2.3.6互斥 130
2.3.7顯示器 134
2.3.8訊息傳遞 140
2.3.9 壁壘 144
2.4 調度 145
2.4.1調度 145
2.4.2 批處理系統的調度 152
2.4.3 調度互動系統 154
2.4.4 調度實時系統 160
2.4.5政策與機制 161
2.4.6 執行緒調度 162
2.5經典的IPC問題 163
2.5.1 哲學家就餐問題 164
2.5.2讀者和作者的問題 167
2.6 進程和執行緒的研究 168
2.7概要169
習題95
第3章存儲管理99
3.1 無存儲器抽象99
3.2 一種存儲器抽象:地址空間101
3.2.1 地址空間的概念101
3.2.2 交換技術103
3.2.3 空閒記憶體管理104
3.3虛擬記憶體106
3.3.1分頁107
3.3.2頁表108
3.3.3 加速分頁過程109
3.3.4 針對大記憶體的頁表111
3.4頁面置換算法113
3.4.1 最優頁面置換算法114
3.4.2 最近未使用頁面置換算法114
3.4.3先進先出頁面置換算法115
3.4.4 第二次機會頁面置換算法115
3.4.5 時鐘頁面置換算法116
3.4.6 最近最少使用頁面置換算法116
3.4.7 用軟體模擬lru 117
3.4.8 工作集頁面置換算法118
3.4.9 工作集時鐘頁面置換算法120
3.4.10 頁面置換算法小結121
3.5 分頁系統中的設計問題121
3.5.1 局部分配策略與全局分配策略121
3.5.2 負載控制123
3.5.3 頁面大小123
3.5.4 分離的指令空間和數據空間124
3.5.5 共享頁面124
3.5.6 共享庫125
3.5.7 記憶體映射檔案126
3.5.8 清除策略127
3.5.9虛擬記憶體接口127
3.6 有關實現的問題128
3.6.1 與分頁有關的工作128
3.6.2缺頁中斷處理128
3.6.3 指令備份129
3.6.4 鎖定記憶體中的頁面129
3.6.5 後備存儲129
3.6.6 策略和機制的分離130
3.7 分段131
3.7.1 純分段的實現133
3.7.2 分段和分頁結合:multics 134
3.7.3 分段和分頁結合:intel pentium 135
3.8 有關存儲管理的研究138
3.9 小結138
習題139
第4章 檔案系統143
4.1 檔案144
4.1.1 檔案命名144
4.1.2 檔案結構145
4.1.3 檔案類型145
4.1.4 檔案存取147
4.1.5檔案屬性147
4.1.6 檔案操作148
4.1.7 使用檔案系統調用的一個示例程式148
4.2 目錄150
4.2.1 一級目錄系統150
4.2.2 層次目錄系統150
4.2.3 路徑名150
4.2.4 目錄操作152
4.3 檔案系統的實現153
4.3.1 檔案系統布局153
4.3.2 檔案的實現153
4.3.3 目錄的實現156
4.3.4 已分享檔案158
4.3.5 日誌結構檔案系統159
4.3.6 日誌檔案系統160
4.3.7虛擬檔案系統161
4.4 檔案系統管理和最佳化163
4.4.1 磁碟空間管理163
4.4.2 檔案系統備份167
4.4.3 檔案系統的一致性170
4.4.4 檔案系統性能172
4.4.5磁碟碎片整理174
4.5 檔案系統實例175
4.5.1cd-rom檔案系統175
4.5.2 ms-dos檔案系統178
4.5.3 unix v7檔案系統179
4.6 有關檔案系統的研究181
4.7 小結181
習題182
第5章 輸入/輸出184
5.1i/o硬體原理184
5.1.1i/o設備184
5.1.2設備控制器185
5.1.3記憶體映射i/o185
5.1.4直接存儲器存取187
5.1.5 重溫中斷189
5.2 i/o軟體原理191
5.2.1 i/o軟體的目標191
5.2.2 程式控制i/o 192
5.2.3中斷驅動i/o193
5.2.4 使用dma的i/o194
5.3 i/o軟體層次194
5.3.1 中斷處理程式194
5.3.2 設備驅動程式195
5.3.3 與設備無關的i/o軟體197
5.3.4 用戶空間的i/o軟體200
5.4 盤201
5.4.1 盤的硬體201
5.4.2磁碟格式化211
5.4.3 磁碟臂調度算法212
5.4.4 錯誤處理214
5.4.5 穩定存儲器216
5.5 時鐘218
5.5.1 時鐘硬體218
5.5.2 時鐘軟體219
5.5.3 軟定時器220
5.6 用戶界面:鍵盤、滑鼠和監視器221
5.6.1 輸入軟體221
5.6.2 輸出軟體224
5.7 瘦客戶機233
5.8 電源管理235
5.8.1 硬體問題235
5.8.2 作業系統問題236
5.8.3 應用程式問題239
5.9 有關輸入/輸出的研究239
5.10 小結240
習題241
第6章死鎖244
6.1 資源244
6.1.1 可搶占資源和不可搶占資源244
6.1.2 資源獲取245
6.2 死鎖概述246
6.2.1 資源死鎖的條件246
6.2.2 死鎖建模246
6.3鴕鳥算法248
6.4 死鎖檢測和死鎖恢復248
6.4.1 每種類型一個資源的死鎖檢測249
6.4.2 每種類型多個資源的死鎖檢測250
6.4.3 從死鎖中恢復251
6.5死鎖避免252
6.5.1 資源軌跡圖252
6.5.2 安全狀態和不安全狀態253
6.5.3 單個資源的銀行家算法254
6.5.4 多個資源的銀行家算法254
6.6死鎖預防255
6.6.1 破壞互斥條件255
6.6.2 破壞占有和等待條件256
6.6.3 破壞不可搶占條件256
6.6.4 破壞環路等待條件256
6.7 其他問題257
6.7.1 兩階段加鎖257
6.7.2 通信死鎖257
6.7.3活鎖258
6.7.4 飢餓259
6.8 有關死鎖的研究259
6.9 小結259
習題260
第7章多媒體作業系統263
7.1 多媒體簡介263
7.2 多媒體檔案..266
7.2.1視頻編碼266
7.2.2音頻編碼268
7.3 視頻壓縮269
7.3.1 jpeg標準269
7.3.2 mpeg標準271
7.4音頻壓縮272
7.5 多媒體進程調度274
7.5.1 調度同質進程275
7.5.2 一般實時調度275
7.5.3 速率單調調度276
7.5.4 最早最終時限優先調度277
7.6 多媒體檔案系統范型278
7.6.1 vcr控制功能279
7.6.2 近似視頻點播279
7.6.3 具有vcr功能的近似視頻點播281
7.7 檔案存放282
7.7.1 在單個磁碟上存放檔案282
7.7.2 兩個替代的檔案組織策略282
7.7.3 近似視頻點播的檔案存放284
7.7.4 在單個磁碟上存放多個檔案285
7.7.5 在多個磁碟上存放檔案287
7.8 高速快取288
7.8.1 塊高速快取288
7.8.2 檔案高速快取289
7.9 多媒體磁碟調度290
7.9.1 靜態磁碟調度290
7.9.2動態磁碟調度291
7.10 有關多媒體的研究292
7.11 小結292
習題293
第8章多處理機系統295
8.1多處理機296
8.1.1 多處理機硬體296
8.1.2 多處理機作業系統類型301
8.1.3 多處理機同步303
8.1.4 多處理機調度306
8.2 多計算機309
8.2.1 多計算機硬體309
8.2.2 低層通信軟體312
8.2.3用戶層通信軟體313
8.2.4遠程過程調用314
8.2.5 分散式共享存儲器316
8.2.6 多計算機調度319
8.2.7負載平衡319
8.3 虛擬化321
8.3.1 虛擬化的條件322
8.3.2 i型管理程式322
8.3.3 ii型管理程式323
8.3.4 準虛擬化324
8.3.5 記憶體的虛擬化325
8.3.6i/o設備的虛擬化326
8.3.7 虛擬工具327
8.3.8 多核處理機上的虛擬機327
8.3.9 授權問題327
8.4分散式系統327
8.4.1 網路硬體329
8.4.2 網路服務和協定331
8.4.3 基於文檔的中間件333
8.4.4 基於檔案系統的中間件334
8.4.5 基於對象的中間件337
8.4.6 基於協作的中間件338
8.4.7 格線341
8.5 有關多處理機系統的研究341
8.6 小結342
習題343
第9章 安全346
9.1 環境安全347
9.1.1 威脅347
9.1.2 入侵者347
9.1.3 數據意外遺失348
9.2 密碼學原理348
9.2.1 私鑰加密技術349
9.2.2 公鑰加密技術349
9.2.3單向函式350
9.2.4數字簽名350
9.2.5可信平台模組351
9.3 保護機制352
9.3.1 保護域352
9.3.2 訪問控制列表353
9.3.3 權能354
9.3.4 可信系統356
9.3.5可信計算基357
9.3.6 安全系統的形式化模型358
9.3.7 多級安全358
9.3.8 隱蔽信道360
9.4 認證362
9.4.1 使用口令認證363
9.4.2 使用實際物體的認證方式367
9.4.3 使用生物識別的驗證方式369
9.5 內部攻擊370
9.5.1邏輯炸彈370
9.5.2 後門陷阱370
9.5.3 登錄欺騙371
9.6 利用代碼漏洞371
9.6.1緩衝區溢出攻擊372
9.6.2格式化字元串攻擊373
9.6.3 返回libc攻擊374
9.6.4 整數溢出攻擊375
9.6.5代碼注入攻擊376
9.6.6 許可權提升攻擊376
9.7 惡意軟體377
9.7.1特洛伊木馬378
9.7.2 病毒379
9.7.3蠕蟲385
9.7.4 間諜軟體386
9.7.5 rootkit 388
9.8 防禦390
9.8.1 防火牆391
9.8.2 反病毒和抑制反病毒技術392
9.8.3代碼簽名395
9.8.4 囚禁396
9.8.5 基於模型的入侵檢測397
9.8.6 封裝移動代碼398
9.8.7 java安全性400
9.9 有關安全性研究401
9.10 小結401
習題402
第10章 實例研究1:linux 405
10.1 unix與linux的歷史405
10.1.1 unics 405
10.1.2 pdp-11 unix 406
10.1.3 可移植的unix 406
10.1.4 berkeley unix 407
10.1.5 標準unix 407
10.1.6 minix 408
10.1.7 linux 409
10.2 linux概述410
10.2.1 linux的設計目標410
10.2.2 到linux的接口411
10.2.3 shell 412
10.2.4 linux應用程式413
10.2.5 核心結構414
10.3 linux中的進程416
10.3.1 基本概念416
10.3.2 linux中進程管理相關的系統調用418
10.3.3 linux中進程與執行緒的實現420
10.3.4 linux中的調度424
10.3.5 啟動linux系統426
10.4 linux中的記憶體管理427
10.4.1 基本概念427
10.4.2 linux中的記憶體管理系統調用429
10.4.3 linux中記憶體管理的實現430
10.4.4 linux中的分頁434
10.5 linux中的i/o系統435
10.5.1 基本概念435
10.5.2 網路436
10.5.3 linux的輸入/輸出系統調用437
10.5.4 輸入/輸出在linux中的實現437
10.5.5 linux中的模組439
10.6linux檔案系統440
10.6.1 基本概念440
10.6.2 linux的檔案系統調用442
10.6.3 linux檔案系統的實現444
10.6.4 nfs:網路檔案系統449
10.7 linux的安全性453
10.7.1 基本概念453
10.7.2 linux中安全相關的系統調用454
10.7.3 linux中的安全實現455
10.8 小結455
習題456
第11章 實例研究2:windows vista 459
11.1 windows vista的歷史459
11.1.1 20世紀80年代:ms-dos 459
11.1.2 20世紀90年代:基於ms-dos的windows 460
11.1.3 21世紀:基於nt的windows 460
11.1.4 windows vista 462
11.2 windows vista編程462
11.2.1 內部nt套用編程接口463
11.2.2 win32套用編程接口465
11.2.3 windows註冊表467
11.3 系統結構468
11.3.1 作業系統結構469
11.3.2 啟動windows vista 476
11.3.3 對象管理器的實現477
11.3.4 子系統、dll和用戶態服務483
11.4 windows vista中的進程和執行緒484
11.4.1 基本概念484
11.4.2 作業、進程、執行緒和纖程管理api調用487
11.4.3 進程和執行緒的實現490
11.5記憶體管理494
11.5.1 基本概念494
11.5.2 記憶體管理系統調用496
11.5.3存儲管理的實現497
11.6 windows vista的高速快取502
11.7 windows vista的輸入/輸出504
11.7.1 基本概念504
11.7.2 輸入/輸出api調用504
11.7.3 i/o實現506
11.8 windows nt檔案系統509
11.8.1 基本概念510
11.8.2 ntfs檔案系統的實現510
11.9 windows vista中的安全516
11.9.1 基本概念516
11.9.2 安全相關的api調用518
11.9.3 安全性的實現518
11.10 小結519
習題520
第12章 實例研究3:symbian作業系統522
12.1 symbian作業系統的歷史522
12.1.1 symbian作業系統的起源:psion和epoc 522
12.1.2 symbian作業系統版本6 523
12.1.3 symbian作業系統版本7 523
12.1.4 今天的symbian作業系統523
12.2 symbian作業系統概述523
12.2.1 面向對象524
12.2.2微核心設計524
12.2.3 symbian作業系統納核525
12.2.4 客戶機/伺服器資源訪問525
12.2.5 較大型作業系統的特點525
12.2.6 通信與多媒體526
12.3 symbian作業系統中的進程和執行緒526
12.3.1 執行緒和納執行緒526
12.3.2 進程527
12.3.3 活動對象527
12.3.4進程間通信527
12.4記憶體管理528
12.4.1 沒有虛擬記憶體的系統528
12.4.2 symbian作業系統的定址方式529
12.5 輸入和輸出530
12.5.1 設備驅動530
12.5.2 核心擴展530
12.5.3 直接存儲器訪問531
12.5.4 特殊情況:存儲介質531
12.5.5 阻塞i/o531
12.5.6 可移動存儲器531
12.6 存儲系統532
12.6.1 移動設備檔案系統532
12.6.2 symbian作業系統檔案系統532
12.6.3 檔案系統安全和保護532
12.7 symbian作業系統的安全533
12.8 symbian作業系統中的通信534
12.8.1 基本基礎結構534
12.8.2 更仔細地觀察基礎結構535
12.9 小結536
習題536
第13章 作業系統設計537
13.1 設計問題的本質537
13.1.1 目標537
13.1.2 設計作業系統為什麼困難538
13.2 接口設計539
13.2.1 指導原則539
13.2.2 范型540
13.2.3系統調用接口542
13.3 實現543
13.3.1 系統結構543
13.3.2 機制與策略545
13.3.3正交性546
13.3.4 命名546
13.3.5 綁定的時機547
13.3.6 靜態與動態結構547
13.3.7 自頂向下與自底向上的實現548
13.3.8 實用技術549
13.4 性能552
13.4.1 作業系統為什麼運行緩慢552
13.4.2 什麼應該最佳化552
13.4.3 空間-時間的權衡553
13.4.4 高速快取554
13.4.5 線索555
13.4.6 利用局部性555
13.4.7 最佳化常見的情況555
13.5 項目管理556
13.5.1 人月神話556
13.5.2 團隊結構556
13.5.3 經驗的作用558
13.5.4 沒有銀彈558
13.6 作業系統設計的趨勢558
13.6.1 虛擬化559
13.6.2 多核晶片559
13.6.3 大型地址空間作業系統559
13.6.4 聯網559
13.6.5 並行系統與分散式系統560
13.6.6 多媒體560
13.6.7 電池供電的計算機560
13.6.8 嵌入式系統560
13.6.9 感測節點561
13.7 小結561
習題561
第14章 閱讀材料及參考文獻563
14.1 進行深入閱讀的建議563
14.1.1 簡介及概要563
14.1.2 進程和執行緒563
14.1.3存儲管理564
14.1.4 輸入/輸出564
14.1.5 檔案系統564
14.1.6死鎖564
14.1.7多媒體作業系統564
14.1.8多處理機系統565
14.1.9 安全565
14.1.10 linux 566
14.1.11 windows vista 567
14.1.12 symbian作業系統567
14.1.13 設計原則567
14.2 按字母順序排序的參考文獻...568