一個64位操作系統(tǒng)的設計與實現(xiàn)
定 價:139 元
叢書名:C
- 作者:田宇
- 出版時間:2018/5/1
- ISBN:9787115475251
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316.85
- 頁碼:680
- 紙張:
- 版次:01
- 開本:16開
本書講述了一個64位多核操作系統(tǒng)的自制過程。此操作系統(tǒng)自制過程是先從虛擬平臺構(gòu)筑起一個基礎框架,隨后再將基礎框架移植到物理平臺中進行升級、完善與優(yōu)化。為了凸顯64位多核操作系統(tǒng)的特點,物理平臺選用搭載著Intel Core-i7處理器的筆記本電腦。與此同時,本書還將Linux內(nèi)核的源碼精髓、諸多官方白皮書以及多款常用協(xié)議濃縮于其中,可使讀者在讀完本書后能夠?qū)W以致用,進而達到理論聯(lián)系實際的目的。
全書共分為16章。第1~2章講述了操作系統(tǒng)的基礎概念和開發(fā)操作系統(tǒng)需要掌握的知識;第3~5章在虛擬平臺下快速構(gòu)建起一個操作系統(tǒng)模型;第6~16章將在物理平臺下對操作系統(tǒng)模型做進一步升級、優(yōu)化和完善。
本書既適合在校學習理論知識的初學者,又適合在職工作的軟件工程師或有一定基礎的業(yè)余愛好者。
1.基于Intel Core i7處理器的64位多核操作系統(tǒng)
2.引入諸多Linux內(nèi)核的設計精髓
3.既可在Bochs虛擬機中執(zhí)行,又可通過U盤引導運行于筆記本電腦
田宇 Linux內(nèi)核愛好者,曾在多家大中型軟件公司從事軟件開發(fā)工作,參與過多款高端嵌入式產(chǎn)品的開發(fā)研制,主要負責Linux內(nèi)核和驅(qū)動的研發(fā),以及開源操作系統(tǒng)環(huán)境的深度定制。
第 一部分 操作系統(tǒng)相關知識介紹及環(huán)境搭建
第 1章 操作系統(tǒng)概述 4
1.1 什么是操作系統(tǒng) 4
1.2 操作系統(tǒng)的組成結(jié)構(gòu) 4
1.3 編寫操作系統(tǒng)需要的知識 7
1.4 本書操作系統(tǒng)簡介 8
第 2章 環(huán)境搭建及基礎知識 9
2.1 虛擬機及開發(fā)系統(tǒng)平臺介紹 9
2.1.1 VMware的安裝 9
2.1.2 編譯環(huán)境CentOS 6 10
2.1.3 Bochs虛擬機 11
2.2 匯編語言 14
2.2.1 AT&T匯編語言格式與Intel匯編語言格式 14
2.2.2 NASM編譯器 16
2.2.3 使用匯編語言調(diào)用C語言的函數(shù) 16
2.3 C語言 19
2.3.1 GNU C內(nèi)嵌匯編語言 20
2.3.2 GNU C語言對標準C語言的擴展 23
第二部分 初級篇
第3章 BootLoader引導啟動程序 30
3.1 Boot引導程序 30
3.1.1 BIOS引導原理 31
3.1.2 寫一個Boot引導程序 32
3.1.3 創(chuàng)建虛擬軟盤鏡像文件 36
3.1.4 在Bochs上運行我們的Boot程序 38
3.1.5 加載Loader到內(nèi)存 40
3.1.6 從Boot跳轉(zhuǎn)到Loader程序 52
3.2 Loader引導加載程序 54
3.2.1 Loader原理 54
3.2.2 寫一個Loader程序 55
3.2.3 從實模式進入保護模式再到IA-32e模式 65
3.2.4 從Loader跳轉(zhuǎn)到內(nèi)核程序 75
第4章 內(nèi)核層 78
4.1 內(nèi)核執(zhí)行頭程序 78
4.1.1 什么是內(nèi)核執(zhí)行頭程序 78
4.1.2 寫一個內(nèi)核執(zhí)行頭程序 79
4.2 內(nèi)核主程序 83
4.3 屏幕顯示 85
4.3.1 在屏幕上顯示色彩 86
4.3.2 在屏幕上顯示log 88
4.4 系統(tǒng)異!100
4.4.1 異常的分類 101
4.4.2 系統(tǒng)異常處理(一) 102
4.4.3 系統(tǒng)異常處理(二) 109
4.5 初級內(nèi)存管理單元 121
4.5.1 獲得物理內(nèi)存信息 121
4.5.2 計算可用物理內(nèi)存頁數(shù) 123
4.5.3 分配可用物理內(nèi)存頁 126
4.6 中斷處理 142
4.6.1 8259A PIC 142
4.6.2 觸發(fā)中斷 148
4.7 鍵盤驅(qū)動 152
4.7.1 簡述鍵盤功能 152
4.7.2 實現(xiàn)鍵盤中斷捕獲函數(shù) 154
4.8 進程管理 155
4.8.1 簡述進程管理模塊 155
4.8.2 PCB 156
4.8.3 init進程 163
第5章 應用層 171
5.1 跳轉(zhuǎn)到應用層 171
5.2 實現(xiàn)系統(tǒng)調(diào)用API 180
5.3 實現(xiàn)一個系統(tǒng)調(diào)用處理函數(shù) 185
第三部分 高級篇
第6章 處理器體系結(jié)構(gòu) 190
6.1 基礎功能與新特性 190
6.1.1 運行模式 190
6.1.2 通用寄存器 191
6.1.3 CPUID指令 192
6.1.4 標志寄存器EFLAGS 193
6.1.5 控制寄存器 195
6.1.6 MSR寄存器組 199
6.2 地址空間 199
6.2.1 虛擬地址 200
6.2.2 物理地址 200
6.3 實模式 200
6.3.1 實模式概述 201
6.3.2 實模式的段尋址方式 201
6.3.3 實模式的中斷向量表 201
6.4 保護模式 202
6.4.1 保護模式概述 202
6.4.2 保護模式的段管理機制 206
6.4.3 保護模式的中斷/異常處理機制 214
6.4.4 保護模式的頁管理機制 217
6.4.5 保護模式的地址轉(zhuǎn)換過程 224
6.5 IA-32e模式 226
6.5.1 IA-32e模式概述 226
6.5.2 IA-32e模式的段管理機制 228
6.5.3 IA-32e模式的中斷/異常處理機制 234
6.5.4 IA-32e模式的頁管理機制 234
6.5.5 IA-32e模式的地址轉(zhuǎn)換過程 237
第7章 完善BootLoader功能 238
7.1 實模式的尋址瓶頸 238
7.1.1 錯綜復雜的1 MB物理地址空間 238
7.1.2 突破1 MB物理內(nèi)存瓶頸 239
7.1.3 實模式下的4 GB線性地址尋址 240
7.2 獲取物理地址空間信息 240
7.3 操作系統(tǒng)引導加載階段的內(nèi)存空間劃分 242
7.4 U盤啟動 244
7.4.1 USB-FDD、USB-ZIP和USB-HDD啟動模式的簡介 244
7.4.2 將Boot引導程序移植到U盤中啟動 251
7.5 在物理平臺上啟動操作系統(tǒng) 255
7.6 細說VBE功能的實現(xiàn) 261
7.6.1 VBE規(guī)范概述 261
7.6.2 獲取物理平臺的VBE相關信息 272
7.6.3 設置顯示模式 279
第8章 內(nèi)核主程序 282
8.1 內(nèi)核主程序功能概述 282
8.2 操作系統(tǒng)的Makefile編譯腳本 282
8.3 操作系統(tǒng)的kernel.lds鏈接腳本 286
8.4 操作系統(tǒng)的線性地址空間劃分 289
8.5 獲得處理器的固件信息 290
第9章 高級內(nèi)存管理單元 297
9.1 SLAB內(nèi)存池 297
9.1.1 SLAB內(nèi)存池概述及相關結(jié)構(gòu)體定義 298
9.1.2 SLAB內(nèi)存池的創(chuàng)建與銷毀 299
9.1.3 SLAB內(nèi)存池中對象的分配與回收 302
9.2 基于SLAB內(nèi)存池技術(shù)的通用內(nèi)存管理單元 308
9.2.1 通用內(nèi)存管理單元的初始化函數(shù)slab_init 308
9.2.2 通用內(nèi)存的分配函數(shù)kmalloc 312
9.2.3 通用內(nèi)存的回收函數(shù)kfree 317
9.3 調(diào)整物理頁管理功能 321
9.3.1 內(nèi)存管理單元結(jié)構(gòu)及相關函數(shù)調(diào)整 321
9.3.2 調(diào)整alloc_pages函數(shù) 323
9.3.3 創(chuàng)建free_pages函數(shù) 327
9.4 頁表初始化 330
9.4.1 頁表重新初始化 331
9.4.2 VBE幀緩存區(qū)地址重映射 334
第 10章 高級中斷處理單元 337
10.1 APIC概述 337
10.2 Local APIC 338
10.2.1 Local APIC的基礎信息 338
10.2.2 Local APIC整體結(jié)構(gòu)及各功能描述 344
10.3 I/O APIC 352
10.3.1 I/O APIC控制器的基礎信息 353
10.3.2 I/O APIC整體結(jié)構(gòu)及各引腳功能 356
10.4 中斷控制器的模式選擇與初始化 358
10.4.1 中斷模式 359
10.4.2 Local APIC控制器的初始化 362
10.4.3 I/O APIC控制器的初始化 368
10.5 高級中斷處理功能 375
10.5.1 Linux的中斷處理機制概述 375
10.5.2 實現(xiàn)中斷上半部處理功能 377
第 11章 設備驅(qū)動程序 382
11.1 鍵盤和鼠標驅(qū)動程序 382
11.1.1 鍵盤和鼠標控制器 382
11.1.2 完善鍵盤驅(qū)動 389
11.1.3 實現(xiàn)鼠標驅(qū)動 398
11.2 硬盤驅(qū)動程序 403
11.2.1 硬盤設備初探 403
11.2.2 完善硬盤驅(qū)動程序 418
第 12章 進程管理 428
12.1 進程管理單元功能概述 428
12.2 多核處理器 429
12.2.1 超線程技術(shù)與多核技術(shù)概述 429
12.2.2 多核處理器間的IPI通信機制介紹 434
12.2.3 讓我們的系統(tǒng)支持多核 437
12.3 進程調(diào)度器 464
12.3.1 Linux進程調(diào)度器簡介 465
12.3.2 墻上時鐘與定時器 468
12.3.3 內(nèi)核定時器 479
12.3.4 實現(xiàn)進程調(diào)度功能 486
12.4 內(nèi)核同步方法 498
12.4.1 原子變量 498
12.4.2 信號量 499
12.4.3 完善自旋鎖 501
12.5 完善進程管理單元 503
12.5.1 完善PCB與處理器運行環(huán)境 503
12.5.2 完善進程調(diào)度器和AP處理器引導程序 508
12.5.3 關于線程 514
第 13章 文件系統(tǒng) 516
13.1 文件系統(tǒng)概述 516
13.2 解析FAT32文件系統(tǒng) 517
13.2.1 FAT32文件系統(tǒng)簡介 517
13.2.2 通過實例深入解析FAT32文件系統(tǒng) 523
13.2.3 實現(xiàn)基于路徑名的文件系統(tǒng)檢索功能 532
13.3 虛擬文件系統(tǒng) 552
13.3.1 Linux VFS簡介 552
13.3.2 實現(xiàn)VFS 554
第 14章 系統(tǒng)調(diào)用API庫 566
14.1 系統(tǒng)調(diào)用API結(jié)構(gòu) 566
14.2 基于POSIX規(guī)范實現(xiàn)系統(tǒng)調(diào)用API庫 567
14.2.1 POSIX規(guī)范下的系統(tǒng)調(diào)用API簡介 567
14.2.2 升級系統(tǒng)調(diào)用模塊 568
14.2.3 基礎文件操作的系統(tǒng)調(diào)用API實現(xiàn) 574
14.2.4 進程創(chuàng)建的系統(tǒng)調(diào)用API實現(xiàn) 599
14.2.5 內(nèi)存管理的基礎系統(tǒng)調(diào)用API實現(xiàn) 618
第 15章 Shell命令解析器及命令 626
15.1 Shell命令解析器 626
15.1.1 Shell命令解析器概述 626
15.1.2 實現(xiàn)Shell命令解析器 627
15.2 基礎命令 641
15.2.1 重啟命令reboot 641
15.2.2 工作目錄切換命令cd 642
15.2.3 目錄內(nèi)容顯示命令ls 645
15.2.4 文件查看命令cat 654
15.2.5 程序執(zhí)行命令exec 655
第 16章 一個彩蛋 665
附錄 術(shù)語表 676
參考資料 679