Operating System Concepts Essentials, Second Edition
出版者的話
譯者序
前言
第一部分 概論
第1章 導論 2
1.1 操作系統(tǒng)的功能 2
1.1.1 用戶視角 2
1.1.2 系統(tǒng)視角 3
1.1.3 操作系統(tǒng)的定義 4
1.2 計算機系統(tǒng)的組成 4
1.2.1 計算機系統(tǒng)的運行 5
1.2.2 存儲結構 6
1.2.3 I/O結構 8
1.3 計算機系統(tǒng)的體系結構 9
1.3.1 單處理器系統(tǒng) 9
1.3.2 多處理器系統(tǒng) 10
1.3.3 集群系統(tǒng) 12
1.4 操作系統(tǒng)的結構 13
1.5 操作系統(tǒng)的執(zhí)行 14
1.5.1 雙重模式與多重模式的執(zhí)行 15
1.5.2 定時器 16
1.6 進程管理 17
1.7 內存管理 17
1.8 存儲管理 18
1.8.1 文件系統(tǒng)管理 18
1.8.2 大容量存儲器管理 19
1.8.3 高速緩存 19
1.8.4 I/O系統(tǒng) 21
1.9 保護與安全 21
1.10 內核數(shù)據(jù)結構 22
1.10.1 列表、堆棧及隊列 22
1.10.2 樹 23
1.10.3 哈希函數(shù)與哈希表 23
1.10.4 位圖 24
1.11 計算環(huán)境 24
1.11.1 傳統(tǒng)計算 24
1.11.2 移動計算 25
1.11.3 分布計算 26
1.11.4 客戶機-服務器計算 26
1.11.5 對等計算 27
1.11.6 虛擬化 28
1.11.7 云計算 29
1.11.8 實時嵌入式系統(tǒng) 29
1.12 開源操作系統(tǒng) 30
1.12.1 歷史 31
1.12.2 Linux 31
1.12.3 BSD UNIX 32
1.12.4 Solaris 32
1.12.5 用作學習的開源操作系統(tǒng) 33
1.13 小結 33
復習題 35
實踐題 35
習題 35
推薦讀物 36
參考文獻 37
第2章 操作系統(tǒng)結構 38
2.1 操作系統(tǒng)的服務 38
2.2 用戶與操作系統(tǒng)的界面 40
2.2.1 命令解釋程序 40
2.2.2 圖形用戶界面 41
2.2.3 界面的選擇 42
2.3 系統(tǒng)調用 43
2.4 系統(tǒng)調用的類型 46
2.4.1 進程控制 46
2.4.2 文件管理 49
2.4.3 設備管理 50
2.4.4 信息維護 50
2.4.5 通信 50
2.4.6 保護 51
2.5 系統(tǒng)程序 51
2.6 操作系統(tǒng)的設計與實現(xiàn) 52
2.6.1 設計目標 52
2.6.2 機制與策略 53
2.6.3 實現(xiàn) 53
2.7 操作系統(tǒng)的結構 54
2.7.1 簡單結構 54
2.7.2 分層方法 55
2.7.3 微內核 56
2.7.4 模塊 57
2.7.5 混合系統(tǒng) 58
2.8 操作系統(tǒng)的調試 60
2.8.1 故障分析 60
2.8.2 性能優(yōu)化 60
2.8.3 DTrace 61
2.9 操作系統(tǒng)的生成 63
2.10 系統(tǒng)引導 64
2.11 小結 64
復習題 65
實踐題 65
習題 65
編程題 66
編程項目 66
推薦讀物 69
參考文獻 70
第二部分 進程管理
第3章 進程 72
3.1 進程概念 72
3.1.1 進程 72
3.1.2 進程狀態(tài) 73
3.1.3 進程控制塊 73
3.1.4 線程 74
3.2 進程調度 75
3.2.1 調度隊列 75
3.2.2 調度程序 77
3.2.3 上下文切換 78
3.3 進程運行 79
3.3.1 進程創(chuàng)建 79
3.3.2 進程終止 82
3.4 進程間通信 83
3.4.1 共享內存系統(tǒng) 85
3.4.2 消息傳遞系統(tǒng) 86
3.5 IPC系統(tǒng)例子 89
3.5.1 例子:POSIX共享內存 89
3.5.2 例子:Mach 91
3.5.3 例子:Windows 92
3.6 客戶機/服務器通信 93
3.6.1 套接字 93
3.6.2 遠程過程調用 96
3.6.3 管道 98
3.7 小結 102
復習題 103
實踐題 103
習題 104
編程題 105
編程項目 107
推薦讀物 110
參考文獻 111
第4章 線程 112
4.1 概述 112
4.1.1 動機 112
4.1.2 優(yōu)點 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.1 Pthreads 118
4.4.2 Windows線程 119
4.4.3 Java線程 121
4.5 隱式多線程 122
4.5.1 線程池 123
4.5.2 OpenMP 124
4.5.3 大中央調度 125
4.5.4 其他方法 125
4.6 多線程問題 125
4.6.1 系統(tǒng)調用fork()和exec() 125
4.6.2 信號處理 126
4.6.3 線程撤銷 127
4.6.4 線程本地存儲 128
4.6.5 調度程序激活 128
4.7 操作系統(tǒng)例子 129
4.7.1 Windows線程 129
4.7.2 Linux線程 130
4.8 小結 131
復習題 131
實踐題 131
習題 131
編程題 133
編程項目 135
推薦讀物 136
參考文獻 136
第5章 進程同步 138
5.1 背景 138
5.2 臨界區(qū)問題 140
5.3 Peterson解決方案 141
5.4 硬件同步 142
5.5 互斥鎖 144
5.6 信號量 144
5.6.1 信號量的使用 145
5.6.2 信號量的實現(xiàn) 145
5.6.3 死鎖與饑餓 147
5.6.4 優(yōu)先級的反轉 147
5.7 經典同步問題 148
5.7.1 有界緩沖問題 148
5.7.2 讀者-作者問題 149
5.7.3 哲學家就餐問題 150
5.8 管程 151
5.8.1 使用方法 152
5.8.2 哲學家就餐問題的管程解決方案 153
5.8.3 采用信號量的管程實現(xiàn) 154
5.8.4 管程內的進程重啟 155
5.9 同步例子 156
5.9.1 Windows同步 156
5.9.2 Linux同步 157
5.9.3 Solaris同步 158
5.9.4 Pthreads同步 159
5.10 替代方法 160
5.10.1 事務內存 161
5.10.2 OpenMP 162