出版時(shí)間:2008.10 出版社:機(jī)械工業(yè)出版社 作者:趙炯 頁(yè)數(shù):945 字?jǐn)?shù):1494000
Tag標(biāo)簽:無(wú)
前言
本書是一本有關(guān)Linux操作系統(tǒng)內(nèi)核基本工作原理的入門讀物。本書的主要目標(biāo)本書的主要目標(biāo)是使用盡量少的篇幅,對(duì)完整的Linux內(nèi)核源代碼進(jìn)行解剖,使讀者對(duì)操作系統(tǒng)的基本功能和實(shí)際實(shí)現(xiàn)方式獲得全方位的理解。本書讀者應(yīng)是知曉Linux系統(tǒng)的一般使用方法或具有一定的編程基礎(chǔ),但比較缺乏閱讀目前最新內(nèi)核源代碼的基礎(chǔ)知識(shí),又急切希望能夠進(jìn)一步理解IJNIX類操作系統(tǒng)內(nèi)核工作原理和實(shí)際代碼實(shí)現(xiàn)的愛(ài)好者。這部分讀者的水平應(yīng)該界于初級(jí)與中級(jí)水平之間。目前,這部分讀者人數(shù)在Linux愛(ài)好者中所占的比例是很高的,而面向這部分讀者以比較易懂和有效的手段講解內(nèi)核的書籍資料不多。 現(xiàn)有書籍不足之處 目前已有的描述Linux內(nèi)核的書籍,均盡量選用最新Linux內(nèi)核版本(例如Fedora 8使用的2.6.24穩(wěn)定版等)進(jìn)行描述,但由于目前Linux內(nèi)核整個(gè)源代碼的大小已經(jīng)非常大(例如2.2.20版就已具有268萬(wàn)行代碼!),因此這些書籍僅能對(duì)LJnux內(nèi)核源代碼進(jìn)行選擇性或原理性的說(shuō)明,許多系統(tǒng)實(shí)現(xiàn)細(xì)節(jié)被忽略。因此并不能使讀者對(duì)實(shí)際L,inux內(nèi)核有清晰而完整的理解。Scott Maxwell的《Linux內(nèi)核源代碼分析》基本上是面對(duì)Linux中、高級(jí)水平的讀者,需要較為全面的基礎(chǔ)知識(shí)才能完全理解。而且可能是由于篇幅所限,該書并沒(méi)有對(duì)所有Linux內(nèi)核代碼進(jìn)行注釋,略去了很多內(nèi)核實(shí)現(xiàn)細(xì)節(jié),例如內(nèi)核中使用的各個(gè)頭文件(*.h)、生成內(nèi)核代碼映像文件的工具程序、各個(gè)make文件的作用和實(shí)現(xiàn)等均沒(méi)有涉及。因此對(duì)于處于初、中級(jí)水平之間的讀者來(lái)說(shuō)閱讀該書有些困難。John Lions的《萊昂氏LINIX源代碼分析》雖然是一本學(xué)習(xí)UNIX類操作系統(tǒng)內(nèi)核源代碼很好的書,但是由于其采用的是UNIX V6版,其中系統(tǒng)調(diào)用等部分代碼是用早已廢棄的PDP.11系列機(jī)的匯編語(yǔ)言編制的,因此在閱讀和理解與硬件部分相關(guān)的源代碼時(shí)就會(huì)遇到較大的困難。A.S.Tanenbaum的《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》是有關(guān)操作系統(tǒng)內(nèi)核實(shí)現(xiàn)很好的入門書籍,但該書所敘述的M1NⅨ系統(tǒng)是一種基于消息傳遞的內(nèi)核實(shí)現(xiàn)機(jī)制,與IAnux內(nèi)核的實(shí)現(xiàn)有所區(qū)別。因此在學(xué)習(xí)該書之后,并不能很順利地即刻著手進(jìn)一步學(xué)習(xí)較新的Linux內(nèi)核源代碼實(shí)現(xiàn)。在使用這些書籍進(jìn)行學(xué)習(xí)時(shí)會(huì)有一種“盲人摸象”的感覺(jué),不容易真正理解Linux內(nèi)核系統(tǒng)具體實(shí)現(xiàn)的整體概念,尤其是對(duì)那些Linux系統(tǒng)初學(xué)者,或剛學(xué)會(huì)如何使用Linux系統(tǒng)的人在使用那些書學(xué)習(xí)內(nèi)核原理時(shí),內(nèi)核的整體運(yùn)作結(jié)構(gòu)并不能清晰地在腦海中形成。這在本人多年的Linux內(nèi)核學(xué)習(xí)過(guò)程中也深有體會(huì)。在1991年10月,Linux的創(chuàng)始人Linus’Forvalds在開發(fā)出Linux 0.03版后寫的一篇文章中也提到了同樣的問(wèn)題。在這篇題為《IJnux-aFree unix.386Kernel》目的文章中,他說(shuō):“開發(fā)Linux是為了那些操作系統(tǒng)愛(ài)好者和計(jì)算機(jī)科學(xué)系的學(xué)生使用、學(xué)習(xí)和娛樂(lè)”?!白杂绍浖饡?huì)的GN2J Hurd系統(tǒng)如果開發(fā)出來(lái)就已經(jīng)顯得太龐大而不適合學(xué)習(xí)和理解。”
內(nèi)容概要
本書對(duì)早期Linux內(nèi)核(v0.12)全部代碼文件進(jìn)行了詳細(xì)、全面的注釋和說(shuō)明,旨在幫助讀者用較短的時(shí)間對(duì)Linux的工作機(jī)理獲得全面而深刻的理解,為進(jìn)一步學(xué)習(xí)和研究Linux打下堅(jiān)實(shí)的基礎(chǔ)。雖然選擇的版本較低,但該內(nèi)核已能夠正常編譯運(yùn)行,并且其中已包括了Linux工作原理的精髓。書中首先以Linux源代碼版本的變遷為主線,介紹了Linux的歷史,同時(shí)著重說(shuō)明了各個(gè)內(nèi)核版本的主要區(qū)別和改進(jìn),給出了選擇0.12版內(nèi)核源代碼作為研究對(duì)象的原因。在正式描述內(nèi)核源代碼之前,概要介紹了運(yùn)行Linux的PC的硬件組成結(jié)構(gòu)、編制內(nèi)核使用的匯編語(yǔ)言和C語(yǔ)言擴(kuò)展部分,并且重點(diǎn)說(shuō)明了80x86處理器在保護(hù)模式下運(yùn)行的編程方法。接著詳細(xì)介紹了Linux內(nèi)核源代碼目錄樹組織結(jié)構(gòu),并依據(jù)該結(jié)構(gòu)對(duì)所有內(nèi)核程序和文件進(jìn)行了注釋和詳細(xì)說(shuō)明。有關(guān)代碼注釋的章節(jié)安排基本上都分為具體研究對(duì)象的概述、每個(gè)文件的功能介紹、代碼內(nèi)注釋、代碼中難點(diǎn)及相關(guān)資料介紹等部分。為了加深讀者對(duì)內(nèi)核工作原理的理解,書中最后一章給出了圍繞Linux 0.12系統(tǒng)的多個(gè)試驗(yàn)。 本書適合Linux愛(ài)好者作為學(xué)習(xí)內(nèi)核工作原理的自學(xué)參考書籍,也適合作為高校計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)操作系統(tǒng)課程的輔助和實(shí)踐教材,還可供一般技術(shù)人員作為開發(fā)嵌入式系統(tǒng)的參考書使用。
書籍目錄
序第1章 概述 1.1 Linux的誕生和發(fā)展 1.1.1 UNIX操作系統(tǒng)的誕生 1.1.2 MINIX操作系統(tǒng) 1.1.3 GNU計(jì)劃 1.1.4 POSIX標(biāo)準(zhǔn) 1.1.5 Linux操作系統(tǒng)的誕生 1.1.6 Linux操作系統(tǒng)版本的變遷 1.1.7 Linux名稱的由來(lái) 1.1.8 早期Linux系統(tǒng)開發(fā)的主要貢獻(xiàn)者 1.2 內(nèi)容綜述 1.3 本章小結(jié)第2章 微型計(jì)算機(jī)組成結(jié)構(gòu) 2.1 微型計(jì)算機(jī)組成原理 2.2 I/O端口尋址和訪問(wèn)控制方式 2.2.1 I/O端口和尋址 2.2.2 接口訪問(wèn)控制 2.3 主存儲(chǔ)器、BIOS和CMOS存儲(chǔ)器 2.3.1 主存儲(chǔ)器 2.3.2 基本輸入/輸出程序BIOS 2.3.3 CMOS存儲(chǔ)器 2.4 控制器和控制卡 2.4.1 中斷控制器 2.4.2 DMA控制器 2.4.3 定時(shí)/計(jì)數(shù)器 2.4.4 鍵盤控制器 2.4.5 串行控制卡 2.4.6 顯示控制 2.4.7 軟盤和硬盤控制器 2.5 本章小結(jié)第3章 內(nèi)核編程語(yǔ)言和環(huán)境 3.1 as86匯編器 3.1.1 as86匯編語(yǔ)言語(yǔ)法 3.1.2 as86匯編語(yǔ)言程序 3.1.3 as86匯編語(yǔ)言程序的編譯和鏈接 3.1.4 as86和1d86使用方法和選項(xiàng) 3.2 CNU as匯編 3.2.1 編譯as匯編語(yǔ)言程序 3.2.2 as匯編語(yǔ)法 3.2.3 指令語(yǔ)句、操作數(shù)和尋址 3.2.4 區(qū)與重定位 3.2.5 符號(hào) 3.2.6 as匯編命令 3.2.7 編寫16位代碼 3.2.8 AS匯編器命令行選項(xiàng) 3.3 C語(yǔ)言程序 3.3.1 C程序編譯和鏈接 3.3.2 嵌入?yún)R編 3.3.3 圓括號(hào)中的組合語(yǔ)句 3.3.4 寄存器變量 3.3.5 內(nèi)聯(lián)函數(shù) 3.4 C與匯編程序的相互調(diào)用 3.4.1 C函數(shù)調(diào)用機(jī)制 3.4.2 在匯編程序中調(diào)用C函數(shù) 3.4.3 在C程序中調(diào)用匯編函數(shù) 3.5 Linux 0.12目標(biāo)文件格式 3.5.1 目標(biāo)文件格式 3.5.2 Linux0.12中的目標(biāo)文件格式 3.5.3 鏈接程序輸出 3.5.4 鏈接程序預(yù)定義變量一 3.5.5 System.map文件 3.6 Make程序和Makefile文件 3.6.1 Makefite文件內(nèi)容 3.6.2 Makefile文件中的規(guī)則 3.6.3 Makefile文件示例 3.6.4 make處理Makefile文件的方式 3.6.5 Makefile中的變量 ……第4章 80X86保護(hù)模式及其編程第5章 Linux內(nèi)核體系結(jié)構(gòu)第6章 引導(dǎo)啟動(dòng)程序第7章 初始化程序第8章 內(nèi)核代碼第9章 塊設(shè)備驅(qū)動(dòng)程序第10章 字符設(shè)備驅(qū)動(dòng)程序第11章 數(shù)學(xué)協(xié)處理器第12章 文件系統(tǒng)第13章 內(nèi)存管理第14章 頭文件第15章 庫(kù)文件第16章 建造工具第17章 實(shí)驗(yàn)環(huán)境設(shè)置與使用方法附錄參考文獻(xiàn)
章節(jié)摘錄
第1章 概述本章首先回顧了Linux操作系統(tǒng)的誕生、開發(fā)和成長(zhǎng)過(guò)程,由此讀者可以理解本書選擇Linux系統(tǒng)早期版本作為學(xué)習(xí)對(duì)象的一些原因;然后具體說(shuō)明了選擇早期Linux內(nèi)核版本進(jìn)行學(xué)習(xí)的優(yōu)點(diǎn)和不足之處以及如何開始進(jìn)一步學(xué)習(xí);最后對(duì)各章的內(nèi)容進(jìn)行了簡(jiǎn)要介紹。1.1Linux的誕生和發(fā)展Linux操作系統(tǒng)是UNIX操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991年10月5日(這是第一次正式向外公布的時(shí)間)。此后借助于Internet網(wǎng)絡(luò),經(jīng)過(guò)全世界計(jì)算機(jī)愛(ài)好者的共同努力,現(xiàn)已成為當(dāng)今使用最多的一種UNIX類操作系統(tǒng),并且使用人數(shù)還在迅猛增長(zhǎng)。Linux操作系統(tǒng)的誕生、發(fā)展和成長(zhǎng)過(guò)程依賴于以下五個(gè)重要支柱:UNIX操作系統(tǒng)、MINIX操作系統(tǒng)、GNU計(jì)劃、POSIX標(biāo)準(zhǔn)和Internet。下面根據(jù)這五個(gè)基本線索來(lái)回顧一下Linux的醞釀過(guò)程、開發(fā)歷程以及最初的發(fā)展。首先分別介紹其中的四個(gè)基本要素,然后根據(jù)Linux的創(chuàng)始人Linus Torvalds從對(duì)計(jì)算機(jī)感興趣而自學(xué)計(jì)算機(jī)知識(shí),到心里開始醞釀編制一個(gè)自己的操作系統(tǒng),到最初Linux內(nèi)核0.O1版公布以及從此如何艱難地一步一個(gè)腳印地在全世界黑客的幫助下推出比較完善的1.0版本這段經(jīng)過(guò),對(duì)Linux的早期發(fā)展歷史進(jìn)行詳細(xì)介紹。當(dāng)然,目前Linux內(nèi)核版本已經(jīng)開發(fā)到了2.6.X版。而大多數(shù)Linux系統(tǒng)中所用到的內(nèi)核是穩(wěn)定的2.6.12版內(nèi)核(其中第2個(gè)數(shù)字若是奇數(shù)則表示正在開發(fā)的版本,不能保證系統(tǒng)的穩(wěn)定性)。對(duì)于Linux的一般發(fā)展史,許多文章和書籍都有介紹,這里不再重復(fù)。1.1.1UNIX操作系統(tǒng)的誕生UNIX操作系統(tǒng)最早是美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson于1969年夏在DEC PDP-7小型計(jì)算機(jī)上開發(fā)的一個(gè)分時(shí)操作系統(tǒng)。Ken Thompson為了能在閑置不用的PDP-7計(jì)算機(jī)上運(yùn)行他非常喜歡的星際旅行(Star Trek)游戲,于1969年夏天趁他夫人回家鄉(xiāng)加利福尼亞度假期間,在一個(gè)月內(nèi)開發(fā)出了UNIX操作系統(tǒng)的原型。當(dāng)時(shí)使用的是BCPL語(yǔ)言(基本組合編程語(yǔ)言),后經(jīng)Dennis Ritchie于1972年用移植性很強(qiáng)的C語(yǔ)言進(jìn)行了改寫,使得UNIX系統(tǒng)在大學(xué)得到了推廣。
編輯推薦
《Linux內(nèi)核完全剖析:基于0.12內(nèi)核》適合Linux愛(ài)好者作為學(xué)習(xí)內(nèi)核工作原理的自學(xué)參考書籍,也適合作為高校計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)操作系統(tǒng)課程的輔助和實(shí)踐教材,還可供一般技術(shù)人員作為開發(fā)嵌入式系統(tǒng)的參考書使用。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載