從0手寫x86計算機操作系統

李述銅

  • 出版商: 清華大學
  • 出版日期: 2025-09-01
  • 售價: $594
  • 語言: 簡體中文
  • ISBN: 7302702519
  • ISBN-13: 9787302702511
  • 相關分類: Operating-system
  • 下單後立即進貨 (約4週~6週)

  • 從0手寫x86計算機操作系統-preview-1
  • 從0手寫x86計算機操作系統-preview-2
  • 從0手寫x86計算機操作系統-preview-3
從0手寫x86計算機操作系統-preview-1

商品描述

"本書是一本為渴望深入理解計算機操作系統設計與實現的讀者量身打造的實踐指南。全書共18章,涵蓋了諸多關鍵主題, 包括如何啟動操作系統,管理內存和異常,創建進程並實現進程的協作,開發設備驅動程序,構建文件系統從而讀寫文件等內容,並以此為基礎構建出可供用戶程序使用的系統調用接口。通過這些接口,創建出小型的命令行解析器,它可根據用戶輸入的命令動態加載硬盤上的程序執行。 為降低學習難度,盡可能地減少匯編代碼的使用,並且向讀者提供了一套簡單易用的開發環境。通過翔實的原理分析和示例代碼,讀者能夠清楚地看到一個小型的操作系統是如何一步步構建出來的。通過本書,讀者不僅能夠掌握操作系統的設計原理,還能親自動手實踐,構建屬於自己的操作系統。 無論你是計算機專業的學生,還是希望擴展技術深度的開發者,本書都能為你提供豐富的學習資源和實踐指導。通過本書,你將不僅僅了解操作系統“是什麼”,更會明白它“為什麼這麼做”以及“如何實現”。"

作者簡介

"李述銅 畢業於四川大學,嵌入式系統工程師,長期從事嵌入式軟件與底層系統開發工作,具備紮實的底層原理功底與豐富的實踐經驗。多年來致力於將復雜的技術講解結構化、通俗化,創作了一系列深入淺出的技術視頻與實戰課程,如《從0手寫嵌入式操作系統》《從0手寫TCP/IP協議棧》等。累計學員超過5萬人,收獲業內廣泛好評,幫助眾多初學者和工程師建立系統性的嵌入式思維。"

目錄大綱

目錄

第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本章小結

最後瀏覽商品 (1)