出版時(shí)間:2011-5 出版社:人民郵電 作者:(美)羅德里格斯//費(fèi)舍爾//斯莫斯基|譯者:陳莉君//賀炎//劉霞林 頁(yè)數(shù):400 譯者:陳莉君 賀炎 劉霞林
Tag標(biāo)簽:無(wú)
前言
無(wú)論是一般性技術(shù)還是計(jì)算機(jī)技術(shù),對(duì)于試圖了解它們的人們來(lái)說(shuō)都具有不可思議的魔力。技術(shù)的發(fā)展使其影響力不斷擴(kuò)大,迫使人們對(duì)一些舊的概念重新評(píng)估。Linux操作系統(tǒng)已經(jīng)對(duì)產(chǎn)業(yè)變革和商業(yè)營(yíng)銷(xiāo)方式轉(zhuǎn)變做出了巨大貢獻(xiàn)。它采用GNU公共許可證并與GNU軟件良性互動(dòng),占據(jù)了中心位置,圍繞開(kāi)源、自由軟件和開(kāi)發(fā)社區(qū)思想的各種爭(zhēng)論都離不開(kāi)它。Linux無(wú)疑是一個(gè)極其成功的典范,展現(xiàn)了開(kāi)源操作系統(tǒng)無(wú)比強(qiáng)大的力量,其理論的魔力令世界各地的程序員們?nèi)绨V如狂?! ?duì)于大多數(shù)計(jì)算機(jī)用戶(hù)來(lái)說(shuō),使用Linux正變得越來(lái)越方便。有了各種各樣的發(fā)布版、社區(qū)的支持,以及工業(yè)后盾,Linux的應(yīng)用也找到了安全的港灣,出現(xiàn)在大學(xué)、行業(yè)應(yīng)用以及數(shù)以千計(jì)的家庭用戶(hù)中?! ∈褂么蟪贝龠M(jìn)了技術(shù)支持和新功能需求的日益增長(zhǎng)。這樣一來(lái),愈來(lái)愈多的程序員發(fā)現(xiàn)自己對(duì)Linux內(nèi)核內(nèi)幕感興趣,因?yàn)榇罅楷F(xiàn)有的(還在快速增長(zhǎng)的)應(yīng)用需要支持不同的體系結(jié)構(gòu)和種類(lèi)繁多的新設(shè)備?! ?nèi)核向Power體系結(jié)構(gòu)的成功移植,也助長(zhǎng)了Linux操作系統(tǒng)在高端服務(wù)器和嵌入式系統(tǒng)中的全面繁榮。許多公司購(gòu)買(mǎi)基于Power PC的系統(tǒng)來(lái)運(yùn)行Linux,因此越來(lái)越多的人需要知道Linux在該體系結(jié)構(gòu)上的運(yùn)行機(jī)理。 適合的讀者 本書(shū)的讀者包括初級(jí)和經(jīng)驗(yàn)豐富的系統(tǒng)程序員、Linux的熱衷者,以及應(yīng)用程序的開(kāi)發(fā)者,這些開(kāi)發(fā)者渴望更好地理解自己的程序到底是如何工作的。只要有C語(yǔ)言知識(shí),熟悉基本的Linux用法,如果想知道Linux如何工作,那么你就會(huì)發(fā)現(xiàn)這本書(shū)提供了所需的基本知識(shí),可以說(shuō),本書(shū)是理解Linux內(nèi)核如何工作的初級(jí)讀本?! 〔还苣闶侵坏卿涍^(guò)Linux并編寫(xiě)了些小程序,還是你本身就是一個(gè)系統(tǒng)程序員,正想深入理解某個(gè)子系統(tǒng)的特性,本書(shū)都會(huì)有你所要的信息?! ?nèi)容組織 本書(shū)分為三部分,每部分都提供必要的知識(shí),讓讀者能順利地鉆研Linux內(nèi)幕?! 〉谝徊糠痔峁┍匾墓ぞ吆捅尘埃阌趯?duì)Linux內(nèi)核展開(kāi)進(jìn)一步的探索。 第1章回顧了Linux和UNIX的歷史,對(duì)比了很多發(fā)布版,并從用戶(hù)空間的角度簡(jiǎn)述各種內(nèi)核子系統(tǒng)。 第2章描述Linux內(nèi)核中常用的數(shù)據(jù)結(jié)構(gòu)和語(yǔ)言的用法,介紹x86和PowerPC體系結(jié)構(gòu)的匯編語(yǔ)言,并簡(jiǎn)述一些工具和實(shí)用程序,可用來(lái)獲取理解內(nèi)核內(nèi)幕所需的信息?! 〉诙糠纸榻B了在每個(gè)內(nèi)核子系統(tǒng)中所涉及的基本概念,并分析了執(zhí)行子系統(tǒng)功能的代碼?! 〉?章討論了進(jìn)程模型的實(shí)現(xiàn)。本章解釋了為何引入進(jìn)程,并討論了進(jìn)程往返于用戶(hù)空間和內(nèi)核空間時(shí)的控制流。我們還討論了進(jìn)程在內(nèi)核中是如何實(shí)現(xiàn)的,并描述了與進(jìn)程執(zhí)行相關(guān)的所有數(shù)據(jù)結(jié)構(gòu)。本章還介紹了中斷和異常,描述了這些硬件機(jī)制在每種體系結(jié)構(gòu)中是如何發(fā)生的,它們與Linux內(nèi)核又是如何交互的。 第4章描述了Linux內(nèi)核如何追蹤和管理用戶(hù)空間進(jìn)程的可用內(nèi)存和內(nèi)核的可用內(nèi)存。本章描述了內(nèi)核對(duì)內(nèi)存分類(lèi)的方式,以及決定分配和釋放內(nèi)存的方式,也詳細(xì)描述了缺頁(yè)機(jī)制以及它怎樣在硬件上執(zhí)行?! 〉?章描述了處理器如何與其他設(shè)備進(jìn)行交互,內(nèi)核又是如何響應(yīng)和控制這些交互的。本章還涵蓋了各種設(shè)備及其在內(nèi)核中的實(shí)現(xiàn)?! 〉?章概述文件和目錄如何在內(nèi)核中實(shí)現(xiàn)。本章引入了虛擬文件系統(tǒng),它是用于支持多文件系統(tǒng)的抽象層。本章還跟蹤了文件相關(guān)操作的執(zhí)行,如打開(kāi)和關(guān)閉文件?! 〉?章描述調(diào)度程序的操作,調(diào)度程序讓多個(gè)進(jìn)程運(yùn)行起來(lái)就像系統(tǒng)中只有一個(gè)進(jìn)程在運(yùn)行一樣。本章詳細(xì)描述了內(nèi)核如何選擇執(zhí)行哪一個(gè)任務(wù),進(jìn)程切換時(shí)如何與硬件進(jìn)行交互。本章還敘述了什么是內(nèi)核搶占,它又是怎樣執(zhí)行的。最后,描述了系統(tǒng)時(shí)鐘的工作原理,內(nèi)核怎樣使用它計(jì)時(shí)?! 〉?章描述電源開(kāi)和關(guān)時(shí)都發(fā)生些什么。本章對(duì)各種處理器處理內(nèi)核加載的方式進(jìn)行了跟蹤,包括對(duì)BIOS、Open Firmware和bootloader的描述。然后,考察了內(nèi)核啟動(dòng)和初始化時(shí)的線(xiàn)性順序,涉及了前面章節(jié)中討論的所有子系統(tǒng)?! 〉谌糠?,描述如何編譯內(nèi)核并與內(nèi)核進(jìn)行交互的有效途徑?! 〉?章涵蓋了編譯內(nèi)核所必需的工具鏈和所執(zhí)行的對(duì)象文件的格式。還詳細(xì)描述了內(nèi)核源代碼編譯(Kernel Source Build)系統(tǒng)如何運(yùn)作,怎樣把配置選項(xiàng)加入內(nèi)核編譯系統(tǒng)中?! 〉?0章描述了/dev/random操作,這在所有的Linux系統(tǒng)中都可以看到。本章用它來(lái)跟蹤設(shè)備,并從更具實(shí)戰(zhàn)性的角度介紹前面各章描述過(guò)的概念。最后介紹了如何在內(nèi)核中實(shí)現(xiàn)自己的設(shè)備。 我們的探索方法 本書(shū)給讀者介紹了理解內(nèi)核的必要概念。我們遵循自頂向下的方式來(lái)組織內(nèi)容,具體體現(xiàn)在以下兩個(gè)方面。 首先,我們把內(nèi)核的機(jī)理和用戶(hù)空間操作的執(zhí)行關(guān)聯(lián)起來(lái),因?yàn)樽x者對(duì)后者較熟悉,所以我們會(huì)將二者結(jié)合起來(lái),解釋內(nèi)核的工作。在可能時(shí),我們從用戶(hù)空間的例子說(shuō)起,并跟蹤代碼的執(zhí)行到內(nèi)核。但有時(shí),這種跟蹤方式并不有效,因?yàn)樾枰冉榻B子系統(tǒng)的數(shù)據(jù)類(lèi)型和子結(jié)構(gòu),而后才能解釋其工作原理。在這些情況下,我們把對(duì)內(nèi)核子系統(tǒng)的解釋和它與用戶(hù)空間程序如何聯(lián)系的具體例子結(jié)合起來(lái)。有雙重意圖:其一,當(dāng)內(nèi)核一方面與用戶(hù)空間打交道,另一方面與硬件打交道時(shí),突出在內(nèi)核中看到的層面;其二,通過(guò)跟蹤代碼和事件發(fā)生的順序來(lái)解釋子系統(tǒng)的工作原理。我們相信,這有助于讀者將內(nèi)核的工作原理與自己的認(rèn)識(shí)匹配起來(lái),也有利于讀者了解一個(gè)特定的功能怎樣與操作系統(tǒng)的其余部分產(chǎn)生聯(lián)系?! ∑浯危覀円宰皂斚蛳碌慕嵌?,考察把數(shù)據(jù)結(jié)構(gòu)視作子系統(tǒng)操作中心,并觀(guān)察它們?cè)鯓优c系統(tǒng)管理的執(zhí)行行為相聯(lián)系。我們盡力刻畫(huà)子系統(tǒng)操作中心的結(jié)構(gòu),并像追蹤子系統(tǒng)的操作一樣持續(xù)關(guān)注這些數(shù)據(jù)結(jié)構(gòu)?! 〖s定 你會(huì)在全書(shū)中看到源代碼列表。右上角存放有關(guān)源代碼樹(shù)根的源文件位置。代碼中的行號(hào)是為了方便隨后對(duì)代碼進(jìn)行解釋。我們?cè)诮忉寖?nèi)核子系統(tǒng)及其工作原理時(shí),會(huì)不斷引用源代碼并給予解釋?! ∶钚羞x項(xiàng)、函數(shù)名、函數(shù)輸出以及變量名都用代碼體加以區(qū)分?! ∫胍粋€(gè)新概念時(shí)就采用黑體。
內(nèi)容概要
本書(shū)以L(fǎng)inux
操作系統(tǒng)為基礎(chǔ),詳細(xì)介紹了Linux 內(nèi)核子系統(tǒng),并輔以大量?jī)?nèi)核源代碼和示例程序進(jìn)行演示,引領(lǐng)讀者深入Linux
內(nèi)核。
本書(shū)的主要內(nèi)容包括:Linux 基礎(chǔ)知識(shí)、內(nèi)核探索工具集、進(jìn)程的整個(gè)生命周期、內(nèi)存區(qū)、頁(yè)面、Slab 分配器、用于輸入/
輸出的各種設(shè)備、文件系統(tǒng)、搶占、自旋鎖、信號(hào)量、內(nèi)核引導(dǎo)、構(gòu)建Linux
內(nèi)核,以及向內(nèi)核添加代碼等,同時(shí)還簡(jiǎn)單介紹了一些應(yīng)用工具和實(shí)用程序。每章末尾都給出一些練習(xí),涉及內(nèi)核運(yùn)行的操作及工作原理。
本書(shū)適合對(duì)Linux 內(nèi)核感興趣的各層次讀者,無(wú)論對(duì)Linux 初學(xué)者還是Linux
程序開(kāi)發(fā)人員,本書(shū)都是一本很有價(jià)值的參考書(shū)。
作者簡(jiǎn)介
Claudia Salzberg Rodriguez
就職于IBM
Linux技術(shù)中心,負(fù)責(zé)內(nèi)核及相關(guān)編程工具的開(kāi)發(fā)。在擔(dān)任程序員的10多年時(shí)間里,她一直針對(duì)Intel和PPC平臺(tái)進(jìn)行Linux嵌入式系統(tǒng)到高性能系統(tǒng)的開(kāi)發(fā)。
Gordon Fischer
曾為很多底層設(shè)備開(kāi)發(fā)過(guò)Linux和Unix設(shè)備驅(qū)動(dòng)程序,并針對(duì)Intel和PPC平臺(tái)上的企業(yè)級(jí)系統(tǒng)中使用Linux內(nèi)核。
Steven Smolski
有近30年的半導(dǎo)體行業(yè)從業(yè)經(jīng)驗(yàn)。從事過(guò)內(nèi)存、處理器以及ASICS的研發(fā)和測(cè)試,為L(zhǎng)inux、AIX以及Windows都編寫(xiě)過(guò)應(yīng)用程序和驅(qū)動(dòng)程序,還進(jìn)行過(guò)嵌入式操作系統(tǒng)的開(kāi)發(fā)。
書(shū)籍目錄
第1 章 概述
1.1 UNIX 的歷史
1.2 標(biāo)準(zhǔn)和通用接口
1.3 自由軟件和開(kāi)放源碼
1.4 Linux 發(fā)布版概覽
1.41 Debian
1.42 Red Hat/Fedora
1.43 Mandriva
1.44 SUSE
1.45 Gentoo
1.46 Yellow Dog
1.47 其他發(fā)布版
1.5 內(nèi)核版本信息
1.6 基于Power 的Linux
1.7 什么是操作系統(tǒng)
1.8 內(nèi)核組織
1.9 Linux 內(nèi)核概述
1.9.1 用戶(hù)接口
1.9.2 用戶(hù)標(biāo)識(shí)符
1.9.3 文件和文件系統(tǒng)
1.9.4 進(jìn)程
1.9.5 系統(tǒng)調(diào)用
1.9.6 Linux 調(diào)度程序
1.9.7 Linux 設(shè)備驅(qū)動(dòng)程序
1.10 可移植性和體系結(jié)構(gòu)的相關(guān)性
1.11 小結(jié)
1.12 習(xí)題
第2 章 內(nèi)核探索工具集
2.1 內(nèi)核中常見(jiàn)的數(shù)據(jù)類(lèi)型
2.1.1 鏈表
2.1.2 查找
2.1.3 樹(shù)
2.2 匯編
2.2.1 PowerPC
2.2.2 x86
2.3 匯編語(yǔ)言示例
2.3.1 x86 中的匯編示例
2.3.2 PowerPC 中的匯編示例
2.4 內(nèi)聯(lián)匯編
2.4.1 輸出操作數(shù)
2.4.2 輸入操作數(shù)
2.4.3 已修改過(guò)的寄存器(已修改的元素列表)
2.4.4 參數(shù)的編號(hào)方式
2.4.5 約束條件
2.4.6 asm
2.4.7 __volatile__
2.5 特殊的C 語(yǔ)言用法
2.5.1 asmlinkage
2.5.2 UL
2.5.3 內(nèi)聯(lián)
2.5.4 const 和volatile
2.6 內(nèi)核探索工具一覽
2.6.1 objdump/readelf
2.6.2 hexdump
2.6.3 nm
2.6.4 objcopy
2.6.5 ar
2.7 內(nèi)核發(fā)言:傾聽(tīng)來(lái)自?xún)?nèi)核的消息
2.7.1 printk()
2.7.2 dmesg
2.7.3 /var/log/messages
2.8 其他奧秘
2.8.1 __init
2.8.2 likely()和unlikely()
2.8.3 IS_ERR 和PTR_ERR
2.8.4 通告程序鏈
2.9 小結(jié)
2.9.1 項(xiàng)目:Hellomod
2.9.2 第一步:構(gòu)造Linux 模塊的框架
2.9.3 第二步:編譯模塊
2.9.4 第三步:運(yùn)行代碼
2.10 習(xí)題
第3 章 進(jìn)程:程序執(zhí)行的基本模型
3.1 程序
3.2 進(jìn)程描述符
3.2.1 與進(jìn)程屬性相關(guān)的字段
3.2.2 與調(diào)度相關(guān)的字段
3.2.3 涉及進(jìn)程間相互關(guān)系的字段
3.2.4 與進(jìn)程信任狀相關(guān)的字段
3.2.5 與進(jìn)程權(quán)能相關(guān)的字段
3.2.6 與進(jìn)程限制相關(guān)的字段
3.2.7 與文件系統(tǒng)及地址空間相關(guān)的字段
3.3 進(jìn)程的創(chuàng)建:系統(tǒng)調(diào)用fork()、vfork 和clone()
3.3.1 fork()函數(shù)
3.3.2 vfork()函數(shù)
3.3.3 clone()函數(shù)
3.3.4 do_fork()函數(shù)
3.4 進(jìn)程的生命周期
3.4.1 進(jìn)程的狀態(tài)
3.4.2 進(jìn)程狀態(tài)的轉(zhuǎn)換
3.5 進(jìn)程的終止
3.5.1 sys_exit() 函數(shù)
3.5.2 do_exit()函數(shù)
3.5.3 通知父進(jìn)程和sys_wait4()
3.6 了解進(jìn)程的動(dòng)態(tài):調(diào)度程序的基本構(gòu)架
3.6.1 基本結(jié)構(gòu)
3.6.2 從等待中醒來(lái)或者激活
3.7 等待隊(duì)列
3.7.1 添加到等待隊(duì)列
3.7.2 等待事件
3.7.3 喚醒進(jìn)程
3.8 異步執(zhí)行流程
3.8.1 異?! ?br />3.8.2 中斷
3.9 小結(jié)
3.9.1 項(xiàng)目:系統(tǒng)變量current
3.9.2 項(xiàng)目源碼
3.9.3 運(yùn)行代碼
3.10 習(xí)題
第4 章 內(nèi)存管理
4.1 頁(yè)
4.2 內(nèi)存管理區(qū)
4.2.1 內(nèi)存管理區(qū)描述符
4.2.2 內(nèi)存管理區(qū)操作輔助函數(shù)
4.3 頁(yè)面
4.3.1 請(qǐng)求頁(yè)面的函數(shù)
4.3.2 釋放頁(yè)面的函數(shù)
4.3.3 伙伴系統(tǒng)
4.4 Slab 分配器
4.4.1 緩存描述符
4.4.2 通用緩存描述符
4.4.3 Slab 描述符
4.5 Slab 分配器的生命周期
4.5.1 與Slab 分配器有關(guān)的全局變量
4.5.2 創(chuàng)建緩存
4.5.3 創(chuàng)建slab 與cache_grow()
4.5.4 Slab 的銷(xiāo)毀:退還內(nèi)存與kmem_cache_destroy()
4.6 內(nèi)存請(qǐng)求路徑
4.6.1 kmalloc()
4.6.2 kmem_cache_alloc()
4.7 Linux 進(jìn)程的內(nèi)存結(jié)構(gòu)
4.7.1 mm_struct
4.7.2 vm_area_struct
4.8 進(jìn)程映像的分布及線(xiàn)性地址空間
4.9 頁(yè)表
4.10 缺頁(yè)
4.10.1 x86 缺頁(yè)異常
4.10.2 缺頁(yè)處理程序
4.10.3 PowerPC 缺頁(yè)異常
4.11 小結(jié)
4.12 項(xiàng)目:進(jìn)程內(nèi)存映射
4.13 習(xí)題
第5 章 輸入/輸出
5.1 總線(xiàn)、橋、端口和接口的硬件實(shí)現(xiàn)
5.2 設(shè)備
5.2.1 塊設(shè)備概述
5.2.2 請(qǐng)求隊(duì)列和I/O 調(diào)度
5.2.3 示例:“通用”塊設(shè)備驅(qū)動(dòng)程序
5.2.4 設(shè)備操作
5.2.5 字符設(shè)備
5.2.6 網(wǎng)絡(luò)設(shè)備
5.2.7 時(shí)鐘設(shè)備
5.2.8 終端設(shè)備
5.2.9 直接存儲(chǔ)器存取
5.3 小結(jié)
5.4 項(xiàng)目:創(chuàng)建并口驅(qū)動(dòng)程序
5.4.1 并口的硬件
5.4.2 運(yùn)行在并口上的軟件
5.5 習(xí)題
第6 章 文件系統(tǒng)
6.1 文件系統(tǒng)的基本概念
6.1.1 文件和文件名
6.1.2 文件類(lèi)型
6.1.3 文件的附加屬性
6.1.4 目錄和路徑名
6.1.5 文件操作
6.1.6 文件描述符
6.1.7 磁盤(pán)塊、磁盤(pán)分區(qū)以及實(shí)現(xiàn)
6.1.8 性能
6.2 Linux 虛擬文件系統(tǒng)
6.2.1 VFS 的數(shù)據(jù)結(jié)構(gòu)
6.2.2 全局鏈表和局部鏈表的引用
6.3 與VFS 相關(guān)的結(jié)構(gòu)
6.3.1 fs_struct 結(jié)構(gòu)
6.3.2 files_struct 結(jié)構(gòu)
6.4 頁(yè)緩存
6.4.1 address_space 結(jié)構(gòu)
6.4.2 buffer_head 結(jié)構(gòu)
6.5 VFS 的系統(tǒng)調(diào)用和文件系統(tǒng)層
6.5.1 open()
6.5.2 close()
6.5.3 read()
6.5.4 write()
6.6 小結(jié)
6.7 習(xí)題
第7 章 進(jìn)程調(diào)度和內(nèi)核同步
7.1 Linux 的調(diào)度程序
7.1.1 選擇下一個(gè)進(jìn)程
7.1.2 上下文切換
7.1.3 讓出CPU
7.2 內(nèi)核搶占
7.2.1 顯式內(nèi)核搶占
7.2.2 隱式用戶(hù)搶占
7.2.3 隱式內(nèi)核搶占
7.3 自旋鎖和信號(hào)量
7.4 系統(tǒng)時(shí)鐘:關(guān)于時(shí)間和定時(shí)器
7.4.1 實(shí)時(shí)時(shí)鐘:現(xiàn)在幾點(diǎn)了
7.4.2 讀取PPC 的實(shí)時(shí)時(shí)鐘
7.4.3 讀取x86 的實(shí)時(shí)時(shí)鐘
7.5 小結(jié)
7.6 習(xí)題
第8 章 內(nèi)核引導(dǎo)
8.1 BIOS 和Open Firmware
8.2 引導(dǎo)加載程序
8.2.1 GRUB
8.2.2 LILO
8.2.3 PowerPC 和Yaboot
8.3 與體系結(jié)構(gòu)相關(guān)的內(nèi)存初始化
8.3.1 PowerPC 的硬件內(nèi)存管理
8.3.2 基于Intel x86 體系結(jié)構(gòu)的硬件內(nèi)存管理
8.3.3 PowerPC 和x86 的代碼匯集
8.4 原始的RAM 盤(pán)
8.5 開(kāi)始:start_kernel()
8.5.1 調(diào)用lock_kernel()
8.5.2 調(diào)用page_address_init()
8.5.3 調(diào)用printk(linux_banner)
8.5.4 調(diào)用setup_arch
8.5.5 調(diào)用setup_per_cpu_areas()
8.5.6 調(diào)用smp_prepare_boot_cpu()
8.5.7 調(diào)用sched_init()
8.5.8 調(diào)用build_all_zonelists()
8.5.9 調(diào)用page_alloc_init
8.5.10 調(diào)用parse_args()
8.5.11 調(diào)用trap_init()
8.5.12 調(diào)用rcu_init()
8.5.13 調(diào)用init_IRQ()
8.5.14 調(diào)用softirq_init()
8.5.15 調(diào)用time_init()
8.5.16 調(diào)用console_init()
8.5.17 調(diào)用profile_init()
8.5.18 調(diào)用local_irq_enable()
8.5.19 配置initrd
8.5.20 調(diào)用mem_init()
8.5.21 調(diào)用late_time_init()
8.5.22 調(diào)用calibrate_delay()
8.5.23 調(diào)用pgtable_cache_init()
8.5.24 調(diào)用buffer_init()
8.5.25 調(diào)用security_scaffolding_startup()
8.5.26 調(diào)用vfs_caches_init()
8.5.27 調(diào)用radix_tree_init()
8.5.28 調(diào)用signal_init()
8.5.29 調(diào)用page_writeback_init()
8.5.30 調(diào)用proc_root_init()
8.5.31 調(diào)用init_idle()
8.5.32 調(diào)用rest_init()
8.6 init 線(xiàn)程(或進(jìn)程1)
8.7 小結(jié)
8.8 習(xí)題
第9 章 構(gòu)建Linux 內(nèi)核
9.1 工具鏈
9.1.1 編譯程序
9.1.2 交叉編譯
9.1.3 鏈接程序
9.1.4 ELF 二進(jìn)制目標(biāo)文件
9.2 內(nèi)核源代碼的構(gòu)建
9.2.1 解釋源代碼
9.2.2 構(gòu)建內(nèi)核映像
9.3 小結(jié)
9.4 習(xí)題
第10 章 向內(nèi)核添加代碼
10.1 瀏覽源代碼
10.11 熟悉文件系統(tǒng)
10.12 filp 和fops
10.13 用戶(hù)空間和內(nèi)核空間
10.14 等待隊(duì)列
10.15 工作隊(duì)列及中斷
10.16 系統(tǒng)調(diào)用
10.17 其他類(lèi)型的驅(qū)動(dòng)程序
10.18 設(shè)備模型和sysfs 文件系統(tǒng)
10.2 編寫(xiě)代碼
10.2.1 設(shè)備基礎(chǔ)
10.2.2 符號(hào)輸出
10.2.3 IOCTL
10.2.4 輪詢(xún)與中斷
10.2.5 工作隊(duì)列和tasklet
10.2.6 增加系統(tǒng)調(diào)用的代碼
10.3 構(gòu)建和調(diào)試
10.4 小結(jié)
10.5 習(xí)題
媒體關(guān)注與評(píng)論
“本書(shū)詳細(xì)比較了x86和PPC體系結(jié)構(gòu)下的匯編程序,并介紹了分析工具。非常不錯(cuò)!” ——亞馬遜讀者評(píng)論
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版