出版社:人民郵電出版社 ISBN:9787115508232 商品編碼:50449714753 品牌:文軒 出版時間:2019-06-01 代碼:99 作者:雷姆茲·H.阿帕希杜塞爾(RemziH.Ar
" 作 者:[美] 雷姆茲·H.阿帕希杜塞爾( Remzi H. Arpaci-Dusseau), [美]安德莉亞·C.阿帕希杜塞爾(Andrea C. Arpaci-Dusseau) 著 王海鵬 譯 定 價:99 出 版 社:人民郵電出版社 出版日期:2019年06月01日 頁 數:482 裝 幀:平裝 ISBN:9787115508232 本書圍繞虛擬化、並發和持久性這三個主要概念展開,介紹了所有現代繫統的主要組件(包括調度、虛擬內存管理、磁盤和I/O子繫統、文件繫統)。全書共50章,分為3個部分,分別講述虛擬化、並發和持久性的相關內容。作者以對話形式引入所介紹的主題概念,行文詼諧幽默卻又鞭闢入裡,力求幫助讀者理解操作繫統中虛擬化、並發和持久性的原理。本書內容全面,並給出了真實可運行的代碼(而非偽代碼),還提供了相應的練習,很適合高等院校相關專業的教師開展教學和高校學生進行自學。本書具有以下特色:● 主題突出,緊緊等 ●第 1章 關於本書的對話1第 2章 操作繫統介紹 32.1 虛擬化CPU 42.2 虛擬化內存 62.3 並發 72.4 持久性 92.5 設計目標 112.6 簡單歷史 122.7 小結 15參考資料 15第 1部分 虛擬化第3章 關於虛擬化的對話 18第4章 抽像:進程 194.1 抽像:進程 204.2 進程API 204.3 進程創建:更多細節 214.4 進程狀態 224.5 數據結構 244.6 小結 25參考資料 25作業 26問題 26第5章 插敘:進程API 285.1 fork()繫統調用 285.2 wait()繫統調用 295.3 最後是exec()繫統調用 305.4 為什麼這樣設計API 325.5 其他API 345.6 小結 34參考資料 34作業(編碼) 35問題 35第6章 機制:受限直接執行 376.1 基本技巧:受限直接執行 376.2 問題1:受的操作 386.3 問題2:在進程之間切換 406.4 擔心並發嗎 446.5 小結 45參考資料 45作業(測量) 47第7章 進程調度:介紹 487.1 工作負載假設 487.2 調度指標 497.3 優選先出(FIFO) 497.4 最短任務優先(SJF) 507.5 最短完成時間優先(STCF) 517.6 新度量指標:響應時間 527.7 輪轉 527.8 結合I/O 547.9 無法預知 547.10 小結 55參考資料 55作業 56問題 56第8章 調度:多級反饋隊列 578.1 MLFQ:基本規則 578.2 嘗試 #1:如何改變優先級 588.3 嘗試 #2:提升優先級 608.4 嘗試 #3:更好的計時方式 618.5 MLFQ調優及其他問題 618.6 MLFQ:小結 62參考資料 63作業 64問題 64第9章 調度:比例份額 659.1 基本概念:彩票數表示份額 659.2 彩票機制 669.3 實現 679.4 一個例子 689.5 如何分配彩票 689.6 為什麼不是確定的 699.7 小結 70參考資料 70作業 71問題 71第 10章 多處理器調度(高級) 7310.1 背景:多處理器架構 7310.2 別忘了同步 7510.3 最後一個問題:緩存親和度 7610.4 單隊列調度 7610.5 多隊列調度 7710.6 Linux 多處理器調度 7910.7 小結 79參考資料 79第 11章 關於CPU虛擬化的總結對話 81第 12章 關於內存虛擬化的對話 83第 13章 抽像:地址空間 8513.1 早期繫統 8513.2 多道程序和時分共享 8513.3 地址空間 8613.4 目標 8713.5 小結 89參考資料 89第 14章 插敘:內存操作API 9114.1 內存類型 9114.2 malloc()調用 9214.3 free()調用 9314.4 常見錯誤 9314.5 底層操作繫統支持 9614.6 其他調用 9714.7 小結 97參考資料 97作業(編碼) 98問題 98第 15章 機制:地址轉換 10015.1 假設 10115.2 一個例子 10115.3 動態(基於硬件)重定位 10315.4 硬件支持:總結 10515.5 操作繫統的問題 10515.6 小結 108參考資料 109作業 110問題 110第 16章 分段 11116.1 分段:泛化的基址/界限 11116.2 我們引用哪個段 11316.3 棧怎麼辦 11416.4 支持共享 11416.5 細粒度與粗粒度的分段 11516.6 操作繫統支持 11516.7 小結 117參考資料 117作業 118問題 119第 17章 空閑空間管理 12017.1 假設 12017.2 底層機制 12117.3 基本策略 12617.4 其他方式 12817.5 小結 130參考資料 130作業 131問題 131第 18章 分頁:介紹 13218.1 一個簡單例子 13218.2 頁表存在哪裡 13418.3 列表中究竟有什麼 13518.4 分頁:也很慢 13618.5 內存追蹤 13718.6 小結 139參考資料 139作業 140問題 140第 19章 分頁:快速地址轉換(TLB) 14219.1 TLB的基本算法 14219.2 示例:訪問數組 14319.3 誰來處理TLB未命中 14519.4 TLB的內容 14619.5 上下文切換時對TLB的處理 14719.6 TLB替換策略 14919.7 實際繫統的TLB表項 14919.8 小結 150參考資料 151作業(測量) 152問題 153第 20章 分頁:較小的表 15420.1 簡單的解決方案:更大的頁 15420.2 混合方法:分頁和分段 15520.3 多級頁表 15720.4 反向頁表 16220.5 將頁表交換到磁盤 16320.6 小結 163參考資料 163作業 164問題 164第 21章 超越物理內存:機制 16521.1 交換空間 16521.2 存在位 16621.3 頁錯誤 16721.4 內存滿了怎麼辦 16821.5 頁錯誤處理流程 16821.6 交換何時真正發生 16921.7 小結 170參考資料 171第 22章 超越物理內存:策略 17222.1 緩存管理 17222.2 很優替換策略 17322.3 簡單策略:FIFO 17522.4 另一簡單策略:隨機 17622.5 利用歷史數據:LRU 17722.6 工作負載示例 17822.7 實現基於歷史信息的算法 18022.8 近似LRU 18122.9 考慮髒頁 18222.10 其他虛擬內存策略 18222.11 抖動 18322.12 小結 183參考資料 183作業 185問題 185第 23章 VAX/VMS虛擬內存繫統 18623.1 背景 18623.2 內存管理硬件 18623.3 一個真實的地址空間 18723.4 頁替換 18923.5 其他漂亮的虛擬內存技巧 19023.6 小結 191參考資料 191第 24章 內存虛擬化總結對話 193第 2部分 並發第 25章 關於並發的對話 196第 26章 並發:介紹 19826.1 實例:線程創建 19926.2 為什麼更糟糕:共享數據 20126.3 核心問題:不可控的調度 20326.4 原子性願望 20526.5 還有一個問題:等待另一個 線程 20626.6 小結:為什麼操作繫統課要研究 並發 207參考資料 207作業 208問題 208第 27章 插敘:線程API 21027.1 線程創建 21027.2 線程完成 21127.3 鎖 21427.4 條件變量 21527.5 編譯和運行 21727.6 小結 217參考資料 218第 28章 鎖 21928.1 鎖的基本思想 21928.2 Pthread鎖 22028.3 實現一個鎖 22028.4 評價鎖 22028.5 控制中斷 22128.6 測試並設置指令(原子交換) 22228.7 實現可用的自旋鎖 22328.8 評價自旋鎖 22528.9 比較並交換 22528.10 鏈接的加載和條件式存儲指令 22628.11 獲取並增加 22828.12 自旋過多:怎麼辦 22928.13 簡單方法:讓出來吧,寶貝 22928.14 使用隊列:休眠替代自旋 23028.15 不同操作繫統,不同實現 23228.16 兩階段鎖 23328.17 小結 233參考資料 233作業 235問題 235第 29章 基於鎖的並發數據結構 23729.1 並發計數器 23729.2 並發鏈表 24129.3 並發隊列 24429.4 並發散列表 24529.5 小結 246參考資料 247第30章 條件變量 24930.1 定義和程序 25030.2 生產者/消費者(有界緩衝區) 問題 25230.3 覆蓋條件 26030.4 小結 261參考資料 261第31章 信號量 26331.1 信號量的定義 26331.2 二值信號量(鎖) 26431.3 信號量用作條件變量 26631.4 生產者/消費者(有界緩衝區) 問題 26831.5 讀者—寫者鎖 27131.6 哲學家就餐問題 27331.7 如何實現信號量 27531.8 小結 276參考資料 276第32章 常見並發問題 27932.1 有哪些類型的缺陷 27932.2 非死鎖缺陷 28032.3 死鎖缺陷 28232.4 小結 288參考資料 289第33章 基於事件的並發(進階) 29133.1 基本想法:事件循環 29133.2 重要API:select()(或poll()) 29233.3 使用select() 29333.4 為何更簡單?無須鎖 29433.5 一個問題:阻塞繫統調用 29433.6 解決方案:異步I/O 29433.7 另一個問題:狀態管理 29633.8 什麼事情仍然很難 29733.9 小結 298參考資料 298第34章 並發的總結對話 300第3部分 持久性第35章 關於持久性的對話 302第36章 I/O設備 30336.1 繫統架構 30336.2 標準設備 30436.3 標準協議 30436.4 利用中斷減少CPU開銷 30536.5 利用DMA進行更高效的數據 傳送 30636.6 設備交互的方法 30736.7 納入操作繫統:設備驅動程序 30736.8 案例研究:簡單的IDE磁盤驅動 程序 30936.9 歷史記錄 31136.10 小結 311參考資料 312第37章 磁盤驅動器 31437.1 接口 31437.2 基本幾何形狀 31437.3 簡單的磁盤驅動器 31537.4 I/O時間:用數學 31837.5 磁盤調度 32037.6 小結 323參考資料 323作業 324問題 324第38章 廉價冗餘磁盤陣列(RAID) 32638.1 接口和RAID內部 32738.2 故障模型 32738.3 如何評估RAID 32838.4 RAID 0級:條帶化 32838.5 RAID 1級:鏡像 33138.6 RAID 4級:通過奇偶校驗 空間 33338.7 RAID 5級:旋轉奇偶校驗 33638.8 RAID比較:總結 33738.9 其他有趣的RAID問題 33838.10 小結 338參考資料 339作業 340問題 340第39章 插敘:文件和目錄 34239.1 文件和目錄 34239.2 文件繫統接口 34339.3 創建文件 34339.4 讀寫文件 34439.5 讀取和寫入,但不按順序 34639.6 用fsync()立即寫入 34639.7 文件重命名 34739.8 獲取文件信息 34839.9 刪除文件 34939.10 創建目錄 34939.11 讀取目錄 35039.12 刪除目錄 35139.13 硬鏈接 35139.14 符號鏈接 35339.15 創建並掛載文件繫統 35439.16 總結 355參考資料 355作業 356問題 356第40章 文件繫統實現 35740.1 思考方式 35740.2 整體組織 35840.3 文件組織:inode 35940.4 目錄組織 36340.5 空閑空間管理 36440.6 訪問路徑:讀取和寫入 36440.7 緩存和緩衝 36740.8 小結 369參考資料 369作業 370問題 371第41章 局部性和快速文件繫統 37241.1 問題:性能不佳 37241.2 FFS:磁盤意識是解決方案 37341.3 組織結構:柱面組 37341.4 策略:如何分配文件和目錄 37441.5 測量文件的局部性 37541.6 大文件例外 37641.7 關於FFS的其他幾件事 37741.8 小結 378參考資料 378第42章 崩潰一致性:FSCK和日志 38042.1 一個詳細的例子 38042.2 解決方案#1:文件繫統檢查 程序 38342.3 解決方案#2:日志(或預寫日志) 38442.4 解決方案#3:其他方法 39242.5 小結 393參考資料 393第43章 日志結構文件繫統 39543.1 按順序寫入磁盤 39643.2 順序而高效地寫入 39643.3 要緩衝多少 39743.4 問題:查找inode 39843.5 通過間接解決方案:inode映射 39843.6 檢查點區域 39943.7 從磁盤讀取文件:回顧 40043.8 目錄如何 40043.9 一個新問題:垃圾收集 40143.10 確定塊的死活 40243.11 策略問題:要清理哪些塊, 何時清理 40343.12 崩潰恢復和日志 40343.13 小結 404參考資料 404第44章 數據完整性和保護 40744.1 磁盤故障模式 40744.2 處理潛在的扇區錯誤 40944.3 檢測訛誤:校驗和 40944.4 使用校驗和 41244.5 一個新問題:錯誤的寫入 41244.6 最後一個問題:丟失的寫入 41344.7 擦淨 41344.8 校驗和的開銷 41444.9 小結 414參考資料 414第45章 關於持久的總結對話 417第46章 關於分布式的對話 418第47章 分布式繫統 41947.1 通信基礎 42047.2 不可靠的通信層 42047.3 可靠的通信層 42247.4 通信抽像 42447.5 遠程過程調用(RPC) 42547.6 小結 428參考資料 429第48章 Sun的網絡文件繫統(NFS) 43048.1 基本分布式文件繫統 43048.2 交出NFS 43148.3 關注點:簡單快速的服務器崩潰 恢復 43148.4 快速崩潰恢復的關鍵:無狀態 43248.5 NFSv2協議 43348.6 從協議到分布式文件繫統 43448.7 利用冪等操作處理服務器故障 43548.8 提高性能:客戶端緩存 43748.9 緩存一致性問題 43748.10 評估NFS的緩存一致性 43948.11 服務器端寫緩衝的隱含意義 43948.12 小結 440參考資料 440第49章 Andrew文件繫統(AFS) 44249.1 AFS版本1 44249.2 版本1的問題 44349.3 改進協議 44449.4 AFS版本2 44449.5 緩存一致性 44649.6 崩潰恢復 44749.7 AFSv2的擴展性和性能 44849.8 AFS:其他改進 45049.9 小結 450參考資料 451作業 452問題 452第50章 關於分布式的總結對話 453附錄A 關於虛擬機監視器的對話 454附錄B 虛擬機監視器 455附錄C 關於監視器的對話 466附錄D 關於實驗室的對話 467附錄E 實驗室:指南 468附錄F 實驗室:繫統項目 478附錄G 實驗室:xv6項目 480 這是一本關於現代操作繫統的書。全書圍繞虛擬化、並發和持久性這3個主要概念展開,介紹了所有現代繫統的主要組件(包括調度、虛擬內存管理、磁盤和I/O子繫統、文件繫統 )。本書共50章,分為3個部分,分別講述虛擬化、並發和持久性的相關內容。本書大部分章節均先提出特定的問題,然後通過書中介紹的技術、算法和思想來解決這些問題。筆者以對話形式引入所介紹的主題概念,行文詼諧幽默卻又鞭闢入裡,力求幫助讀者理解操作繫統中虛擬化、並發和持久性的原理。本書內容全面,並給出了真實可運行的代碼(而非偽代碼),還提供了相應的練習,適合高等院校相關專業教師教學和高校學生自學。 [美] 雷姆茲·H.阿帕希杜塞爾( Remzi H. Arpaci-Dusseau), [美]安德莉亞·C.阿帕希杜塞爾(Andrea C. Arpaci-Dusseau) 著 王海鵬 譯 雷姆茲·H.阿帕希杜塞爾(Remzi H.Arpaci-Dusseau)和安德莉亞·C.阿帕希杜塞爾(Andrea C.Arpaci-Dusseau)夫婦是美國威斯康星大學計算機科學教授。二人都從事計算機操作繫統方面的教學和研究。
" |