出版時間:2004-10-1 出版社:清華大學(xué)出版社 作者:盧軍 頁數(shù):314 字數(shù):469000
Tag標簽:無
內(nèi)容概要
本書巧妙地結(jié)合了Linux內(nèi)核源代碼分析、操作系統(tǒng)設(shè)計原理和操作系統(tǒng)設(shè)計實踐三個方面的內(nèi)容,在對Linux 0.01內(nèi)核源代碼進行深入分析的基礎(chǔ)上,講解了操作系統(tǒng)設(shè)計的基本原理和方法技巧。同時,還向讀者提供了大量的操作系統(tǒng)實踐方面的實例。通過對本書的學(xué)習(xí),讀者可以對操作系統(tǒng)的內(nèi)核有深入的了解,掌握基本的硬件操作和控制能力,具有對操作系統(tǒng)的理解和實踐能力。 本書中的所有例子,都可以使用GNU編譯器來編譯,所有的工具軟件也都可以應(yīng)用到GNU的自由軟件中。本書內(nèi)竄豐富、通俗易懂、可操作性強,既可作為大學(xué)高年級本科和研究生學(xué)習(xí)操作系統(tǒng)設(shè)計的輔導(dǎo)教材,也可作為計算機愛好者學(xué)習(xí)和分析Linux內(nèi)核的教材。同時,也是軟件工程師進行各類操作系統(tǒng)設(shè)計的最佳參考用書。
書籍目錄
第1章 GNU和Linux簡介 1.1 自由的天地:GNU和Linux 1.1.1 熱愛和享受自由 1.1.2 神奇的Linux 1.2 在樂趣中獲得成功 1.2.1 11歲開始編程序 1.2.2 一種操作系統(tǒng)的誕生 1.3 GNU的開發(fā)工具 1.3.1 編譯器家族GCC 1.3.2 和操作系統(tǒng)開發(fā)有關(guān)的工具 1.4 本章小結(jié)第2章 操作系統(tǒng)設(shè)計入門 2.1 操作系統(tǒng)介紹 2.1.1 早期的操作系統(tǒng) 2.1.2 DOS操作系統(tǒng) 2.1.3 Unix和Windows操作系統(tǒng)兩大陣營 2.1.4 自由時代的寵兒Linux 2.2 操作系統(tǒng)的基本功能 2.3 編寫操作系統(tǒng)的建議 2.3.1 編程語言選擇 2.3.2 編譯器和鏈接器 2.3.3 運行時函數(shù)庫 2.3.4 使用匯編語言完成底層操作 2.3.5 關(guān)于C++的使用 2.4 x86虛擬機Bochs使用簡介 2.4.1 Bochs簡介 2.4.2 下載Bochs軟件 2.4.3 如何安裝Bochs 2.5 使用Bochs運行一個操作系統(tǒng) 2.5.1 制作一個軟盤鏡像文件 2.5.2 使用Bochs運行操作系統(tǒng) 2.6 操作系統(tǒng)設(shè)計的基本準則 2.6.1 簡單就是優(yōu)美 2.6.2 利用已有的基礎(chǔ) 2.6.3 良好的設(shè)計 2.6.4 單內(nèi)核操作系統(tǒng)和微內(nèi)核操作系統(tǒng) 2.7 本章小結(jié)第3章 操作系統(tǒng)設(shè)計基礎(chǔ) 3.1 使用DJGPP 3.1.1 DJGPP和RHIDE的安裝與使用 3.1.2 make的使用 3.1.3 ld的使用 3.1.4 nasm的使用 3.2 保護模式匯編語言 3.2.1 一個簡單的實模式的匯編語言的例子 3.2.2 Linux匯編程序設(shè)計 3.3 實例:一些簡單的例子程序 3.3.1 識別CPU類型 3.3.2 直接向視頻緩沖區(qū)輸出 3.3.3 檢測顯示器類型 3.3.4 移動光標 3.4 本章小結(jié)第4章 Linux 0.01內(nèi)核簡介 4.1 Linux 0.01內(nèi)核簡介 4.1.1 Linux 0.01內(nèi)核背景 4.1.2 Linux 0.01內(nèi)核的技術(shù)特色 4.1.3 存儲管理 4.1.4 文件系統(tǒng) 4.1.5 硬件平臺移植和應(yīng)用程序 4.2 Linux 0.01核心代碼目錄 4.3 核心源代碼的目錄分布 4.3.1 boot目錄 4.3.2 fs目錄 4.3.3 include目錄 4.3.4 init目錄 4.3.5 kernel目錄 4.3.6 lib目錄 4.3.7 mm目錄 4.3.8 tools目錄 4.4 Linux 0.01的main.c分析 4.5 編譯和運行Linux 0.01系統(tǒng) 4.6 本章小結(jié)第5章 操作系統(tǒng)引導(dǎo) 5.1 操作系統(tǒng)引導(dǎo)的基本知識 5.1.1 系統(tǒng)引導(dǎo)設(shè)備 5.1.2 啟動過程簡介 5.1.3 硬盤主引導(dǎo)扇區(qū)簡介 5.1.4 軟盤主引導(dǎo)扇區(qū) 5.1.5 Linux 0.01引導(dǎo)代碼分析 5.2 引導(dǎo)扇區(qū)和引導(dǎo)代碼實例分析 5.2.1 引導(dǎo)扇區(qū)的內(nèi)容 5.2.2 使用debug建立自己的第一張啟動盤 5.2.3 使用BIOS增強“操作系統(tǒng)”功能 5.3 使用nasm生成引導(dǎo)代碼 5.3.1 引導(dǎo)代碼基礎(chǔ) 5.3.2 最簡單的引導(dǎo)程序 5.3.3 如何設(shè)置段寄存器 5.3.4 在引導(dǎo)程序中裝入程序(基于扇區(qū)) 5.4 本章小結(jié)第6章 存儲管理分析 6.1 操作系統(tǒng)內(nèi)存管理策略簡述 6.1.1 連續(xù)分配存儲管理方式 6.1.2 虛存組織 6.1.3 非連續(xù)存儲管理機制 6.2 物理存儲管理 6.2.1 技術(shù)細節(jié) 6.2.2 物理存儲管理器的組織 6.2.3 物理存儲管理器的初始化 6.2.4 頁面分配 6.2.5 頁面回收 6.2.6 映射 6.2.7 內(nèi)存映射 6.3 虛擬存儲管理 6.3.1 技術(shù)細節(jié) 6.3.2 malloc()和free() 6.3.3 缺頁處理 6.3.4 虛擬存儲管理的頁面分配 6.3.5 可執(zhí)行程序 6.3.6 交換 6.3.7 處理流程 6.4 存儲管理系統(tǒng)代碼實例 6.4.1 實例1:探測計算機的物理內(nèi)存容量 6.4.2 實例2:malloc()和free()的實現(xiàn) 6.5 Linux 0.01存儲管理代碼分析 6.5.1 memory.c分析 6.5.2 page.s分析 6.6 本章小結(jié)第7章 進程管理和調(diào)度 7.1 進程介紹 7.1.1 進程的基本功能 7.1.2 進程的調(diào)度(schedule()函數(shù)) 7.1.3 線程 7.2 多任務(wù)實現(xiàn)基礎(chǔ) 7.3 進程調(diào)度的性能分析 7.4 Linux進程調(diào)度源代碼分析 7.5 實例:實現(xiàn)協(xié)作式多任務(wù) 7.6 本章小結(jié)第8章 設(shè)備管理和調(diào)度 8.1 Linux設(shè)備管理概述 8.1.1 設(shè)備管理的基本要求 8.1.2 驅(qū)動程序(Drivers) 8.1.3 接口(Interfaces) 8.1.4 異步I/O(Asynchronous I/O) 8.2 Linux 0.01中斷處理 8.2.1 中斷處理的基本過程 8.2.2 traps.c文件分析 8.2.3 /kernel/asm.s文件分析 8.3 如何編寫中斷服務(wù)程序ISR 8.4 設(shè)備驅(qū)動程序?qū)嵗 ?.4.1 利用BIOS的探測系統(tǒng)設(shè)備 8.4.2 塊設(shè)備驅(qū)動 8.4.3 鍵盤驅(qū)動 8.4.4 訪問8042芯片各端口 8.4.5 發(fā)給8042的命令 8.4.6 發(fā)給8048的命令 8.4.7 8048到8042的數(shù)據(jù) 8.4.8 鍵盤源代碼 8.4.9 探測軟盤驅(qū)動器 8.5 Linux 0.01設(shè)備驅(qū)動程序源代碼分析 8.5.1 終端控制代碼:console.c 8.5.2 rs323驅(qū)動代碼:serial.c和rs_io.s 8.6 本章小結(jié)第9章 磁盤文件系統(tǒng) 9.1 硬盤驅(qū)動器結(jié)構(gòu)簡介 9.1.1 硬盤參數(shù)解釋 9.1.2 基本INT 13h調(diào)用簡介 9.1.3 現(xiàn)代硬盤結(jié)構(gòu)簡介 9.1.4 擴展INT 13h簡介 9.2 Unix文件系統(tǒng) 9.2.1 磁盤的基礎(chǔ)特性 9.2.2 現(xiàn)代磁盤的尋道延遲特性 9.2.3 Unix文件系統(tǒng)分析 9.3 Virtual File System(VFS)簡介 9.3.1 VFS的體系結(jié)構(gòu) 9.3.2 文件的表示 9.3.3 磁盤布局(Disk layout) 9.4 文件系統(tǒng)設(shè)計步驟 9.4.1 磁盤函數(shù)庫(Disk library) 9.4.2 文件系統(tǒng)(File system) 9.4.3 容錯性(Robustness) 9.5 自己編寫的簡單文件系統(tǒng) 9.6 Linux 0.01文件系統(tǒng)源代碼分析 9.7 本章小結(jié)第10章 shell編程技術(shù)和實例 10.1 shell的基本概念 10.2 實例:最簡單的shell程序 10.3 管道和I/O重定向 10.3.1 使用dup()重定向I/O 10.3.2 使用pipe()和dup() 10.3.3 使用dup2()的例子 10.4 t—shell實現(xiàn)代碼分析 10.4.1 shell總體結(jié)構(gòu)(不支持管道) 10.4.2 shell總體結(jié)構(gòu)(支持管道) 10.4.3 main()函數(shù) 10.4.4 initialization()函數(shù) 10.4.5 getline()函數(shù) 10.4.6 parse()函數(shù) 10.4.7 command()函數(shù) 10.4.8 execute()函數(shù) 10.4.9 forkexec()函數(shù) 10.4.10 check()函數(shù) 10.4.11 getname()函數(shù) 10.4.12 t—shell的運行效果 10.5 本章小結(jié)第11章 系統(tǒng)調(diào)用和C語言庫的實現(xiàn) 11.1 Linux系統(tǒng)調(diào)用概述 11.1.1 系統(tǒng)調(diào)用 11.1.2 系統(tǒng)調(diào)用的實現(xiàn) 11.1.3 系統(tǒng)調(diào)用到INT 0x80h中斷請求的轉(zhuǎn)換 11.2 Linux 0.01系統(tǒng)調(diào)用實現(xiàn)分析 11.2.1 system_call.s 11.2.2 sys.c 11.3 試驗:在Linux中添加新的系統(tǒng)調(diào)用 11.3.1 實現(xiàn)系統(tǒng)調(diào)用的代碼 11.3.2 鏈接新的系統(tǒng)調(diào)用 11.3.3 重新編譯Linux 0.01的內(nèi)核 11.4 C語言標準庫函數(shù)的實現(xiàn) 11.4.1 字符串和內(nèi)存操作函數(shù) 11.4.2 I/O函數(shù)庫 11.4.3 工具函數(shù):隨機數(shù) 11.5 本章小結(jié)第12章 Linux網(wǎng)絡(luò)實現(xiàn)分析 12.1 TCP/IP概述 12.1.1 協(xié)定分層原則 12.1.2 網(wǎng)絡(luò)訪問層 12.1.3 網(wǎng)絡(luò)層 12.1.4 傳輸層 12.1.5 應(yīng)用層 12.2 環(huán)形緩沖區(qū) 12.2.1 環(huán)形緩沖區(qū)的實現(xiàn)原理 12.2.2 實例:環(huán)形緩沖區(qū)的實現(xiàn) 12.3 通信協(xié)議中的定時器編程 12.3.1 基本定時編程 12.3.2 高精度定時中斷編程 12.4 簡單停等協(xié)議 12.4.1 停等協(xié)議簡介 12.4.2 有限狀態(tài)機 12.4.3 差錯控制 12.5 實例:串口數(shù)據(jù)通信 12.6 實例:停等協(xié)議的實現(xiàn) 12.7 本章小結(jié)參考文獻
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
Linux 0.01內(nèi)核分析與操作系統(tǒng)設(shè)計 PDF格式下載