|
|
|
|
|
|
|
|
ISBN |
9787111732884 |
定价 |
RMB99.00 |
售价 |
RM108.90 |
优惠价 |
RM76.23 * (-30%)
|
作者 |
王柏生,王晟寒
|
出版社 |
機械工業出版社
|
出版日期 |
2023-09-01 |
装订 |
平裝. 無. 387 页. 26. |
库存量 |
海外库存 下单时可选择“空运”或“海运”(空运和海运需独立下单)。空运费每本书/CD是RM28.00。 空运需时8-11个工作天,海运需时约30个工作天。 (以上预计时间不包括出版社调货的时间以及尚未出版的预购商品) |
|
我要订购 有现货时通知我 |
|
放入下次购买清单 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
購買中國簡體書籍請注意:
1. 因裝幀品質及貨運條件未臻完善,中國簡體書可能有出現磨痕、凹痕、折痕等問題,故簡體字館除封面破損、內頁脫落、缺頁等較嚴重的狀態外,其餘所有商品將正常出貨。
|
|
|
|
|
|
|
|
|
目錄
前 言
第1章 計算機基礎 1
1.1 認識電 1
1.2 信息表示 5
1.2.1 二進位 5
1.2.2 十六進位 6
1.3 計算 7
1.3.1 邏輯運算 8
1.3.2 邏輯門 8
1.3.3 加法器 10
1.4 記憶體 12
1.4.1 物理實現 12
1.4.2 數學抽象 16
1.5 匯流排 17
1.6 寄存器 20
1.7 程式 22
1.8 外存 26
1.9 外設及介面 27
1.9.1 I/O位址空間 28
1.9.2 記憶體映射I/O 29
1.10 位址空間 30
1.11 數學模型到物理世界 31
第2章 認識Linux 34
2.1 什麼是作業系統 34
2.2 檔案系統 35
2.3 終端 37
2.4 shell 39
2.5 Linux常用命令 40
2.6 ANSI轉義序列 43
2.7 編輯器 45
2.8 準備“物理”計算機 47
第3章 機器語言程式設計 49
3.1 程式及指令 49
3.2 補數 50
3.3 ASCII碼 52
3.4 串口 53
3.5 “向串口寫字元A”的程式流程 55
3.6 寫外設指令 55
3.7 準備源操作數 57
3.8 準備目的操作數 58
3.9 跳轉指令 59
3.10 創建程式檔 60
3.11 程式執行過程 61
3.12 使用kvmtool運行程式 69
第4章 組合語言程式設計 71
4.1 初識組合語言 71
4.2 段及段寄存器 72
4.3 指令指標寄存器 74
4.4 通用寄存器 75
4.5 標誌寄存器 76
4.6 彙編指令格式 78
4.7 第一個組合語言程式 78
4.7.1 彙編和連結 79
4.7.2 運行 80
4.7.3 顯式設置操作數的段寄存器 83
4.7.4 虛擬指令.code16 85
4.8 構建工具Make 85
4.9 操作數定址 86
4.9.1 立即數定址 87
4.9.2 直接定址 88
4.9.3 ModR/M定址 89
4.9.4 SIB定址 94
4.9.5 SIB + disp定址 98
4.10 程式運行流程控制 101
4.10.1 選擇 101
4.10.2 迴圈 102
4.11 棧 103
4.12 函數及x86調用約定 107
4.12.1 call和ret指令 108
4.12.2 棧幀 110
4.12.3 多模組及符號可見性 113
4.12.4 參數傳遞 114
4.12.5 區域變數 116
4.12.6 返回值及參數清理 118
4.12.7 寄存器保存和恢復 119
4.13 連結 122
4.13.1 目的檔案合併 123
4.13.2 符號解析 125
4.13.3 符號的可見性 128
第5章 C語言程式設計 129
5.1 基本語法 130
5.1.1 詞法元素 130
5.1.2 運算式 131
5.1.3 聲明 132
5.1.4 語句 133
5.1.5 識別字 135
5.1.6 物件的存儲類別 138
5.1.7 標頭檔 138
5.1.8 預處理指令 139
5.2 C語言入口 141
5.3 第一個C程式 142
5.4 從C語言到機器語言 143
5.5 變數 145
5.5.1 變數類型 146
5.5.2 區域變數 147
5.5.3 全域變數 150
5.5.4 全域變數的連結性 151
5.5.5 靜態區域變數 152
5.5.6 變數類型轉換 154
5.5.7 溢出 155
5.6 運算 157
5.6.1 算數運算 157
5.6.2 遞增和遞減 158
5.6.3 關係運算 159
5.6.4 邏輯運算 161
5.6.5 位運算 163
5.6.6 賦值運算 164
5.6.7 運算的優先順序和結合性 165
5.7 程式運行流程控制 166
5.7.1 選擇 166
5.7.2 迴圈 168
5.8 數組 172
5.9 結構體 175
5.9.1 基本語法 175
5.9.2 記憶體佈局 176
5.9.3 位域 179
5.10 指針 180
5.10.1 基本語法 181
5.10.2 指向結構體的指標 183
5.10.3 指針的+/-運算 185
5.10.4 雙指針 186
5.10.5 void指針 188
5.10.6 空指針 189
5.11 函數 189
5.11.1 基本語法 189
5.11.2 參數的值傳遞和指針傳遞 191
5.11.3 const參數 195
5.11.4 函數指針 195
5.12 內聯彙編 197
第6章 32位引導過程 200
6.1 真實模式 200
6.2 保護模式 201
6.3 內核映射組成及佈局 203
6.3.1 真實模式位址空間 203
6.3.2 內核映射的佈局 205
6.3.3 內核映射檔組織 206
6.4 創建保護模式的段描述符 207
6.4.1 段描述符格式 207
6.4.2 保護模式的內核程式碼片段描述符 208
6.4.3 保護模式的內核數據段描述符 210
6.4.4 創建保護模式的段描述符表 210
6.5 告知處理器段描述符表位址 211
6.6 開啟處理器保護模式 212
6.7 跳轉到內核保護模式部分 213
6.7.1 準備保護模式部分 213
6.7.2 跳轉到保護模式部分 214
6.8 編譯及創建內核映射檔 215
6.8.1 編譯內核 215
6.8.2 組裝內核映射檔 217
6.9 使用Make構建內核 220
第7章 64位引導過程 222
7.1 記憶體分頁 222
7.1.1 為什麼要分頁 222
7.1.2 分頁模式下的位址翻譯過程 224
7.1.3 程式的虛擬位址空間 225
7.1.4 分頁模式下的定址 225
7.1.5 頁表 226
7.2 64位元模式下程式的虛擬位址空間 228
7.3 創建64位元模式的臨時段描述符表 229
7.3.1 程式碼片段 230
7.3.2 數據段 231
7.3.3 為64位元模式創建臨時段描述符表 231
7.4 建立內核映射的虛擬位址到物理位址的映射 233
7.4.1 建立四級頁表映射 234
7.4.2 建立三級頁表映射 235
7.4.3 建立二級頁表映射 236
7.4.4 建立一級頁表映射 239
7.5 建立恒等映射 240
7.6 切入64位元模式 244
7.6.1 使能PAE 244
7.6.2 設置CR3指向頁表 244
7.6.3 使能64位元模式 245
7.6.4 開啟分頁 245
7.6.5 跳轉到64位元部分 246
7.7 走進內核64位元部分 248
7.7.1 創建64位元模式段描述符表 248
7.7.2 轉換到內核位址空間 251
7.7.3 構建內核64位元部分 254
第8章 記憶體管理 258
8.1 獲取記憶體信息 258
8.1.1 BIOS簡介 258
8.1.2 讀取記憶體信息 260
8.1.3 E820的C數據結構表示 262
8.1.4 計算實體記憶體大小 263
8.1.5 print的實現 264
8.1.6 使用Make內置函數提取文件 266
8.1.7 創建Make中的文件依賴關係 267
8.2 頁面管理 269
8.2.1 劃分頁面 269
8.2.2 為內核映射保留頁面 270
8.2.3 分配頁面 271
8.2.4 歸還頁面 272
8.3 映射實體記憶體 272
8.3.1 線性映射 274
8.3.2 第1階段映射 275
8.3.3 第2階段映射 278
8.4 區塊管理 281
8.4.1 塊管理數據組織 281
8.4.2 分配區塊 284
8.4.3 釋放區塊 289
第9章 進程 292
9.1 程式運行環境 292
9.2 創建應用程式 293
9.3 創建任務結構體 295
9.4 建立進程位址映射 297
9.4.1 內核空間映射 298
9.4.2 用戶空間映射 299
9.5 創建進程任務狀態段及內核棧 300
9.5.1 準備任務狀態段及內核棧 302
9.5.2 創建任務狀態段的段描述符 304
9.5.3 設置任務寄存器 307
9.6 偽造中斷現場 307
9.7 設置CR3指向進程頁表 310
9.8 進入用戶空間 310
9.9 I/O埠存取權限控制 311
第10章 中斷和異常 313
10.1 中斷及其處理過程 313
10.1.1 可程式設計中斷控制器8259A 314
10.1.2 進階可程式中斷控制卡APIC 317
10.1.3 MSI 317
10.2 初始化8259A 318
10.3 組織中斷描述符表 321
10.3.1 初始化中斷描述符表 322
10.3.2 設置中斷寄存器 324
10.4 時鐘中斷 325
10.4.1 時鐘中斷處理函數 325
10.4.2 設置時鐘中斷描述符 327
10.4.3 程式設計時鐘晶片8254 327
10.4.4 開啟中斷 329
10.4.5 現場保存和恢復 329
10.5 缺頁異常 334
第11章 進程調度 338
11.1 任務狀態 338
11.2 創建進程 339
11.3 空閒任務 341
11.4 任務調度 342
11.5 任務切換 345
第12章 系統調用 349
12.1 系統調用工作機制 349
12.2 內核系統調用入口 351
12.3 設置MSR寄存器 354
12.4 實現系統調用sleep 357
12.5 C庫 360
12.6 應用調用sleep掛起 362
第13章 進程間通信 364
13.1 共用記憶體原理 364
13.2 內核共用記憶體實現 366
13.3 C庫實現共用記憶體介面 368
13.4 應用使用共用記憶體通信 368
第14章 顯示及輸入 370
14.1 圖形處理器 370
14.2 文字模式和圖形模式 371
14.3 獲取模式信息 373
14.4 將framebuffer映射到用戶空間 374
14.5 應用獲取模式信息 376
14.6 設計字體 377
14.7 圖形庫 379
14.8 應用繪製 383
14.9 鍵盤輸入 384 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
王柏生
資深作業系統技術專家,北京市科學技術進步獎一等獎獲得者。有20餘年作業系統研發經驗,現任百度主任架構師,曾就職於中國科學院軟體研究所、紅旗Linux,一直從事作業系統相關領域的研發工作,在作業系統領域有深厚積累。著有《深度探索Linux系統虛擬化》《深度探索Linux作業系統》等暢銷書。
王晟寒
對計算機技術有著濃厚的興趣,9歲開始跟隨爸爸學習編寫作業系統,在爸爸的指導下,自己動手完成了本書作業系統的編寫。5歲開始學習小提琴,現為學校交響樂團成員。業餘時間熱愛閱讀,喜歡游泳、籃球等體育運動。
|
|
|
|
|
|
|
|
|
|
|
|