從零開始寫LINUX內核:一書學透核心原理與實現 版權信息
- ISBN:9787111766445
- 條形碼:9787111766445 ; 978-7-111-76644-5
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
從零開始寫LINUX內核:一書學透核心原理與實現 本書特色
1)知名編譯與系統專家海納撰寫,將沉淀20余年的Linux系統研習所得傾注書中
2)打通“古早”工具鏈障礙,讓系統實現得以復現,各個模塊環環相扣,讓人欲罷不能
3)用不到10000行代碼,從零實現“小而精”的Linux 0.12操作系統,涵蓋基礎知識、關鍵Linux內核模塊以及文件系統
4)帶你穿透層層迷霧,窺見繁復的Linux系統設計的絢麗“天光”
從零開始寫LINUX內核:一書學透核心原理與實現 內容簡介
本書由知名編譯與操作系統專家海納撰寫,將沉淀20余年的Linux系統研究所得傾注書中。本書用不到1萬行代碼復現了Linux 0.12內核,打通了“古早”工具鏈障礙,模塊實現環環相扣,帶你穿透“迷霧”,窺見Linux系統設計的絢麗“天光”。
本書共8章,從邏輯上分為四部分。**部分(第1和2章)是基礎知識,介紹開發內核所需的基礎知識,包括開發環境和調試環境的搭建,以及i386保護模式等。第二部分(第3~6章)是核心模塊,逐步實現進程、中斷、系統調用、內存管理、字符設備驅動和塊設備驅動等模塊。第三部分(第7章)是文件系統,涵蓋Minix文件系統、管理inode、管理普通文件、管理目錄、文件鏈接、執行程序等內容。第四部分(第8章)是系統服務接口,介紹一些重要的函數,這部分不是內核的主要部分,但為了讓shell程序正確地運行,這些函數也是必須實現的。
從零開始寫LINUX內核:一書學透核心原理與實現 目錄
目錄前言第 1 章 基礎知識和環境準備 11.1 操作系統概述 11.1.1 功能和架構 11.1.2 操作系統的發展歷史 31.2 配置環境 51.2.1 配置開發環境 51.2.2 配置運行環境 61.3 **個內核程序 91.3.1 打印 Hello World 91.3.2 開機引導程序 111.4 匯編語言 121.4.1 內嵌匯編 12目錄前言第 1 章 基礎知識和環境準備 11.1 操作系統概述 11.1.1 功能和架構 11.1.2 操作系統的發展歷史 31.2 配置環境 51.2.1 配置開發環境 51.2.2 配置運行環境 61.3 **個內核程序 91.3.1 打印 Hello World 91.3.2 開機引導程序 111.4 匯編語言 121.4.1 內嵌匯編 121.4.2 鏈接器的工作原理 161.4.3 初識 makefile 181.5 小結 21第 2 章 保護模式 222.1 進入保護模式前的準備 232.1.1 加載并執行 setup 232.1.2 獲取硬件信息 272.2 內存管理 302.2.1 A20 地址線 312.2.2 全局描述符 312.2.3 頁表的原理 342.2.4 進入保護模式 382.3 中斷機制 462.3.1 中斷描述符表 462.3.2 可編程中斷控制器 482.3.3 特權級 502.4 時鐘中斷 522.4.1 初始化中斷控制芯片 522.4.2 設置中斷描述符表 532.4.3 重設全局描述符表 562.4.4 時鐘中斷實驗 572.5 小結 59第 3 章 進入內核 613.1 開啟分頁管理 613.1.1 設置頁表 613.1.2 設置棧指針 663.2 實現格式化打印673.2.1 初始化終端和控制臺 683.2.2 操作顯示控制器 723.2.3 支持換行和回車 753.2.4 格式化打印結果并輸出 813.3 設置內存和陷阱處理 923.3.1 初始化內存管理 923.3.2 初始化系統調用 943.3.3 處理 CPU 異常 983.4 小結 107第 4 章 創建進程 1084.1 創建 INIT 進程 1084.1.1 創建進程控制塊 1084.1.2 切換特權級 1134.2 創建第二個進程 1184.2.1 準備進程控制塊 1194.2.2 復制進程控制塊 1204.2.3 實現進程切換 1224.3 **個系統調用:fork 1294.3.1 系統調用和中斷 1294.3.2 定義 fork 函數 1324.3.3 內存的寫時復制 1354.3.4 處理頁保護中斷 1424.3.5 完善調度器 1454.4 小結 149第 5 章 支持字符設備1505.1 支持鍵盤 1505.1.1 鍵盤的工作原理 1505.1.2 解析掃描碼 1545.1.3 構建緩沖區 1565.1.4 完善屏幕回顯功能 1595.1.5 回顯字符 1655.2 優化輸入功能 1705.2.1 控制臺和遠程終端 1705.2.2 系統調用 read 函數 1785.3 優化輸出功能 1815.3.1 向標準輸出寫字符串 1815.3.2 ANSI 轉義序列 1865.3.3 支持轉義序列 1885.4 修改終端狀態 1965.4.1 支持方向鍵 1975.4.2 修改控制臺標志位 1985.5 小結 203第 6 章 支持塊設備 2046.1 硬盤的基本結構 2046.1.1 初始化硬盤信息 2046.1.2 硬盤分區表 2086.1.3 硬盤控制器編程 2146.1.4 設置硬盤中斷 2176.2 管理緩沖區 2216.2.1 初始化緩沖區 2216.2.2 申請緩沖區 2246.2.3 緩沖區相關的讀寫操作 2306.3 硬盤驅動 2376.3.1 讀寫硬盤 2376.3.2 讀硬盤分區表 2416.4 軟盤驅動 2436.4.1 軟盤的工作原理 2436.4.2 實現定時器 2466.4.3 DMA 讀寫 2496.4.4 軟盤控制器 2536.4.5 實現軟盤操作函數 2636.5 小結 268第 7 章 文件系統 2697.1 Minix 文件系統 2697.1.1 Minix 文件系統的基本結構 2707.1.2 定義超級塊 2707.1.3 初始化超級塊 2727.2 管理 inode 2757.2.1 文件的元信息 2757.2.2 管理位圖 2847.2.3 刪除文件 2897.2.4 進程支持文件操作 2917.2.5 目錄結構 2957.3 管理普通文件 2987.3.1 根據路徑查找 inode 2987.3.2 打開文件 3057.3.3 文件的讀操作 3097.3.4 讀寫普通文件 3127.4 管理目錄 3167.4.1 創建目錄和文件 3167.4.2 刪除目錄:rmdir 3217.4.3 新建文件 3257.5 文件鏈接 3287.5.1 創建硬鏈接 3287.5.2 創建軟鏈接 3307.5.3 通過鏈接訪問文件 3337.5.4 刪除文件鏈接 3347.6 執行程序 3367.6.1 a.out 格式 3377.6.2 執行程序:execve 3407.6.3 缺頁中斷 3477.6.4 實驗:運行**個可執行程序 3537.7 小結 356第 8 章 系統服務接口3588.1 POSIX 接口 3588.1.1 時間管理 3598.1.2 掛載文件系統 3628.2 管理進程 3648.2.1 信號處理 3658.2.2 管道通信 3718.2.3 進程同步 3788.2.4 進程退出 3808.3 構建 C 語言庫 3838.4 小結 386附錄 顯示模式 387
展開全部
從零開始寫LINUX內核:一書學透核心原理與實現 作者簡介
海納:華為編譯器開發高級工程師,目前投入鴻蒙系統開發語言ArkTS的開發。曾先后從事數據庫、操作系統和編譯器開發工作。著有圖書《自己動手寫Python虛擬機》,并撰寫了極客時間專欄“編程高手必學的內存知識”“手寫Python虛擬機”等。