現代作業系統:原理與實現

現代作業系統:原理與實現

《現代作業系統:原理與實現》是2020年機械工業出版社出版的一本圖書,作者是陳海波、夏虞斌 。本書以三個“面向”為導向,即面向經典基礎理論與方法,面向國際前沿研究,面向工業界實踐,深入淺出地介紹作業系統的理論、架構、設計方法與具體實現。

基本介紹

  • 中文名:現代作業系統:原理與實現 
  • 作者:陳海波、夏虞斌
  • 類別:計算機
  • 出版社:機械工業出版社
  • 出版時間:2020年10月1日
  • 頁數:370 頁
  • 定價:79 元 
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787111666073
內容簡介,圖書目錄,出版背景,作者簡介,

內容簡介

本書以三個“面向”為導向,即面向經典基礎理論與方法,面向國際前沿研究,面向工業界實踐,深入淺出地介紹作業系統的理論、架構、設計方法與具體實現。本書是首本以ARM64為主體介紹作業系統的教材,將學術前沿與工業實踐充分結合,不僅介紹了現有的Linux宏核心作業系統架構,而且介紹了微核心、外核等作業系統架構。
本書共分為三個部分,其中第一部分(作業系統基礎)以紙質版的形式出版,第二部分(作業系統進階)和第三部分(ChCore課程實驗)則以電子版的形式在本書網站發布。第一部分共分為11章,內容包括:作業系統概述、硬體結構、作業系統結構、記憶體管理、進程與執行緒、作業系統調度、進程間通信、同步原語、檔案系統與存儲、設備管理和系統虛擬化。
本書包含大量插圖、示例和練習,並融入了典型的作業系統相關的技術問題,既可以作為高等院校計算機專業本科生和研究生的作業系統課程教材,也可以作為工業界從事作業系統相關領域研發工作的專業人員的參考書。

圖書目錄

