前言
第一篇 基礎原理篇
第1章 操作係統導論
引子:智者的挑戰
1.1 人造與神造
1.2 程序是如何運行的
1.3 什麼是操作係統
1.4 魔術與管理
1.5 用戶程序與操作係統
1.6 操作係統的範疇
1.7 為什麼學習操作係統
思考題
第2章操 作係統曆史
引子:不能承受之真
2.1 第一階段:狀態機操作係統(1940年以前)
2.2 第二階段:單一操作員單一控製端操作係統(20世紀40年代)
2.3 第三階段:批處理操作係統(20世紀50年代)
2.4 第四代:多道批處理操作係統(20世紀60年代)
2.5 第五代之一:分時操作係統(20世紀70年代)
2.6 第五代之二:實時操作係統
2.7 第六代:現代操作係統(1980年以後)
2.8 操作係統的演變過程
2.9 操作係統的未來發展趨勢
2.10 討論:操作係統虛擬化和虛擬化的操作係統
思考題
第3章 操作係統基本概念
引子:軟件師的尷尬
3.1 計算機硬件基本知識
3.2 抽象
3.3 內核態和用戶態
3.4 操作係統結構
3.5 進程、內存和文件
3.6 係統調用
3.7 殼
思考題
第二篇 進程原理篇
第4章 進程
引子:牛頓的睏惑
4.1 進程概論
4.2 進程模型
4.3 多道編程的好處
4.4 進程的産生與消失
4.5 進程的層次結構
4.6 進程的狀態
4.7 進程與地址空間
4.8 進程管理
4.9 進程的缺陷
思考題
第5章 進程調度
引子:恐怖分子的調度
5.1 進程調度的定義
5.2 進程調度的目標
5.3 先來先服務調度算法
5.4 時間片輪轉算法
5.5 短任務優先算法
5.6 優先級調度算法
5.7 混閤調度算法
5.8 其他調度算法
5.9 實時調度算法
5.10 進程調度的過程
5.11 高級議題:調度異常之優先級倒掛
思考題
第6章 進程通信
引子:孤獨爆破手的自白
6.1 為什麼要通信
6.2 進程對白:管道、記名管道、套接字
6.3 進程電報:信號
6.4 進程旗語:信號量
6.5 進程擁抱:共享內存
6.6 信件發送:消息隊列
6.7 其他通信機製
思考題
第三篇 綫程原理篇
第7章 綫程
引子:亞曆山大的分身術
7.1 進程的分身術——綫程
7.2 綫程管理
7.3 綫程模型的實現
7.4 現代操作係統的綫程實現模型
7.5 多綫程的關係
7.6 討論:從用戶態進入內核態
7.7 討論:綫程的睏惑——確定性與非確定性
思考題
第8章 綫程同步
引子:滑鐵盧的同步
8.1 為什麼要同步
8.2 綫程同步的目的
8.3 鎖的進化:金魚生存
8.4 睡覺與叫醒:生産者與消費者問題
8.5 信號量
8.6 鎖、睡覺與叫醒、信號量
8.7 管程
8.8 消息傳遞
8.9 柵欄
思考題
第9章 死鎖應對之哲學原理
引子:迷霧籠罩的加拿大
9.1 為什麼會發生死鎖
9.2 死鎖的描述
9.3 死鎖的4個必要條件
9.4 哲學傢就餐問題
9.5 死鎖的應對
9.6 消除死鎖的必要條件
9.7 銀行傢算法:冒險的代價
9.8 哲學傢就餐問題之解
9.9 討論:死鎖的思考——綜閤治理
9.10 討論:死鎖、活鎖與飢餓
思考題
第10章 鎖的實現
引子:高登繩結
10.1 以中斷啓用與禁止來實現鎖
10.2 以測試與設置指令來實現鎖
10.3 以非繁忙等待、中斷啓用與禁止來實現鎖
10.4 以最少繁忙等待、測試與設置來實現鎖
10.5 中斷禁止、測試與設置
思考題
第四篇 內存原理篇
第11章 基本內存管理
引子:讓彆人無路可走
11.1 內存管理的環境
11.2 內存管理的目標
11.3 虛擬內存的概念
11.4 操作係統在內存中的位置
11.5 單道編程的內存管理
11.6 多道編程的內存管理
11.7 閑置空間管理
思考題
第12章 頁式內存管理
引子:虛擬概念的變現
12.1 基址極限管理模式的問題
12.2 分頁內存管理
12.3 分頁係統的優缺點
12.4 翻譯速度
12.5 缺頁中斷處理
12.6 鎖住頁麵
12.7 頁麵尺寸
12.8 內存抖動
思考題
第13章 頁麵更換算法
引子:黑洞理論的替換
13.1 頁麵需要更換
13.2 頁麵更換的目標
13.3 隨機更換算法
13.4 先進先齣算法
13.5 第二次機會算法
13.6 時鍾算法
13.7 最優更換算法
13.8 NRU算法
13.9 LRU算法
13.10 工作集算法
13.11 工作集時鍾算法
13.12 頁麵替換策略
思考題
第14章 段式內存管理
引子:否定之否定
14.1 分頁係統的缺點
14.2 分段管理係統
14.3 分段的優缺點
14.4 段頁式內存管理
14.5 段號是否占用尋址字位
14.6 討論:否定之否定的嵌套——純粹分段與邏輯分段、分頁與段頁
思考題
第五篇 文件原理篇
第15章 磁盤操作
引子:EMC——從不可能到可能
15.1 磁盤組織與管理
15.2 磁盤的結構
15.3 盤麵的結構
15.4 磁盤驅動器的訪問速度
15.5 操作係統界麵
15.6 磁盤調度算法
15.7 討論:固態盤
15.8 討論:智能磁盤係統
思考題
第16章 文件係統
引子:掩飾的極緻
16.1 為什麼需要文件係統
16.2 文件係統
16.3 文件係統的目標
16.4 文件的基本知識
16.5 從用戶角度看文件係統
16.6 地址獨立的實現機製:文件夾
16.7 文件係統調用
16.8 內存映射的文件訪問
思考題
第17 章文件係統實現
引子:成功中的失敗
17.1 文件係統的布局
17.2 文件的實現
17.3 目錄實現:地址獨立的實現
17.4 閑置空間管理
思考題
第18章 文件係統性能
引子:從不可能到可能
18.1 文件授權管理
18.2 主動控製:訪問控製錶
18.3 能力錶
18.4 訪問控製的實施
18.5 其他文件安全措施
18.6 文件係統性能
18.7 文件係統效率性能
18.8 文件係統設計分析:日誌結構的文件係統
18.9 海量數據文件係統
思考題
第六篇 I/O原理篇
第19章 輸入輸齣
引子:約翰遜的輸齣——從沒有到爆發
19.1 輸入輸齣
19.2 輸入輸齣的目的
19.3 輸入輸齣硬件
19.4 I/O軟件
19.5 I/O軟件分層
思考題
第七篇 多核原理篇
第20章 多核結構與內存
引子:不能承受之熱
20.1 以量取勝
20.2 多核基本概念
20.3 多核的內存結構
20.4 對稱多處理器計算機的啓動過程
20.5 多處理器之間的通信
20.6 SMP緩存一緻性
20.7 多處理器、超綫程和多核的比較
思考題
第21章 多核環境下的進程同步與調度
引子:“多核”帝國的隕落
21.1 多核環境下操作係統的修正
21.2 多核環境下的進程同步與調度
21.3 多核進程同步
21.4 硬件原子操作
21.5 總綫鎖
21.6 多核環境下的軟件同步原語
21.7 鏇鎖
21.8 其他同步原語
21.9 多核環境下的進程調度
21.10 多核環境下的能耗管理
21.11 討論:多核係統的性能
思考題
第八篇 操作係統設計篇
第22章 操作係統設計之哲學原理
引子:殘缺心智的勝利
22.1 操作係統設計的追求
22.2 操作係統設計的第1條哲學原理:層次架構
22.3 操作係統設計的第2條哲學原理:沒有對錯
22.4 操作係統設計的第3條哲學原理:懶人哲學
22.5 操作係統設計的第4條哲學原理:讓睏於人
22.6 操作係統設計的第5條哲學原理:留有餘地
22.7 操作係統設計的第6條哲學原理:子虛烏有——海市蜃樓之美
22.8 操作係統設計的第7條哲學原理:時空轉換——滄海桑田之變
22.9 操作係統設計的第8條哲學原理:策機分離與權利分離
22.10 操作係統設計的第9條哲學原理:簡單為美——求於至簡,歸於永恒
22.11 操作係統設計的第10條哲學原理:適可而止
思考題
結語:失望與希望
參考文獻
· · · · · · (
收起)