作業系統原理、設計與套用

作業系統原理、設計與套用

《作業系統原理、設計與套用》是2010年清華大學出版社出版的圖書,作者是斯圖爾特

基本介紹

  • 書名:作業系統原理、設計與套用
  • 作者:(美)斯圖爾特 
  • 譯者:葛秀慧
  • ISBN:9787302223184
  • 定價:59.00元
  • 出版社: 清華大學出版社
  • 出版時間: 2010-6-1
  • 裝幀:平裝 
  • 開本: 16開
  • 叢書:世界著名計算機教材精選 
內容簡介,圖書目錄,

內容簡介

另外值得強調的是這本書的適用性,它為需要深入研究Linux或者Inferno內部結構的專業人員提供了大量的、翔實的、來自真實世界的代碼,也為初學者提供了從淺入深、循序漸進學習作業系統原理的豐富實例。本書既可以用於普通作業系統的學習,也可以作為高級作業系統的教材。同時這本書每章之後都有印證所學內容的大量、有趣的練習。要求學生自己動手來建立自己的Inferno和Linux。
本書的內容主要包括7個主題:作業系統簡介、進程、存儲器、I/O設備、檔案系統、作業系統安全和分散式作業系統。每一部分都從多個視角分析了主題的基本原理、套用分析、詳細設計,以及Inferno和Linux的實現。在詳細討論Inferno和Linux的這些章節中,主要側重與核心中相對較小的一部分,這些部分用於說明在原理章節中涉及的技術與原理。書中介紹的每個函式都分成了小段,然後以更詳細的方式描述這些小段。這樣就能詳細地學習獨特核心的一些關鍵內容。本書除了基本的原理之外,還重點介紹了9個作業系統CTSS、Multics、RT-11、第6版UNIX、4.3BSD、VMS、Windows NT、TinyOS和Xen。這些示例作業系統,作為主線貫穿整本書。通過重點研究這些作業系統示例,從高層次的方式來研究作業系統的開發者如何將標準技術轉化為實踐。從而在實踐的基礎上再次提升理論。使理論和實踐再次相互印證。

圖書目錄

