內容簡介
內容簡介 本書以多達1300頁的篇幅介紹,對完整的Linux內核原始碼進行剖析,以期對作業系統的基本功能和實際實現方式獲得全方位的理解,做到對linux內核有一個完整而深刻的了解,並對linux作業系統的基本工作原理能真正理解和入門。 本書讀者群的定位是一些知曉Linux系統的一般使用方法或具有一定的程式設計基礎,但比較缺乏閱讀目前最新內核原始碼的基礎知識,又急切希望能夠進一步理解UNIX類作業系統內核工作原理和實際代碼實現的愛好者。另外對於想要開發Linux嵌入式系統的工程師這也是很好的一本參考書,讓讀者能深入了解整個Linux的原始程式代碼並加以運用。 ■本書目錄 第1章 概述 介紹Linux的的歷史,版本和學習本書的結構,以及主要Linux版本與檔案相關說明。 第2章 微型計算機組成結構 首先基於傳統微機系統的硬體組成圖,主要介紹Linux內核執行之上的IBM PC AT386微處理機的組成部分。 第3章內核程式語言和環境 介紹Linux 0.12內核中使用的程式設計語言、目標檔格式和編譯環境,主要目標是提供閱讀Linux 0.12內核原始碼所需要的組合語言和GNU C語言擴充知識。 第4章 80X86保護模式及其程式設計 主要概要描述80X86 CPU的體系結構以及保護模式下程式設計的一些基礎知識。 第5章 Linux內核體系結構 概要地描述了Linux作業系統的體系結構、內核原始碼檔放置的組織結構以及每個檔案大致功能。 第6章 開機啟動程式(boot) 將詳細注釋boot 目錄下的三個組合語言程式,其中包括磁碟開機程式bootsect.s、獲取BIOS中參數的setup.s組合語言程式和32位元執行啟動代碼程式head.s。 第7章 初始化程式(init) 主要介紹init 目錄中內核系統的初始化程式main.c。它是內核完成所有初始化工作並進入正常執行的關鍵地方。在完成了系統所有的初始化工作後,建立了用於shell的行程。 第8章 內核代碼(kernel) 主要介紹kenel 目錄中的所有程式。其中最重要的部分是行程調度排程函數schedule()、sleep_on()函數和有關系統呼叫的程式。此時你應該已經對其中的一些重要程式有所瞭解。從本章內容開始,我們會遇到很多C語言程式中嵌入的組合語句。 第9章 區塊設備驅動程式(block driver) 對kernel dev_blk 目錄中的塊裝置程式進行了注釋說明。該章主要含有硬碟、軟碟等區塊裝置的驅動程式,主要用來與檔案系統和高速緩衝區打交道,含有較多與硬體相關的內容。 第10章 字元設備驅動程式(char driver) 對kernel dev_chr 目錄中的字元裝置驅動程式進行注釋說明。這一章中主要涉及串列線路驅動程式、鍵盤驅動程式和顯示器驅動程式。這些驅動程式構成了0.12內核支援的串列終端和主控台終端裝置。 第11章 數學輔助運算器(math) 介紹kernel math 目錄中的數學輔助運算器的模擬程式。 第12章 檔案系統(fs) 介紹內核原始碼fs 目錄中的檔案系統程式,並說明有關MINIX檔案系統的大概,因為最初的Linux系統是只支援MINIX一種檔案系統,Linux 0.12版也不例外。 第13章 記憶體管理(mm) 解說mm 目錄中的記憶體管理程式。要透徹地理解這方面的內容,我們就需要對Intel 80X86微處理器的保護模式執行方式有足夠的理解。 第14章 標頭檔(include) 對include 目錄中的所有標頭檔進行了詳細說明,基本上對每一個定義、每一個常數或資料結構都進行了詳細注釋。 第15章 程式程式庫檔案(lib) 介紹了Linux 0.12版內核原始碼lib 目錄中的所有檔。這些程式庫函數檔主要對編譯系統等系統程式提供了介面函數,對以後理解系統軟體會有較大的幫助。 第16章 建構工具(tools) 介紹tools 目錄下的build.c程式。這個程式並不會包括在編譯生成的內核映射(Image)檔中,它僅用於將內核中的磁碟開機程式塊與其他主要內核模組連接成一個完整的內核映射(kernel image)檔。 第17章 實驗環境設置與使用方法 介紹了學習內核原始碼時的實驗環境以及動手實施各種實驗的方法。主要介紹了在Bochs模擬系統下使用和編譯Linux內核的方法以及磁碟鏡像檔的製作方法。還說明了如何修改Linux 0.12原始碼的語法使其能在RedHat 9系統下順利編譯出正確的內核來。