序言一
序言二
前言
第一部分 作業系統基礎
第1章 作業系統概述 2
1.1 簡約但不簡單:從Hello World說起 2
1.2 什麼是作業系統 3
1.3 作業系統簡史 6
1.3.1 GM-NAA I/O:第一個(批處理)作業系統 6
1.3.2 OS/360:從專用走向通用 6
1.3.3 Multics/UNIX/Linux:分時與多任務 7
1.3.4 macOS/Windows:以人為本的人機互動 8
1.5 ChCore:一個簡單的實驗作業系統 11
參考文獻 12
第2章 硬體結構 13
2.1 CPU與指令集架構 14
2.1.1 指令集 14
2.1.2 特權級 15
2.1.3 暫存器 17
2.2 物理記憶體與CPU快取 17
2.2.1 快取結構 18
2.2.2 快取定址 19
2.3 設備與中斷 20
2.3.1 記憶體映射輸入輸出 20
2.3.2 輪詢與中斷 21
2.4 思考題 22
參考文獻 22
第3章 作業系統結構 23
3.1 作業系統的機制與策略 24
3.2 作業系統複雜度管理方法 25
3.3 作業系統核心架構 27
3.3.1 簡要結構 27
3.3.2 宏核心架構 28
3.3.3 微核心架構 30
3.3.4 外核架構 32
3.3.5 其他作業系統核心架構 34
3.4 作業系統框架結構 35
3.4.1 Android系統框架 35
3.4.2 ROS系統框架 37
3.5 思考題 39
參考文獻 40
第4章 記憶體管理 42
4.1 虛擬地址與物理地址 43
4.1.1 初識物理地址與虛擬地址 43
4.1.2 使用虛擬地址訪問物理記憶體 44
4.1.3 分段與分頁機制 44
4.2 基於分頁的虛擬記憶體 46
4.2.1 AArch64架構下的4級頁表 47
4.2.2 加速地址翻譯的重要硬體:TLB 49
4.2.3 換頁與缺頁異常 52
4.2.4 頁替換策略 54
4.2.5 工作集模型 57
4.3 虛擬記憶體功能 58
4.3.1 共享記憶體 58
4.3.2 寫時拷貝 58
4.3.3 記憶體去重 60
4.3.4 記憶體壓縮 60
4.3.5 大頁 61
4.4 物理記憶體分配與管理 62
4.4.1 目標與評價維度 62
4.4.2 夥伴系統 63
4.4.3 SLAB分配器 65
4.4.4 常用的空閒鍊表 66
4.4.5 物理記憶體與CPU快取 68
4.5 案例分析:ChCore記憶體管理機制 70
4.6 思考題 73
參考文獻 74
第5章 進程與執行緒 76
5.1 進程 76
5.1.1 進程的狀態 76
5.1.2 進程的記憶體空間布局 78
5.1.3 進程控制塊和上下文切換 79
5.2 案例分析:Linux的進程操作 80
5.2.1 進程的創建:fork 80
5.2.2 進程的執行:exec 84
5.2.3 進程管理 85
5.2.4 討論:fork過時了嗎 89
5.3 執行緒 92
5.3.1 多執行緒的地址空間布局 93
5.3.2 用戶態執行緒與核心態執行緒 93
5.3.3 執行緒控制塊與執行緒本地存儲 94
5.3.4 執行緒的基本接口:以POSIX執行緒庫為例 95
5.4 案例分析:ChCore的執行緒上下文 99
5.4.1 執行緒的上下文和TCB 99
5.4.2 ChCore中上下文切換的實現 100
5.5 纖程 102
5.5.1 對纖程的需求:一個簡單的例子 103
5.5.2 POSIX的纖程支持:ucontext 103
5.5.3 纖程的上下文切換 105
5.6 思考題 106
參考文獻 107
第6章 作業系統調度 108
6.1 計算機調度簡介 108
6.1.1 作業系統調度 110
6.1.2 調度指標 111
6.2 調度機制 113
6.2.1 長期、中期與短期調度 114
6.2.2 任務調度總覽 116
6.3 單核調度策略 117
6.3.1 經典調度 118
6.3.2 優先權調度 122
6.3.3 公平共享調度 127
6.3.4 實時調度 133
6.3.5 其他調度 138
6.4 多核調度策略 141
6.4.1 負載分擔 141
6.4.2 協同調度 142
6.4.3 兩級調度 144
6.4.4 負載追蹤與負載均衡 145
6.4.5 能耗感知調度 148
6.5 調度進階機制 151
6.5.1 處理器親和性 152
6.5.2 調度策略設定 153
6.6 案例分析:現代調度器 155
6.6.1 Linux調度器 155
6.6.2 macOS/iOS調度器 160
6.7 思考題 162
參考文獻 163
第7章 進程間通信 165
7.1 進程間通信基礎 165
7.1.1 一個簡單的進程間通信設計 166
7.1.2 數據傳遞 167
7.1.3 控制流轉移 169
7.1.4 單向和雙向 170
7.1.5 同步和異步 170
7.1.6 逾時機制 171
7.1.7 通信連線管理 172
7.1.8 許可權檢查 173
7.1.9 命名服務 174
7.2 宏核心進程間通信 175
7.2.1 管道進程間通信 175
7.2.2 System V訊息佇列 178
7.2.3 System V信號量 179
7.2.4 System V共享記憶體 180
7.2.5 信號進程間通信 181
7.2.6 套接字進程間通信 185
7.3 微核心進程間通信 186
7.3.1 Mach:早期的微核心進程間通信設計 186
7.3.2 L4:圍繞進程間通信最佳化而設計的微核心系統 188
7.3.3 LRPC:遷移執行緒模型 193
7.4 案例分析:Android Binder 195
7.4.1 背景 195
7.4.2 Binder IPC總覽 196
7.4.3 Binder IPC核心設計 196
7.4.4 匿名共享記憶體 199
7.5 案例分析:ChCore 進程間通信機制 201
7.6 思考題 203
參考文獻 203
第8章 同步原語 206
8.1 互斥鎖 209
8.1.1 臨界區問題 209
8.1.2 硬體實現:關閉中斷 211
8.1.3 軟體實現:皮特森算法 211
8.1.4 軟硬體協同:使用原子操作實現互斥鎖 213
8.2 條件變數 219
8.2.1 條件變數的使用 219
8.2.2 條件變數的實現 222
8.3 信號量 223
8.3.1 信號量的使用 224
8.3.2 信號量的實現 225
8.4 讀寫鎖 229
8.4.1 讀寫鎖的使用 229
8.4.2 讀寫鎖的實現 230
8.5 RCU 233
8.5.1 訂閱/發布機制 234
8.5.2 寬限期 236
8.6 管程 237
8.7 同步帶來的問題 239
8.7.1 死鎖 239
8.7.2 活鎖 245
8.7.3 優先權反轉 246
8.8 案例分析:Linux中的futex 249
8.9 案例分析:ChCore中的同步原語 251
8.10 思考題 252
參考文獻 254
第9章 檔案系統 256
9.1 基於inode的檔案系統 257
9.1.1 inode與檔案 258
9.1.2 檔案名稱與目錄 260
9.1.3 硬連結與符號連結 263
9.1.4 存儲布局 264
9.2 虛擬檔案系統 266
9.2.1 面向檔案系統的接口 266
9.2.2 面向應用程式的接口 270
9.2.3 頁快取、直接I/O與記憶體映射 277
9.2.4 多種檔案系統的組織和管理 280
9.2.5 偽檔案系統 282
9.3 其他檔案系統 284
9.3.1 FAT檔案系統 284
9.3.2 NTFS 288
9.3.3 FUSE與用戶態檔案系統 292
9.4 案例分析:ChCore檔案系統 294
9.4.1 ChCore的檔案系統架構 294
9.4.2 記憶體檔案系統 295
9.5 思考題 296
參考文獻 297
第10章 設備管理 299
10.1 計算機設備的連線和通信 300
10.1.1 設備的連線:匯流排 300
10.1.2 可程式I/O 301
10.1.3 高效數據傳輸:DMA 301
10.1.4 設備地址翻譯:IOMMU 302
10.2 設備的識別 303
10.2.1 設備樹 303
10.2.2 ACPI 304
10.3 設備的中斷處理 305
10.3.1 中斷控制器 305
10.3.2 中斷的基本概念 306
10.3.3 中斷處理:以Linux上下半部的機制為例 308
10.4 設備驅動與設備驅動模型 313
10.4.1 設備驅動 313
10.4.2 設備驅動模型 315
10.5 案例分析:Linux設備驅動模型 315
10.5.1 Linux的設備抽象 315
10.5.2 Linux的設備驅動模型 318
10.5.3 Linux驅動的動態管理 319
10.5.4 Linux的sysfs檔案系統 321
10.6 案例分析:L4設備驅動模型 322
10.7 案例分析:Linux的用戶態驅動框架 323
10.8 思考題 327
參考文獻 327
第11章 系統虛擬化 329
11.1 系統虛擬化技術概述 330
11.1.1 系統虛擬化及其組成部分 330
11.1.2 虛擬機監控器的類型 331
11.2 CPU虛擬化 332
11.2.1 下陷和模擬 333
11.2.2 可虛擬化架構與不可虛擬化架構 333
11.2.3 解釋執行 334
11.2.4 動態二進制翻譯 335
11.2.5 掃描和翻譯 336
11.2.6 半虛擬化技術 337
11.2.7 硬體虛擬化技術 338
11.2.8 小結 340
11.3 記憶體虛擬化 341
11.3.1 影子頁表機制 343
11.3.2 影子頁表的缺頁異常處理流程 345
11.3.3 直接頁表映射機制 345
11.3.4 兩階段地址翻譯機制 346
11.3.5 換頁和記憶體氣球機制 349
11.3.6 小結 351
11.4 I/O虛擬化 351
11.4.1 軟體模擬方法 352
11.4.2 半虛擬化方法 354
11.4.3 設備直通:IOMMU和SR-IOV 356
11.4.4 小結 359
11.5 中斷虛擬化 360
11.6 案例分析:QEMU/KVM 361
11.6.1 KVM API和一個簡單的虛擬機監控器 362
11.6.2 KVM與QEMU 364
11.6.3 KVM內部實現簡介 366
11.7 思考題 367
參考文獻 367
縮略語 369
線上章節一
第二部分 作業系統進階
第12章 多核與多處理器
第13章 檔案系統崩潰一致性
第14章 網路協定棧與系統
第15章 輕量級虛擬化
第16章 作業系統安全
第17章 作業系統調測
第18章 形式化證明
第三部分 ChCore課程實驗
第19章 實驗1:機器啟動
第20章 實驗2:記憶體管理
第21章 實驗3:用戶進程與異常處理
第22章 實驗4:多核處理
第23章 實驗5:檔案系統與Shell
第24章 實驗6:進階實踐