章 作業系統簡介 1
1.1 什麼是作業系統 1
1.1.1 資源管理者 2
1.1.2 服務提供者 2
1.1.3 虛擬機 2
1.2 作業系統的功能 3
1.2.1 進程 3
1.2.2 存儲器 4
1.2.3 I/O設備 4
1.2.4 檔案系統 4
1.2.5 安全性 5
1.2.6 聯網 5
1.2.7 用戶接口 6
1.3 作業系統的歷史 6
1.3.1 裸機 7
1.3.2 批處理作業系統 7
1.3.3 分時作業系統 8
1.3.4 分散式作業系統 9
1.4 組織作業系統的技術 9
1.4.1 單塊設計 10
1.4.2 分層設計 10
1.4.3 微核心設計 10
1.4.4 虛擬機設計 11
1.5 引導 12
1.6 系統調用 13
1.6.1 系統調用示例 13
1.6.2 系統調用機制 14
1.7 本章小結 14
1.8 練習 15
第2章 作業系統示例 16
2.1 兼容分時系統 16
2.1.1 組織結構 16
2.1.2 引導 17
2.2 多路信息和計算服務 17
2.2.1 組織結構 17
2.2.2 系統調用 19
2.3 RT-11 19
2.3.1 組織結構 19
2.4 第6版UNIX 20
2.4.1 組織結構 20
2.4.2 系統調用 21
2.5 虛擬記憶體系統 21
2.5.1 組織結構 21
2.5.2 引導 22
2.5.3 系統調用 22
2.6 4.3BSD 22
2.6.1 組織結構 23
2.6.2 系統調用 23
2.7 Windows NT 23
2.7.1 組織結構 24
2.8 TinyOS 24
2.8.1 組織結構 25
2.9 Xen 25
2.9.1 組織結構 25
2.10 本章小結 26
2.11 練習 26
第3章 Inferno的結構與初始化 27
3.1 Inferno的起源 27
3.2 基本概念 28
3.3 組織結構 30
3.3.1 基本體系結構 30
3.3.2 原始碼組織結構 31
3.4 初始化 32
3.4.1 啟動Inferno 33
3.4.2 宿主作業系統的特定初始化 34
3.4.3 與宿主作業系統無關的初始化 37
3.4.4 啟動分時 39
3.5 系統調用 40
3.6 本章小結 41
3.7 練習 41
第4章 Linux的結構與初始化 42
4.1 Linux的起源 42
4.2 組織結構 43
4.2.1 基本體系結構 43
4.2.2 模組 44
4.2.3 原始碼組織結構 45
4.3 初始化 46
4.3.1 引導 47
4.3.2 特定處理器初始化 49
4.3.3 與處理器無關的初始化 52
4.3.4 啟動分時 56
4.3.5 初始化管理級的初始化 56
4.4 系統調用 58
4.4.1 處理套用方的系統調用 59
4.4.2 處理核心方的系統調用 60
4.5 本章小結 60
4.6 練習 61
第5章 進程管理原理 62
5.1 進程的概念 62
5.2 實現進程 62
5.2.1 進程操作 63
5.2.2 進程狀態 64
5.2.3 進程表 64
5.3 執行緒 65
5.4 調度 66
5.4.1 先來先服務 66
5.4.2 最短作業優先 66
5.4.3 輪轉法 68
5.4.4 優先權調度 69
5.4.5 調整調度參數 71
5.4.6 兩級調度 71
5.4.7 實時調度 72
5.4.8 嵌入式系統的調度 74
5.5 上下文切換 74
5.6 進程的創建與終止 76
5.7 臨界區 77
5.7.1 中斷控制 78
5.7.2 原子操作指令 78
5.7.3 Peterson算法 79
5.7.4 信號量 80
5.7.5 管程 81
5.7.6 訊息傳遞 82
5.7.7 示例 82
5.8 死鎖 85
5.8.1 充分必要條件 86
5.8.2 處理死鎖 86
5.9 本章小結 91
5.10 練習 91
第6章 進程管理示例 93
6.1 CTSS 93
6.1.1 進程狀態 93
6.1.2 系統調用 94
6.1.3 調度 94
6.2 Multics 95
6.2.1 系統調用 95
6.2.2 進程狀態 95
6.2.3 調度 95
6.3 RT-11 96
6.3.1 系統調用 96
6.3.2 進程狀態 97
6.3.3 進程表 97
6.3.4 調度 97
6.4 第6版UNIX 97
6.4.1 系統調用 97
6.4.2 進程狀態 98
6.4.3 進程表 98
6.4.4 調度 99
6.5 4.3BSD 99
6.5.1 系統調用 99
6.5.2 進程狀態與進程表 100
6.5.3 調度 100
6.6 VMS 101
6.6.1 系統調用 101
6.6.2 執行緒狀態 101
6.6.3 調度 102
6.7 Windows NT 102
6.7.1 系統調用 103
6.7.2 執行緒狀態 103
6.7.3 進程表與執行緒表 103
6.7.4 調度 104
6.8 TinyOS 105
6.9 Xen 105
6.10 本章小結 106
6.11 練習 106
第7章 Inferno中的進程管理 108
7.1 Inferno中的進程 108
7.2 進程的狀態 109
7.2.1 核心進程 109
7.2.2 用戶進程 110
7.3 進程的數據結構 111
7.3.1 核心進程表 111
7.3.2 核心進程表項 112
7.3.3 用戶進程表 113
7.3.4 用戶進程表項 113
7.4 進程的創建 115
7.4.1 解釋進程創建指令 116
7.4.2 實現進程創建 116
7.5 進程的終止 119
7.6 進程調度 121
7.6.1 插入就緒表 121
7.6.2 從就緒表中刪除 122
7.6.3 分時 122
7.6.4 運行時間片 124
7.7 本章小結 126
7.8 練習 126
第8章 Linux中的進程管理 128
8.1 進程與執行緒 128
8.1.1 Linux中的核心執行緒 128
8.1.2 進程間的關係 128
8.2 系統調用 129
8.3 進程狀態 130
8.4 進程表 131
8.5 進程的創建 134
8.5.1 處理系統調用 134
8.5.2 創建進程 137
8.5.3 特定體系結構的步驟 139
8.6 進程調度 141
8.6.1 優先權 141
8.6.2 佇列結構 142
8.6.3 時鐘計時單元 143
8.6.4 調度程式 146
8.7 本章小結 151
8.8 練習 152
第9章 存儲管理原理 153
9.1 存儲層次結構 153
9.2 地址變換 154
9.2.1 基址/上下界暫存器 155
9.2.2 分段存儲 155
9.2.3 分頁存儲 156
9.3 存儲相關的服務 158
9.4 存儲布局 159
9.5 記憶體分配技術 160
9.5.1 空閒空間管理 161
9.5.2 碎片 162
9.5.3 分區 162
9.5.4 選擇策略 163
9.5.5 夥伴系統管理 165
9.6 過度分配技術 166
9.6.1 交換 167
9.6.2 段交換 168
9.6.3 分頁 168
9.6.4 段頁式 175
9.6.5 記憶體映射檔案 175
9.6.6 寫時複製 176
9.6.7 性能問題 176
9.7 嵌入式系統的存儲管理 178
9.8 本章小結 178
9.9 練習 179
第10章 存儲管理示例 181
10.1 CTSS 181
10.2 Multics 181
10.2.1 存儲相關的系統調用 182
10.2.2 存儲布局 182
10.2.3 段式管理與頁式管理 182
10.3 RT-11 183
10.3.1 存儲相關的系統調用 183
10.3.2 存儲布局 183
10.3.3 USR與KMON交換 184
10.4 第6版UNIX 184
10.4.1 存儲相關的系統調用 185
10.4.2 存儲布局 185
10.4.3 空閒空間管理 186
10.4.4 分配 186
10.4.5 交換 187
10.5 4.3BSD 187
10.5.1 存儲相關的系統調用 187
10.5.2 存儲布局 187
10.5.3 空閒空間管理 188
10.5.4 交換與頁替換 189
10.6 VMS 190
10.6.1 頁表 190
10.6.2 存儲布局 190
10.6.3 空閒空間管理 190
10.6.4 交換與頁替換 191
10.6.5 存儲相關的系統調用 192
10.7 Windows NT 192
10.7.1 系統調用 192
10.7.2 存儲布局 192
10.7.3 頁式管理 193
10.8 TinyOS 194
10.9 Xen 194
10.9.1 超級調用 194
10.9.2 存儲布局 194
10.9.3 頁式管理 195
10.10 本章小結 195
10.11 練習 195
第11章 Inferno中的存儲管理 197
11.1 概述 197
11.2 存儲布局 198
11.3 存儲管理的數據結構 199
11.3.1 存儲池 199
11.3.2 存儲塊 201
11.4 存儲管理的實現 203
11.4.1 分配記憶體 203
11.4.2 從樹中刪除空閒塊 208
11.4.3 釋放記憶體 210
11.4.4 把空閒塊插入樹中 212
11.5 垃圾收集 213
11.5.1 堆結構 213
11.5.2 引用計數 213
11.5.3 並發垃圾收集器 214
11.5.4 實現並發垃圾收集 215
11.6 本章小結 218
11.7 練習 219
第12章 Linux中的存儲管理 220
12.1 存儲布局 220
12.2 系統調用 221
12.3 分配機制 222
12.3.1 管理區頁的分配 222
12.3.2 slab分配器 223
12.3.3 核心的記憶體分配 223
12.4 頁管理 223
12.4.1 頁表 223
12.4.2 頁替換 224
12.5 存儲管理的數據結構 225
12.5.1 進程分配的表示 225
12.5.2 虛擬記憶體區表示 227
12.6 存儲管理的實現 228
12.6.1 處理分配系統調用 228
12.6.2 增加區域 230
12.6.3 處理缺頁 233
12.6.4 解決缺頁錯誤 235
12.6.5 處理新頁面 237
12.7 本章小結 239
12.8 練習 239
第13章 I/O設備管理原理 241
13.1 I/O子系統的要素 241
13.2 I/O設備的硬體特性 242
13.2.1 磁碟驅動器 242
13.2.2 串口通信 245
13.2.3 控制器接口技術 246
13.3 I/O設備類型 248
13.3.1 通信設備與存儲設備 249
13.3.2 流設備與塊設備 250
13.4 I/O子系統設計的目標 250
13.5 I/O設備服務 251
13.6 設備驅動器的結構 251
13.7 設備管理技術 253
13.7.1 緩衝區 253
13.7.2 交叉存取 253
13.7.3 電梯算法 254
13.7.4 RAID 256
13.7.5 水位標誌 258
13.7.6 人工輸入處理 259
13.7.7 偽設備 260
13.8 本章小結 260
13.9 練習 260
第14章 I/O設備管理示例 262
14.1 CTSS 262
14.2 Multics 263
14.3 RT-11 264
14.4 第6版UNIX 265
14.5 4.3BSD 266
14.6 VMS 267
14.7 Windows NT 268
14.8 TinyOS 269
14.9 Xen 269
14.10 本章小結 269
14.11 練習 270
第15章 Inferno中的I/O設備 271
15.1 設備驅動程式結構 271
15.2 並行連線埠支持 272
15.2.1 為寫請求服務 273
15.2.2 寫入單位元組 274
15.3 鍵盤支持 275
15.3.1 初始化鍵盤控制器 277
15.3.2 處理鍵盤中斷 278
15.4 IDE磁碟支持 282
15.4.1 處理I/O請求 283
15.4.2 初始化IDE控制器操作 285
15.4.3 處理IDE控制器中斷 289
15.5 本章小結 291
15.6 練習 291
第16章 Linux中的I/O設備 293
16.1 塊請求支持 293
16.2 兩半中斷處理程式結構 294
16.3 並行連線埠驅動程式 295
16.3.1 處理系統調用 295
16.3.2 選擇適合的低層寫入 298
16.3.3 從緩衝區寫入位元組 300
16.3.4 配置控制器 303
16.4 軟碟驅動程式 304
16.4.1 處理請求 305
16.4.2 調度軟碟操作 306
16.4.3 執行軟碟操作 306
16.4.4 啟動命令 309
16.4.5 準備數據傳輸 310
16.4.6 控制器編程 311
16.4.7 處理軟碟中斷 313
16.4.8 完成軟碟操作 314
16.5 本章小結 315
16.6 練習 315
第17章 檔案系統原理 317
17.1 檔案系統服務 317
17.1.1 共享與獨占訪問 318
17.1.2 訪問模式 318
17.1.3 檔案結構 319
17.1.4 元數據 320
17.1.5 記憶體映射檔案 320
17.2 總體檔案系統設計 321
17.2.1 檔案系統形式 321
17.2.2 主要數據結構 322
17.3 名稱空間 323
17.3.1 驅動器指示符 324
17.3.2 賬戶說明符 324
17.3.3 分層命名 325
17.3.4 檔案擴展名 326
17.3.5 檔案版本 327
17.3.6 特殊檔案與目錄 327
17.3.7 相對路徑名與絕對路徑名 328
17.4 管理存儲空間 328
17.4.1 檔案系統元數據 328
17.4.2 數據單位 329
17.4.3 空閒空間管理 329
17.4.4 普通檔案 330
17.4.5 稀疏檔案 332
17.4.6 分支 332
17.4.7 目錄 333
17.4.8 別名 333
17.5 一致性檢測 334
17.6 日誌與日誌結構的檔案系統 335
17.7 塊高速快取 336
17.8 本章小結 337
17.9 練習 337
第18章 檔案系統示例 339
18.1 CTSS 339
18.1.1 第一個CTSS檔案系統 339
18.1.2 第二個CTSS檔案系統 340
18.2 Multics 340
18.3 RT-11 342
18.4 第6版UNIX 342
18.5 4.3BSD 344
18.6 VMS 345
18.7 Windows NT 346
18.8 本章小結 347
18.9 練習 347
第19章 Inferno中的檔案系統 349
19.1 檔案伺服器的作用 349
19.1.1 Styx協定 349
19.1.2 內置核心檔案伺服器 352
19.1.3 用戶空間檔案伺服器 352
19.2 根設備伺服器 352
19.2.1 提供命名服務 353
19.2.2 遍歷根伺服器樹 355
19.2.3 從根伺服器讀取 355
19.3 通用Styx訊息處理程式 356
19.3.1 創建目錄項 356
19.3.2 生成命名 356
19.3.3 遍歷目錄樹 357
19.4 本地Inferno檔案系統 360
19.4.1 初始化 361
19.4.2 主服務進程 365
19.4.3 處理Styx請求 365
19.4.4 遍歷目錄樹 366
19.4.5 搜尋目錄 369
19.4.6 讀檔案 372
19.4.7 磁碟上的數據結構 374
19.4.8 讀取目錄項 378
19.4.9 讀取檔案塊 379
19.4.10 查找檔案塊 379
19.4.11 處理間接塊 381
19.4.12 從緩衝區高速快取中獲取 382
19.5 本章小結 384
19.6 練習 384
第20章 Linux中的檔案系統 386
20.1 虛擬檔案系統 386
20.1.1 超級塊 387
20.1.2 i-節點 387
20.1.3 目錄項 387
20.1.4 檔案 387
20.2 EXT3檔案系統 388
20.3 EXT3的磁碟結構 388
20.3.1 EXT3超級塊 390
20.3.2 EXT3-I節點 391
20.3.3 EXT3目錄項 393
20.4 EXT3命名查找 393
20.4.1 遍歷路徑 394
20.4.2 通用目錄查找(第一部分) 399
20.4.3 通用目錄查找(第二部分) 400
20.4.4 EXT3目錄查找 401
20.4.5 EXT3目錄搜尋 402
20.4.6 EXT3目錄塊搜尋 405
20.5 寫入檔案 406
20.5.1 Linux的寫入系統調用 406
20.5.2 寫入通用檔案 407
20.5.3 寫入EXT3檔案 408
20.6 在EXT3中定位檔案塊 409
20.6.1 標識間接塊 409
20.6.2 讀取間接塊 411
20.7 本章小結 412
20.8 練習 412
第21章 作業系統安全原理 413
21.1 用戶認證 413
21.1.1 用戶名與密碼 413
21.1.2 散列函式加密 414
21.1.3 回調 414
21.1.4 挑戰/回響認證 415
21.1.5 一次性密碼 415
21.1.6 生物認證 416
21.2 基本資源保護 416
21.2.1 特權用戶 416
21.2.2 訪問CPU特性 417
21.2.3 記憶體訪問 418
21.2.4 簡單的保護代碼 418
21.2.5 訪問控制列表 419
21.2.6 權能 420
21.3 威脅類型 421
21.3.1 中間人攻擊 421
21.3.2 特洛伊木馬 421
21.3.3 陷阱門 421
21.3.4 邏輯/時間炸彈 422
21.3.5 病毒 422
21.3.6 蠕蟲 423
21.3.7 隱蔽通道 423
21.3.8 拒絕服務 424
21.4 橙皮書分級 424
21.4.1 D組 424
21.4.2 C組 425
21.4.3 B組 425
21.4.4 A組 426
21.5 加密 426
21.5.1 對稱加密 427
21.5.2 公鑰加密學 428
21.6 Multics的保護環 430
21.7 Inferno的安全 431
21.8 Linux的安全 431
21.9 本章小結 433
21.10 練習 433
第22章 分散式系統原理 435
22.1 基本概念 435
22.1.1 資源共享 435
22.1.2 同步操作 438
22.1.3 一致性 438
22.1.4 分散式互斥 438
22.1.5 容錯 439
22.1.6 自穩定 440
22.2 處理器共享 440
22.2.1 對稱多處理 440
22.2.2 集群 441
22.2.3 格線 442
22.3 分散式時鐘 442
22.3.1 邏輯時鐘 443
22.3.2 物理時鐘 443
22.4 選舉算法 444
22.4.1 欺負算法 444
22.4.2 環算法 446
22.5 本章小結 447
22.6 練習 447
附錄A 編譯宿主Inferno 449
A.1 建立配置 449
A.2 編譯器與開發工具 450
A.3 PATH環境變數 450
A.4 其他環境變數 451
A.5 編譯系統 452
A.6 運行新版本 452
A.7 小結 452
附錄B 編譯本地Inferno 454
B.1 建立配置 454
B.2 創建工具鏈 454
B.3 創建引導程式代碼 455
B.4 建立核心配置 455
B.5 生成載入程式配置 455
B.6 創建核心鏡像 455
B.7 生成軟碟鏡像 456
B.8 運行新核心 456
B.9 小結 456

相關詞條

熱門詞條

聯絡我們