從0手寫x86計算機操作系統
李述銅
- 出版商: 清華大學
- 出版日期: 2025-09-01
- 售價: $594
- 語言: 簡體中文
- ISBN: 7302702519
- ISBN-13: 9787302702511
-
相關分類:
Operating-system
下單後立即進貨 (約4週~6週)
商品描述
作者簡介
目錄大綱
目錄
第1章設計目標
1.1運行環境
1.2設計目標
1.2.1系統功能
1.2.2設計成果
1.2.3系統結構
1.3本章小結
第2章配置開發環境
2.1考慮因素
2.2所需工具
2.3安裝開發工具
2.3.1為Windows安裝開發工具
2.3.2為Linux安裝開發工具
2.4配置VSCode
2.5整體測試
2.6本章小結
第3章啟動操作系統
3.1設計目標
3.2加載操作系統到內存
3.2.1實模式
3.2.2啟動流程
3.2.3最小的操作系統
3.2.4加載操作系統的其余部分
3.3檢查系統內存大小
3.4進入保護模式
3.4.1保護模式
3.4.2分段機制
3.4.3段描述符
3.4.4段描述符表
3.4.5進入保護模式
3.5讓內核打印啟動信息
3.5.1解析可變參數
3.5.2格式化生成字符串
3.5.3打印輸出
3.6本章小結
第4章內存管理
4.1管理物理內存
4.1.1選擇內存區域
4.1.2定義位圖結構
4.1.3實現相關接口
4.1.4開關中斷保護
4.1.5初始化內存管理
4.2開啟分頁機制
4.2.1工作原理
4.2.2創建頁表並啟用
4.3頁的分配與釋放
4.3.1開啟效果
4.3.2分配虛擬頁
4.3.3釋放虛擬頁
4.4測試效果
4.4.1內存映射分析
4.4.2權限分析
4.5本章小結
第5章異常管理
5.1異常簡介
5.1.1什麼是異常
5.1.2處理流程
5.2捕獲除0異常
5.2.1異常類型
5.2.2初始化異常系統
5.3解析異常棧幀信息
5.3.1壓棧過程
5.3.2手動壓棧
5.3.3解析壓棧內容
5.4解析錯誤碼
5.4.1選擇子相關錯誤碼
5.4.2頁異常錯誤碼
5.4.3運行效果
5.5本章小結
第6章實現多進程運行
6.1實現內核鏈表
6.1.1定義結點
6.1.2定義鏈表
6.1.3鏈表操作
6.2創建進程
6.2.1進程簡介
6.2.2進程與TSS
6.2.3創建第一個進程
6.3實現進程切換
6.3.1進程切換效果
6.3.2sys_yield實現
6.3.3配置TSS
6.3.4深入分析切換過程
6.4讓進程能夠睡眠
6.4.1睡眠效果
6.4.2讓進程進入睡眠
6.4.3創建空閑進程
6.4.4讓進程從睡眠中喚醒
6.5進程調度算法
6.5.1問題現象
6.5.2時間片輪轉
6.5.3調度算法的實現
6.5.4運行效果
6.6本章小結
第7章進程的同步與互斥
7.1互斥鎖
7.1.1實現原理
7.1.2實現互斥鎖
7.1.3應用示例
7.2信號量
7.2.1實現原理
7.2.2實現信號量
7.2.3應用示例
7.3本章小結
第8章屏幕顯示與鍵盤讀取
8.1屏幕顯示
8.1.1顯示原理
8.1.2驅動程序實現
8.2讀取鍵盤
8.2.1實現原理
8.2.2驅動程序實現
8.3構造tty
8.3.1實現原理
8.3.2設備緩存
8.3.3驅動程序實現
8.3.4運行效果
8.4改進日誌輸出
8.5本章小結
第9章讀寫硬盤
9.1工作原理
9.1.1硬盤連接
9.1.2邏輯結構
9.1.3LBA尋址
9.1.4分區表
9.2驅動程序實現
9.2.1基本交互接口
9.2.2硬盤初始化
9.2.3中斷配置
9.2.4讀寫硬盤
9.2.5其他接口
9.3運行效果
9.4互斥問題
9.5本章小結
第10章統一管理設備
10.1實現原理
10.1.1問題分析
10.1.2實現原理
10.2接口層實現
10.2.1定義設備結構
10.2.2實現轉換層
10.2.3導入設備驅動
10.3運行效果
10.4修改日誌輸出
10.5本章小結
第11章讀寫設備文件
11.1實現原理
11.1.1設備命名
11.1.2轉換實現
11.2設計實現
11.2.1定義文件結構
11.2.2接口實現
11.2.3效果分析
11.3運行效果
11.4本章小結
第12章讀寫普通文件
12.1基本概念
12.1.1文件
12.1.2文件系統
12.2FAT文件系統
12.2.1鏈式存儲
12.2.2存儲結構
12.3接口實現
12.3.1掛載文件系統
12.3.2遍歷目錄
12.3.3刪除文件
12.3.4打開和關閉文件
12.3.5讀取和寫入文件
12.4多級目錄
12.5本章小結
第13章文件系統的實現
13.1讓進程管理自己的文件
13.1.1實現原理
13.1.2具體實現
13.2提供統一的文件訪問接口
13.2.1實現原理
13.2.2具體實現
13.3運行效果
13.4本章小結
第14章從硬盤加載程序執行
14.1構建應用程序
14.1.1構建流程
14.1.2創建工程
14.1.3構建結果
14.2加載應用程序
14.2.1進程地址空間
14.2.2ELF文件格式
14.2.3加載過程實現
14.2.4運行效果
14.3向進程傳遞參數
14.3.1參數傳遞原理
14.3.2參數傳遞實現
14.3.3運行效果
14.4本章小結
第15章實現系統調用
15.1基本概念
15.1.1系統調用
15.1.2用戶態與內核態
15.2特權級設置
15.2.1特權級劃分
15.2.2特權級機制
15.2.3特權級配置
15.2.4保護機制
15.3實現原理
15.4添加msleep()
15.4.1構造系統調用函數
15.4.2執行Trap指令
15.4.3執行系統調用
15.4.4運行效果
15.5添加更多系統調用
15.5.1添加方法
15.5.2運行效果
15.6本章小結
第16章支持內存分配和printf()打印
16.1Newlib的底層依賴
16.1.1什麼是C語言標準庫
16.1.2樁函數
16.2支持動態內存分配
16.2.1基本原理
16.2.2實現sbrk()系統調用
16.2.3運行效果
16.3支持printf()打印
16.3.1基本原理
16.3.2具體實現
16.3.3運行效果
16.4本章小結
第17章實現命令行解釋器
17.1shell的功能
17.2實現原理
17.3具體實現
17.3.1打開文件描述符
17.3.2讀取命令行
17.3.3解析命令
17.3.4判斷是否是內置命令
17.3.5執行內置命令
17.4運行效果
17.5本章小結
第18章進程的創建與退出
18.1創建測試工程
18.1.1創建工程結構
18.1.2編譯結果分析
18.2利用fork()創建子進程
18.2.1fork()簡介
18.2.2實現原理
18.2.3實現fork()系統調用
18.2.4實現getpid()系統調用
18.2.5運行效果
18.3利用execve()加載可執行程序
18.3.1execve簡介
18.3.2實現原理
18.3.3實現execve()系統調用
18.3.4實現sys_execve()
18.3.5execve()執行流程
18.3.6運行效果
18.4進程退出
18.4.1相關系統調用
18.4.2實現_exit()系統調用
18.4.3實現wait()系統調用
18.4.4設置root_task
18.4.5運行效果
18.5支持加載程序運行
18.6進程異常退出
18.7多個shell同時運行
18.8本章小結