出版背景

作業系統作為信息產業之魂,是釋放硬體能力、構築套用生態的基礎。當前,各種新型硬體與套用模式不斷革新,對作業系統提出了新的機遇與挑戰。各個主流廠商,如華為、谷歌、微軟、阿里巴巴等,紛紛重兵投入到作業系統的研發中,這也對作業系統的人才培養提出了更高的要求。作業系統的復興也對教學、科研與產業實踐提出了新的要求。為了應對這些新的需求和挑戰,本書將以三個面向為導向,即面向經典的基礎理論與方法、面向國際前沿研究、面向最新的工業界實踐,試圖深入淺出地介紹作業系統的理論、架構、設計方法與具體實現,試圖幫助大家開展進一步研究或工業界實踐打下較為堅實的基礎。

作者簡介

陳海波
上海交通大學特聘教授、博導,並行與分散式系統研究所所長,領域作業系統教育部工程研究中心主任,國家傑出青年基金獲得者,ACM傑出科學家,CCF傑出會員與傑出演講者。主要研究領域為作業系統和系統安全。曾獲教育部技術發明一等獎(第一完成人)、全國優秀博士學位論文獎、CCF青年科學家獎。目前擔任ACM SIGOPS ChinaSys主席、CCF系統軟體專委會副主任、ACM旗艦雜誌Communications of the ACM中國首位編委與Special Sections領域共同主席、ACM Transactions on Storage編委。曾任ACM SOSP 2017年大會共同主席、ACM CCS 2018系統安全領域主席、ACM SIGSAC獎勵委員會委員。研究工作還獲得了華為最高個人貢獻獎、金牌團隊獎。按照csrankings.org的統計,其近5年(2015~2019)在作業系統領域高水平會議(SOSP/OSDI、EuroSys、USENIX ATC和FAST)上發表的論文數居世界第一。
夏虞斌
上海交通大學副教授、博導,CCF高級會員。主要研究領域為作業系統、體系結構和系統安全,曾任OSDI、EuroSys等多個國際會議的程式委員會委員。領導團隊研發的安全作業系統T6獲得2015年“挑戰杯”全國大學生課外學術科技作品競賽和中國大學生創業計畫競賽特等獎、2019年中國“網際網路+”大學生創新創業大賽全國銀獎,並已實現產業化,實際部署設備數量過億;基於RISC-V平台研發的可信執行環境軟硬體系統“蓬萊”現已開源。

相關詞條

熱門詞條

聯絡我們