-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

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

( 簡體 字)
作者:陳海波 夏虞斌 等著類別:1. -> 作業系統 -> 綜合
譯者:
出版社:機械工業出版社現代操作系統:原理與實現 3dWoo書號: 53726
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:10/1/2020
頁數:370
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
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.4 作業系統介面 9
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:進階實踐
序: