內容簡介
作業系統是計算機系統的核心繫統軟體,負責控制和管理整個系統,使之協調工作。本書對作業系統的核心內容進行了全面分析,包括作業系統的發展歷史和基本概念、進程與執行緒、記憶體管理、檔案系統、輸入與輸出、多核環境下的進程調度和作業系統設計。本書用大量生活實例,生動地解釋了作業系統中的主要難點和模糊點:鎖的實現、同步機制的發展軸線、純粹分段到段頁式的演變、多核環境下的進程同步與調度和作業系統設計等內容。本書重點突出、邏輯清晰、內容連貫,便於學生順利掌握作業系統的核心內容。
本書層次豐富、涵蓋作業系統的所有核心內容,適合作為國內高校計算機及相關專業本科生作業系統課程的教材,也是了解計算機作業系統原理不可多得的參考書。
作者簡介
鄒恆明,美國密西根大學博士。曾任職美國IBM、國家數據公司、朗訊、EMC公司8年多。在IBM和EMC分別從事AIX作業系統和Engenity存儲作業系統的研發,其中包括911中挽摩根斯坦利公司於既倒的、美國唯一的“英雄軟體”SRDF。2007年在中國金融期貨交易系統(股指期貨)專家測評中擔任軟體測評組長。2004年以來在上海交大研究、執教作業系統和算法設計等14門課程多年。
目錄
前言
第一篇 基礎原理篇
第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.8NRU算法
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條哲學原理:適可而止
思考題
結語:失望與希望
參考文獻