日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入剖析Linux的Radix樹使用方法與原理(linuxradix樹)

隨著現(xiàn)代計算機技術(shù)的不斷發(fā)展,Linux系統(tǒng)已經(jīng)成為了世界領(lǐng)先的操作系統(tǒng)之一。而在這個操作系統(tǒng)中,Radix樹作為一種非常重要的數(shù)據(jù)結(jié)構(gòu),被廣泛地應(yīng)用于網(wǎng)絡(luò)通信、文件系統(tǒng)以及內(nèi)核緩存等方面。在本文中,我們將,為讀者提供更加全面的了解和認識。

為共青城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及共青城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、共青城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

1. Radix樹的基礎(chǔ)概念

Radix樹,也稱為基數(shù)樹(Radix Tree),是一種特殊的樹形數(shù)據(jù)結(jié)構(gòu),通過對字符串的前綴進行分支,來存儲和查詢大量的數(shù)據(jù)。與傳統(tǒng)的二叉查找樹和紅黑樹不同,Radix樹的每個節(jié)點可以有任意數(shù)量的子節(jié)點,并且每個節(jié)點的深度不一定相同。因此,在大規(guī)模數(shù)據(jù)存儲和高效查找方面,Radix樹具有更好的性能表現(xiàn)。

Radix樹的名稱“基數(shù)”來源于其在存儲數(shù)據(jù)時按照每個字符的基數(shù)(比如2進制、8進制、16進制等)進行分支的特性。具體來說,一個字符串的每個字符可以被看作一個數(shù)位,Radix樹的節(jié)點則按照這些數(shù)位進行分支。舉個例子,對于字符串“ABCD”,我們可以看做是一個長度為4的16進制數(shù),其中A轉(zhuǎn)化為10,B轉(zhuǎn)化為11,C轉(zhuǎn)化為12,D轉(zhuǎn)化為13,因此可以將其作為一個Radix樹的關(guān)鍵字插入到樹中。如下圖所示,Radix樹的每個節(jié)點表示一個16進制數(shù)位,葉子節(jié)點表示一個完整的16進制數(shù)值。

![Radix Tree](https://s1.ax1x.com/2023/07/25/UZ6DnI.png)

2. Radix樹的應(yīng)用場景

由于Radix樹的高效性能和可擴展性,它在許多領(lǐng)域都得到了廣泛的應(yīng)用。在Linux系統(tǒng)中,Radix樹也扮演了非常重要的角色。以下是Radix樹在Linux系統(tǒng)下的幾個應(yīng)用場景。

2.1 網(wǎng)絡(luò)通信

Linux內(nèi)核中的網(wǎng)絡(luò)協(xié)議棧使用了大量的Radix樹來存儲和查找各種協(xié)議的狀態(tài)信息。例如,每個套接字連接都對應(yīng)著一個socket數(shù)據(jù)結(jié)構(gòu),這些socket數(shù)據(jù)結(jié)構(gòu)通過Radix樹進行組織和管理。在網(wǎng)絡(luò)通信的過程中,Linux內(nèi)核通過查找socket數(shù)據(jù)結(jié)構(gòu),來確定每個網(wǎng)絡(luò)包的接收和發(fā)送方向,從而實現(xiàn)了高效可靠的網(wǎng)絡(luò)通信。

2.2 文件系統(tǒng)

在Linux系統(tǒng)中,文件系統(tǒng)是一個非常重要的組成部分。Radix樹被廣泛地應(yīng)用于文件系統(tǒng)中的內(nèi)存inode緩存(Inode Cache)和頁緩存(Page Cache)中。內(nèi)存inode緩存用于緩存磁盤上的inode節(jié)點,提升文件訪問速度;頁緩存用于緩存文件數(shù)據(jù),同樣可以加速文件讀寫效率。在這些緩存中,Linux內(nèi)核使用Radix樹來存儲和查找每個inode和頁的信息,從而提高了文件系統(tǒng)的性能和可靠性。

2.3 內(nèi)核緩存

除了文件系統(tǒng)和網(wǎng)絡(luò)通信,Radix樹還被廣泛地應(yīng)用于Linux內(nèi)核的各種緩存中。例如,Linux內(nèi)核中的Slab與Slub分配器使用了Radix樹來存儲和管理緩存頁的信息。Radix樹可以自適應(yīng)地調(diào)整樹的深度和節(jié)點數(shù)量,根據(jù)實際情況來平衡操作的效率和內(nèi)存使用效率。這些緩存的高效使用,可以大大提高Linux內(nèi)核的性能和響應(yīng)速度。

3. Linux中的Radix樹實現(xiàn)

Radix樹在Linux系統(tǒng)中的應(yīng)用十分廣泛,為了適應(yīng)不同的應(yīng)用場景,Linux內(nèi)核中提供了多種不同的Radix樹實現(xiàn)。在本節(jié)中,我們將介紹Linux中的三種主要的Radix樹實現(xiàn),并分析其原理和使用方法。

3.1 基本Radix樹

基本Radix樹(Immediate Mode Radix Tree)是Linux內(nèi)核中最常用和最基礎(chǔ)的一種Radix樹實現(xiàn)。它使用數(shù)組來存儲節(jié)點,每個節(jié)點最多可以有256個子節(jié)點,其中-1表示該節(jié)點沒有子節(jié)點。在插入和查詢操作時,基本Radix樹從更高位開始逐位匹配關(guān)鍵字,直到最后一位。

基本Radix樹的實現(xiàn)非常簡單明了,因此在許多場景下都可以發(fā)揮出不錯的性能表現(xiàn)。不過,由于基本Radix樹的存儲空間是靜態(tài)的,無法動態(tài)地調(diào)整樹的深度和節(jié)點數(shù)量,因此在插入和刪除節(jié)點時需要重新分配內(nèi)存空間,存在較大的時間開銷。此外,在處理稀疏數(shù)據(jù)時,基本Radix樹的效率可能會較低。

3.2 可擴展哈希表

為了解決基本Radix樹存在的動態(tài)分配內(nèi)存和稀疏數(shù)據(jù)處理問題,Linux內(nèi)核提供了第二種Radix樹實現(xiàn)——可擴展哈希表(eXtensible Hash Table)??蓴U展哈希表使用哈希表來存儲各個節(jié)點,每個節(jié)點最多可以有兩個子節(jié)點,分別表示0和1兩種不同的分支。在擴展哈希表中,每個哈希桶包含若干個節(jié)點,在每個哈希桶的末尾,會有一個指針指向下一個哈希桶。

與基本Radix樹不同,可擴展哈希表采用動態(tài)存儲空間管理,可以實時調(diào)整節(jié)點數(shù)量和哈希桶數(shù)量,并根據(jù)哈希沖突情況進行自適應(yīng)的重哈希操作。這使得可擴展哈希表在插入、刪除和查詢節(jié)點時都具有較高的效率和性能,并且可以應(yīng)對不同規(guī)模、密度和分布的數(shù)據(jù)。

3.3 多位基數(shù)樹

多位基數(shù)樹(Patricia Trie)是Linux內(nèi)核中的另一種Radix樹實現(xiàn),它在Roberto Grossi和Giuseppe Ottaviano的研究基礎(chǔ)上進行了改進和優(yōu)化。多位基數(shù)樹用于處理稠密、高速、內(nèi)存受限的數(shù)據(jù),可以支持常規(guī)的插入、刪除和查詢操作,并可以對樹進行壓縮來節(jié)省存儲空間。

多位基數(shù)樹的結(jié)構(gòu)與基本Radix樹相似,但是做了一些改進和優(yōu)化。具體來說,每個節(jié)點最多可以有兩個子節(jié)點,并且除了根節(jié)點外,所有節(jié)點都必須有一個有效的父節(jié)點。這使得多位基數(shù)樹可以按照路徑壓縮原理來壓縮樹的深度和節(jié)點數(shù)量,從而有效地節(jié)省存儲空間。在多位基數(shù)樹中,插入和刪除節(jié)點的操作是相對較為復(fù)雜的,但是查詢操作則可以得到相對高效的性能表現(xiàn)。

4.

Radix樹作為一種高效可擴展的數(shù)據(jù)結(jié)構(gòu),在Linux系統(tǒng)中的應(yīng)用廣泛且重要。在本篇文章中,我們介紹了Radix樹的基礎(chǔ)概念和應(yīng)用場景,深入剖析了Linux中的三種主要Radix樹實現(xiàn)以及其原理和使用方法。希望這篇文章能夠幫助讀者更好地理解和使用Linux系統(tǒng)中的Radix樹,從而實現(xiàn)更高效可靠的數(shù)據(jù)存儲和檢索。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!

嵌入式系統(tǒng)Linux內(nèi)核開發(fā)實戰(zhàn)指南的目錄

第1部分 嵌入式系統(tǒng)硬件開發(fā)

第1章 嵌入式系統(tǒng)概述 2

這一章對嵌入式系統(tǒng)的概念及其特點和應(yīng)用作了概括介紹,筆者根據(jù)自己多年的經(jīng)驗闡述了對嵌入式系統(tǒng)的理解,并對一些常見的嵌入式處理器的硬件數(shù)據(jù)進行了比較。

1.1 嵌入式系統(tǒng)概念 2

1.2 嵌入式處理器 3

1.3 嵌入式系統(tǒng)應(yīng)用 4

1.4 嵌入式系統(tǒng)發(fā)展 4

1.5 一些嵌入式處理器的硬件特性比較 5

第2章 ARM處理器概述 16

為了使本書內(nèi)容完整,從第2章到第7章中的內(nèi)容大部分是筆者閱讀《ARM體系結(jié)構(gòu)與編程》(詳情參見附錄中的參考文獻)的筆記和心得,把與嵌入式系統(tǒng)開發(fā)和Linux內(nèi)核密切相關(guān)的硬件知識進行了概括和整理,本章主要介紹了ARM處理器的特點、ARM處理器的體系架構(gòu)版本和ARM處理器系列。

2.1 ARM發(fā)展歷程 16

2.2 ARM處理器特點 17

2.3 ARM處理器應(yīng)用 17

2.4 ARM體系架構(gòu) 18

2.4.1 ARM體系架構(gòu)版本 18

2.4.2 ARM體系架構(gòu)變種(Variant) 20

2.4.3 ARM體系架構(gòu)版本命名格式 22

2.5 ARM處理器 22

2.5.1 ARM7系列處理器 23

2.5.2 ARM9系列處理器 24

2.5.3 ARM9E系列處理器 24

2.5.4 ARM10E系列處理器 25

2.5.5 SecurCore系列處理器 25

2.5.6 StrongARM處理器 26

2.5.7 Xscale處理器 26

第3章 ARM指令及其尋址方式 27

本章主要介紹了ARM處理器的指令和尋址方式以及ARM匯編偽指令,這是做ARM處理器應(yīng)用系統(tǒng)底層軟件開發(fā)必備的知識。

3.1 ARM處理器的程序狀態(tài)寄存器(PSR) 27

3.2 ARM指令的條件碼 28

3.3 ARM指令介紹 29

3.3.1 跳轉(zhuǎn)指令 29

3.3.2 數(shù)據(jù)處理指令 30

3.3.3 乘法指令 31

3.3.4 雜類算術(shù)指令 32

3.3.5 狀態(tài)寄存器訪問指令 32

3.3.6 Load/Store內(nèi)存訪問指令 33

3.3.7 批量Load/Store內(nèi)存訪問指令 34

3.3.8 LDREX和STREX指令 35

3.3.9 信號量操作指令 37

3.3.10 異常中斷產(chǎn)生指令 37

3.3.11 ARM協(xié)處理器指令 37

3.4 ARM指令尋址方式 39

3.4.1 數(shù)據(jù)處理指令的操作數(shù)的尋址方式 39

3.4.2 字及無符號字節(jié)的Load/Store指令的尋址方式 43

3.4.3 雜類Load/Store指令的尋址方式 47

3.4.4 批量Load/Store指令的尋址方式 49

3.4.5 協(xié)處理器Load/Store指令的尋址方式 51

3.4.6 ARM指令的尋址方式總結(jié) 52

3.5 ARM匯編偽操作(Directive) 53

3.5.1 符號定義偽操作 54

3.5.2 數(shù)據(jù)定義偽操作 54

3.5.3 匯編控制偽操作 56

3.5.4 棧中數(shù)據(jù)幀描述偽操作 57

3.5.5 信息報告?zhèn)尾僮?57

3.5.6 其他偽操作 58

3.6 ARM匯編偽指令 59

3.7 Thumb指令介紹 60

第4章 ARM處理器內(nèi)存管理單元(MMU) 61

本章主要介紹了ARM處理器內(nèi)存管理單元(MMU)的工作原理,Linux內(nèi)存管理功能是通過處理器硬件MMU實現(xiàn)的,在沒有MMU的處理器系統(tǒng)中,Linux只能工作在物理地址模式,沒有虛擬(線性)地址空間的概念。

4.1 ARM處理器中CP15協(xié)處理器的寄存器 61

4.1.1 訪問CP15寄存器的指令 61

4.1.2 CP15寄存器介紹 62

4.2 MMU簡介 70

4.3 系統(tǒng)訪問存儲空間的過程 71

4.3.1 使能MMU時的情況 71

4.3.2 禁止MMU時的情況 71

4.3.3 使能/禁止MMU時應(yīng)注意的問題 72

4.4 ARM處理器地址變換過程 72

4.4.1 MMU的一級映射描述符 73

4.4.2 MMU的二級映射描述符 74

4.4.3 基于段的地址變換過程 75

4.4.4 粗粒度大頁地址變換過程 75

4.4.5 粗粒度小頁地址變換過程 76

4.4.6 細粒度大頁地址變換過程 76

4.4.7 細粒度小頁地址變換過程 77

4.4.8 細粒度極小頁地址變換過程 77

4.5 ARM存儲空間訪問權(quán)限控制 78

4.6 TLB操作 79

4.6.1 使TLB內(nèi)容無效 79

4.6.2 鎖定TLB內(nèi)容 79

4.6.3 解除TLB中被鎖定的地址變換條目 80

4.7 存儲訪問失效 80

4.7.1 MMU失效(MMU Fault) 80

4.7.2 外部存儲訪問失效(External Abort) 81

第5章 ARM處理器的Cache和Write Buffer 82

本章主要介紹了ARM處理器高速緩存(Cache)和寫緩存(Write Buffer)的工作原理,使讀者了解如何提高處理器的性能。

5.1 Cache和Write Buffer一般性介紹 82

5.1.1 Cache工作原理 82

5.1.2 地址映像方式 83

5.1.3 Cache寫入方式原理簡介 84

5.1.4 關(guān)于Write-through和Write-back 85

5.1.5 Cache替換策略 86

5.1.6 使用Cache的必要性 87

5.1.7 使用Cache的可行性 87

5.2 ARM處理器中的Cache和Write Buffer 88

5.2.1 基本概念 88

5.2.2 Cache工作原理 88

5.2.3 Cache地址映射和變換方法 89

5.2.4 Cache分類 90

5.2.5 Cache替換算法 91

5.2.6 Cache內(nèi)容鎖定 91

5.2.7 MMU映射描述符中B位和C位的含義 92

5.2.8 Cache和Writer Buffer編程接口 93

5.3 ARM處理器的快速上下文切換技術(shù) 94

5.3.1 FCSE概述 94

5.3.2 FCSE原理 94

5.3.3 FCSE編程接口 95

第6章 ARM處理器存儲訪問一致性問題 97

本章介紹了在支持MMU、Cache和DMA的系統(tǒng)中可能出現(xiàn)的存儲訪問一致性問題,以及Linux中解決類似問題的方法。

6.1 存儲訪問一致性問題介紹 97

6.1.1 地址映射關(guān)系變化造成的數(shù)據(jù)不一致性 97

6.1.2 指令cache的數(shù)據(jù)不一致性問題 98

6.1.3 DMA造成的數(shù)據(jù)不一致問題 99

6.1.4 指令預(yù)取和自修改代碼 99

6.2 Linux中解決存儲訪問一致性問題的方法 99

第7章 ARM處理器工作模式與異常中斷處理 101

本章主要介紹了ARM處理器的工作模式和異常中斷處理過程,這是ARM處理器系統(tǒng)啟動程序編寫者或Bootloader開發(fā)人員的必備知識。

7.1 ARM處理器工作模式 101

7.2 ARM處理器異常中斷向量表和優(yōu)先級 103

7.3 ARM處理器異常中斷處理 104

7.3.1 進入異常中斷處理 104

7.3.2 退出異常中斷處理 105

7.4 ARM處理器的中斷(IRQ或FIQ) 109

第8章 ARM處理器啟動過程 110

本章根據(jù)筆者的開發(fā)經(jīng)驗介紹了ARM處理器系統(tǒng)的啟動過程以及編寫ARM處理器系統(tǒng)啟動程序需要注意的事項。

8.1 ARM處理器上電/復(fù)位操作 110

8.2 ARM處理器系統(tǒng)初始化過程 111

8.3 ARM處理器系統(tǒng)初始化編程注意事項 111

第9章 嵌入式系統(tǒng)設(shè)計與調(diào)試 113

本章根據(jù)筆者10多年的開發(fā)經(jīng)驗介紹了嵌入式系統(tǒng)的設(shè)計流程和調(diào)試方法,列舉了大量筆者工作中碰到的實際案例。本章內(nèi)容對于嵌入式系統(tǒng)硬件開發(fā)和調(diào)試有較高的參考、指導(dǎo)價值。

9.1 嵌入式系統(tǒng)設(shè)計流程 113

9.2 嵌入式系統(tǒng)硬件原理設(shè)計與審核 114

9.3 硬件設(shè)計工具軟件 117

9.4 嵌入式系統(tǒng)調(diào)試仿真工具 117

9.5 嵌入式系統(tǒng)調(diào)試診斷方法 118

第10章 自制簡易JTAG下載燒寫工具 123

本章根據(jù)筆者自己制作簡易JTAG線纜的經(jīng)驗,介紹了簡易JTAG線纜的硬件原理和軟件流程,這是初學(xué)者必備的最廉價的工具,必須掌握。

10.1 JTAG簡介 123

10.1.1 一些基本概念 124

10.1.2 JTAG接口信號 124

10.1.3 TAP控制器的狀態(tài)機 125

10.1.4 JTAG接口指令集 129

10.2 簡易JTAG線纜原理 130

10.2.1 PC并口定義 130

10.2.2 PC并口的寄存器 131

10.2.3 簡易JTAG線纜原理圖 133

10.2.4 簡易JTAG線纜燒寫連接圖(見圖10-5) 134

10.3 簡易JTAG燒寫代碼分析 135

10.3.1 簡易JTAG燒寫程序(flashp)使用說明 135

10.3.2 flash與CPU連接及flash屬性描述文件 136

10.3.3 簡易JTAG燒寫程序的執(zhí)行邏輯和流程 138

第2部分 Linux內(nèi)核開發(fā)初步

第11章 Bootloader 142

本章根據(jù)筆者的工作經(jīng)驗介紹了流行的幾種Bootloader、Bootloader應(yīng)該具備的基本功能以及Bootloader的裁剪與移植。

11.1 Bootloader的任務(wù)和作用 142

11.2 各種各樣的Bootloader 143

11.3 Bootloader編譯環(huán)境 144

11.4 Bootloader的移植與裁減 145

11.5 編譯Bootloader 145

11.6 燒寫B(tài)ootloader 146

11.7 Bootloader使用舉例 148

11.8 Bootloader修改舉例 149

第12章 創(chuàng)建嵌入式Linux開發(fā)環(huán)境 151

本章介紹了如何創(chuàng)建嵌入式系統(tǒng)Linux內(nèi)核交叉開發(fā)環(huán)境,本章和后續(xù)3章的內(nèi)容是嵌入式系統(tǒng)Linux內(nèi)核開發(fā)的基礎(chǔ),必須掌握。

12.1 安裝Linux host 151

12.2 在虛擬機中安裝Linux host 152

12.3 安裝Linux交叉編譯環(huán)境 157

12.4 在主機上設(shè)置TFTP Server 160

12.5 在主機上設(shè)置DHCP Server 161

12.6 在主機上設(shè)置Telnet server 161

12.7 在開發(fā)過程中使用NFS 162

12.8 設(shè)置超級終端 163

第13章 編譯Linux內(nèi)核 166

本章介紹了Linux內(nèi)核的配置和編譯方法。

13.1 獲取Linux內(nèi)核源代碼 166

13.2 Linux內(nèi)核目錄結(jié)構(gòu) 166

13.3 配置Linux內(nèi)核 167

13.4 編譯Linux內(nèi)核 168

第14章 創(chuàng)建Linux根文件系統(tǒng) 170

本章介紹了Linux的根文件系統(tǒng)的結(jié)構(gòu)以及創(chuàng)建根文件系統(tǒng)的方法。

14.1 根文件系統(tǒng)概述 170

14.2 根文件系統(tǒng)目錄結(jié)構(gòu) 171

14.3 獲取根文件系統(tǒng)組件源代碼 171

14.4 編譯根文件系統(tǒng)源代碼 171

14.5 創(chuàng)建一個32MB的RAMDISK根文件系統(tǒng) 173

14.6 在根文件系統(tǒng)中添加驅(qū)動模塊或者應(yīng)用程序 173

第15章 固化Linux內(nèi)核和根文件系統(tǒng) 174

本章介紹了固化(燒寫)Linux內(nèi)核和根文件系統(tǒng)的方法。

第16章 關(guān)于?Clinux 176

本章簡要介紹了?Clinux與標(biāo)準Linux的區(qū)別。

16.1 ?Clinux簡介 176

16.2 ?Clinux源代碼目錄結(jié)構(gòu) 177

16.3 ?Clinux與標(biāo)準Linux的區(qū)別 178

16.4 編譯?Clinux 179

第3部分 Linux 2.6內(nèi)核原理

第17章 Linux 2.6.10@ARM啟動過程 182

本章以start_kernel()和init()函數(shù)中調(diào)用到的函數(shù)說明的方式,介紹了從Linux匯編代碼入口到init內(nèi)核進程最后調(diào)用用戶空間init命令的Linux整個啟動過程。本章內(nèi)容是筆者之一次閱讀Linux內(nèi)核源代碼時對這些函數(shù)的注釋,僅供讀者了解start_kernel()和init()函數(shù)中調(diào)用到的每個函數(shù)的大致功能時使用。

17.1 Linux 2.6.10中與ARM處理器平臺硬件相關(guān)的結(jié)構(gòu)和全局變量 182

17.1.1 相關(guān)數(shù)據(jù)結(jié)構(gòu) 182

17.1.2 相關(guān)全局變量 187

17.2 Linux匯編代碼入口 189

17.3 Linux匯編入口處CPU的狀態(tài) 189

17.4 start_kernel()函數(shù)之前的匯編代碼執(zhí)行過程 190

17.5 start_kernel()函數(shù)中調(diào)用的函數(shù)介紹 192

17.5.1 lock_kernel()函數(shù) 192

17.5.2 page_address_init()函數(shù) 192

17.5.3 printk(linux_banner) 193

17.5.4 setup_arch(&command_line)函數(shù) 193

17.5.5 setup_per_cpu_areas()函數(shù) 198

17.5.6 p_prepare_boot_cpu()函數(shù) 199

17.5.7 sched_init()函數(shù) 199

17.5.8 build_all_zonelists()函數(shù) 200

17.5.9 page_alloc_init()函數(shù) 200

17.5.10 printk(Kernel command line: %s\n, saved_command_line) 201

17.5.11 parse_early_param()函數(shù) 201

17.5.12 parse_args()函數(shù) 201

17.5.13 sort_main_extable()函數(shù) 202

17.5.14 trap_init()函數(shù) 202

17.5.15 rcu_init()函數(shù) 202

17.5.16 init_IRQ()函數(shù) 203

17.5.17 pidhash_init()函數(shù) 203

17.5.18 init_timers()函數(shù) 203

17.5.19 softirq_init()函數(shù) 204

17.5.20 time_init()函數(shù) 204

17.5.21 console_init()函數(shù) 205

17.5.22 profile_init()函數(shù) 206

17.5.23 local_irq_enable()函數(shù) 207

17.5.24 vfs_caches_init_early()函數(shù) 207

17.5.25 mem_init()函數(shù) 208

17.5.26 kmem_cache_init()函數(shù) 210

17.5.27 numa_policy_init()函數(shù) 225

17.5.28 calibrate_delay()函數(shù) 227

17.5.29 pidmap_init()函數(shù) 228

17.5.30 pgtable_cache_init()函數(shù) 229

17.5.31 prio_tree_init()函數(shù) 229

17.5.32 anon_vma_init()函數(shù) 229

17.5.33 fork_init(num_physpages)函數(shù) 229

17.5.34 proc_caches_init()函數(shù) 230

17.5.35 buffer_init()函數(shù) 231

17.5.36 unnamed_dev_init()函數(shù) 231

17.5.37 security_init()函數(shù) 231

17.5.38 vfs_caches_init(num_physpages)函數(shù) 232

17.5.39 radix_tree_init()函數(shù) 237

17.5.40 signals_init()函數(shù) 237

17.5.41 page_writeback_init()函數(shù) 237

17.5.42 proc_root_init()函數(shù) 238

17.5.43 check_bugs()函數(shù) 240

17.5.44 acpi_early_init()函數(shù) 244

17.5.45 rest_init()函數(shù) 244

17.6 init()進程執(zhí)行過程 265

17.6.1 p_prepare_cpus(max_cpus)函數(shù) 265

17.6.2 do_pre_p_initcalls()函數(shù) 265

17.6.3 fixup_cpu_present_map()函數(shù) 267

17.6.4 p_init()函數(shù) 267

17.6.5 sched_init_p()函數(shù) 268

17.6.6 populate_rootfs()函數(shù) 268

17.6.7 do_basic_setup()函數(shù) 283

17.6.8 sys_access()函數(shù) 292

17.6.9 free_initmem()函數(shù) 301

17.6.10 unlock_kernel()函數(shù) 301

17.6.11 numa_default_policy()函數(shù) 302

17.6.12 sys_dup()函數(shù) 302

17.6.13 execve()函數(shù) 302

第18章 Linux內(nèi)存管理 305

從本章開始,筆者將帶領(lǐng)讀者走進神秘的Linux內(nèi)核世界。筆者在閱讀內(nèi)核源代碼以及兩本相關(guān)參考書(見參考文獻)的基礎(chǔ)上,以自己的理解和語言總結(jié)概括了Linux內(nèi)核每個組件的原理。筆者對與每個內(nèi)核組件相關(guān)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和全局變量作了盡量詳盡的說明,并且對核心函數(shù)進行了詳細注釋,在向讀者灌輸理論知識的同時引導(dǎo)讀者自己去閱讀、分析Linux內(nèi)核源代碼。本章講解了Linux內(nèi)核之一大核心組件“內(nèi)存管理”的原理和實現(xiàn)內(nèi)幕。

18.1 Linux內(nèi)存管理概述 305

18.1.1 Linux內(nèi)存管理的一些基本概念 305

18.1.2 內(nèi)存管理相關(guān)數(shù)據(jù)結(jié)構(gòu) 309

18.1.3 內(nèi)存管理相關(guān)宏和全局變量 330

18.1.4 Linux內(nèi)存管理的任務(wù) 341

18.1.5 Linux中的物理和虛擬存儲空間布局 341

18.2 為虛擬(線性地址)存儲空間建立頁表 345

18.3 設(shè)置存儲空間的訪問控制屬性 348

18.4 Linux中的內(nèi)存分配和釋放 350

18.4.1 在系統(tǒng)啟動初期申請內(nèi)存 350

18.4.2 系統(tǒng)啟動之后的內(nèi)存分配與釋放 360

第19章 Linux進程管理 480

本章講解了Linux內(nèi)核第二大核心組件“進程管理”的原理和實現(xiàn)內(nèi)幕。

19.1 進程管理概述 480

19.1.1 進程相關(guān)概念 480

19.1.2 進程分類 481

19.1.3 0號進程 481

19.1.4 1號進程 481

19.1.5 其他一些內(nèi)核線程 482

19.1.6 進程描述符(struct task_struct) 482

19.1.7 進程狀態(tài) 482

19.1.8 進程標(biāo)識符(PID) 483

19.1.9 current宏定義 484

19.1.10 進程鏈表 484

19.1.11 PID hash表和鏈表 485

19.1.12 硬件上下文(Hardware Context) 485

19.1.13 進程資源限制 485

19.1.14 進程管理相關(guān)數(shù)據(jù)結(jié)構(gòu) 486

19.1.15 進程管理相關(guān)宏定義 502

19.1.16 進程管理相關(guān)全局變量 514

19.2 進程管理相關(guān)初始化 520

19.3 進程創(chuàng)建與刪除 529

19.4 進程調(diào)度 551

19.4.1 進程類型 553

19.4.2 進程調(diào)度類型 554

19.4.3 基本時間片計算方法 555

19.4.4 動態(tài)優(yōu)先級算法 556

19.4.5 交互式進程 556

19.4.6 普通進程調(diào)度 557

19.4.7 實時進程調(diào)度 557

19.4.8 進程調(diào)度函數(shù)分析 558

19.5 進程切換 576

19.6 用戶態(tài)進程間通信 581

19.6.1 信號(Signal) 581

19.6.2 管道(pipe)和FIFO(命名管道) 627

19.6.3 進程間通信原語(System V IPC) 641

第20章 Linux文件管理 651

本章講解了Linux內(nèi)核第三大核心組件“文件系統(tǒng)”的原理和實現(xiàn)內(nèi)幕。

20.1 文件系統(tǒng)概述 651

20.1.1 Linux文件管理相關(guān)概念 652

20.1.2 Linux文件管理相關(guān)數(shù)據(jù)結(jié)構(gòu) 657

20.1.3 Linux文件管理相關(guān)宏定義 682

20.1.4 Linux文件管理相關(guān)全局變量 691

20.2 文件管理相關(guān)初始化 699

20.3 文件系統(tǒng)類型注冊 711

20.4 掛接文件系統(tǒng) 712

20.5 文件系統(tǒng)類型超級塊讀取 730

20.5.1 get__single()通用超級塊讀取函數(shù) 731

20.5.2 get__nodev()通用超級塊讀取函數(shù) 737

20.5.3 get__bdev()通用超級塊讀取函數(shù) 738

20.5.4 get__pseudo()通用超級塊讀取函數(shù) 740

20.6 路徑名查找 747

20.7 訪問文件操作 759

20.7.1 打開文件 759

20.7.2 關(guān)閉文件 766

20.7.3 讀文件 768

20.7.4 寫文件 785

20.8 異步I/O系統(tǒng)調(diào)用 792

20.9 Linux特殊文件系統(tǒng) 792

20.9.1 rootfs文件系統(tǒng) 793

20.9.2 sysfs文件系統(tǒng) 797

20.9.3 devfs設(shè)備文件系統(tǒng) 800

20.9.4 bdev塊設(shè)備文件系統(tǒng) 803

20.9.5 ramfs文件系統(tǒng) 804

20.9.6 proc文件系統(tǒng) 804

20.10 磁盤文件系統(tǒng) 813

20.10.1 ext2文件系統(tǒng)相關(guān)數(shù)據(jù)結(jié)構(gòu) 813

20.10.2 ext2文件系統(tǒng)磁盤分區(qū)格式 819

20.10.3 ext2文件系統(tǒng)的各種文件 820

20.10.4 創(chuàng)建ext2文件系統(tǒng) 821

20.10.5 ext2文件系統(tǒng)的操作方法 822

20.11 關(guān)于initramfs 824

20.11.1 initramfs概述 824

20.11.2 initramfs與initrd的區(qū)別 824

20.11.3 initramfs相關(guān)全局變量 825

20.11.4 initramfs被編譯鏈接的位置 825

20.11.5 initramfs文件的生成過程 825

20.11.6 initramfs二進制文件格式說明(cpio格式) 828

20.11.7 initramfs二進制文件和列表文件對照示例 829

20.11.8 initramfs利弊 830

20.12 關(guān)于initrd 830

20.12.1 initrd概述 830

20.12.2 initrd相關(guān)全局變量 831

20.13 關(guān)于gzip壓縮文件 832

第21章 Linux模塊設(shè)計 834

本章講解了Linux內(nèi)核模塊程序與應(yīng)用程序的區(qū)別以及如何編寫和加載Linux內(nèi)核模塊程序。

21.1 Linux模塊設(shè)計概述 834

21.2 Linux的內(nèi)核空間和用戶空間 834

21.3 內(nèi)核模塊與應(yīng)用程序的區(qū)別 835

21.4 編譯模塊 837

21.5 裝載和卸載模塊 837

21.6 模塊層疊 838

21.7 模塊版本依賴 839

21.8 模塊編程示例 839

第22章 Linux系統(tǒng)異常中斷管理 841

本章講解了Linux內(nèi)核如何管理系統(tǒng)異常中斷以及Linux系統(tǒng)調(diào)用的實現(xiàn)內(nèi)幕。

22.1 Linux異常中斷處理 841

22.2 指令預(yù)取和數(shù)據(jù)訪問中止異常中斷處理 849

22.2.1 指令預(yù)取中止異常中斷處理 850

22.2.2 數(shù)據(jù)訪問中止異常中斷處理 858

22.3 Linux中斷處理 863

22.3.1 內(nèi)核模式下的中斷處理 863

22.3.2 用戶模式下的中斷處理 867

22.4 從中斷返回 868

22.5 Linux中斷管理 869

22.5.1 Linux中斷管理相關(guān)數(shù)據(jù)結(jié)構(gòu)與全局變量 870

22.5.2 Linux中斷管理初始化 872

22.5.3 安裝和卸載中斷處理程序 874

22.5.4 使能和禁止中斷 878

22.6 Linux系統(tǒng)調(diào)用 880

22.6.1 Linux系統(tǒng)調(diào)用內(nèi)核實現(xiàn)過程 880

22.6.2 從系統(tǒng)調(diào)用返回 889

22.6.3 Linux系統(tǒng)調(diào)用用戶程序接口函數(shù) 890

22.6.4 Linux系統(tǒng)調(diào)用用戶接口函數(shù)與內(nèi)核實現(xiàn)函數(shù)之間參數(shù)傳遞 899

第23章 Linux軟中斷和工作隊列 901

本章講解了Linux內(nèi)核中的兩種延遲處理機制“軟中斷”和“工作隊列”的原理和實現(xiàn)。

23.1 概述 901

23.2 Linux軟中斷 902

23.2.1 軟中斷相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 903

23.2.2 軟中斷初始化 904

23.2.3 軟中斷的核心操作函數(shù)do_softirq() 908

23.2.4 軟中斷看護進程執(zhí)行函數(shù)ksoftirqd() 912

23.2.5 如何使用軟中斷 913

23.3 Linux工作隊列 918

23.3.1 Linux工作隊列相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 918

23.3.2 Linux工作隊列初始化 921

23.3.3 將工作加入到工作隊列中 924

23.3.4 工作者進程執(zhí)行函數(shù)worker_thread() 928

23.3.5 使用Linux工作隊列 931

第24章 Linux并發(fā)與競態(tài) 933

本章講解了Linux內(nèi)核同步機制,包括幾種鎖定技術(shù)以及免鎖算法。

24.1 并發(fā)與競態(tài)概述 933

24.1.1 Linux中的并發(fā)源 934

24.1.2 競態(tài)可能導(dǎo)致的后果 934

24.1.3 避免競態(tài)的規(guī)則 934

24.2 消除競態(tài)的“鎖定”技術(shù) 935

24.2.1 信號量(semphore)和互斥體(mutual exclusion) 935

24.2.2 讀寫信號量(rw_semaphore) 938

24.2.3 完成量(completion) 941

24.2.4 自旋鎖(spinlock_t) 942

24.2.5 讀寫自旋鎖(rwlock_t) 946

24.2.6 使用“鎖定”技術(shù)的注意事項 949

24.3 消除競態(tài)的非“鎖定”方法 949

24.3.1 免鎖算法 949

24.3.2 原子操作 950

24.3.3 位操作 951

24.3.4 順序鎖 952

24.3.5 讀-復(fù)制-更新(Read-Copy-Update,RCU) 954

第25章 Linux設(shè)備驅(qū)動程序 958

本章講解了Linux內(nèi)核第四大核心組件“設(shè)備驅(qū)動”的原理和實現(xiàn)內(nèi)幕。同時還總結(jié)歸納了編寫各種設(shè)備驅(qū)動程序的方法和步驟。

25.1 設(shè)備驅(qū)動程序概述 958

25.1.1 設(shè)備驅(qū)動程序組成部分 959

25.1.2 設(shè)備號 959

25.1.3 設(shè)備文件 960

25.1.4 編寫設(shè)備驅(qū)動程序的關(guān)鍵 961

25.2 字符設(shè)備驅(qū)動程序 961

25.2.1 字符設(shè)備相關(guān)數(shù)據(jù)結(jié)構(gòu) 961

25.2.2 字符設(shè)備相關(guān)全局變量 963

25.2.3 字符設(shè)備驅(qū)動程序全局初始化 963

25.2.4 為字符設(shè)備分配設(shè)備號 964

25.2.5 注冊字符設(shè)備驅(qū)動程序 968

25.2.6 字符設(shè)備的操作方法 971

25.2.7 用戶對字符設(shè)備驅(qū)動程序的調(diào)用過程 972

25.2.8 如何編寫字符設(shè)備驅(qū)動程序 974

25.2.9 關(guān)于TTY設(shè)備驅(qū)動程序 974

25.2.10 控制臺設(shè)備驅(qū)動程序 975

25.3 塊設(shè)備驅(qū)動程序 986

25.3.1 塊設(shè)備相關(guān)數(shù)據(jù)結(jié)構(gòu) 986

25.3.2 塊設(shè)備相關(guān)宏定義 997

25.3.3 塊設(shè)備相關(guān)全局變量 999

25.3.4 塊設(shè)備驅(qū)動程序全局初始化 1004

25.3.5 為塊設(shè)備分配主設(shè)備號 1006

25.3.6 注冊塊設(shè)備驅(qū)動程序 1009

25.3.7 塊設(shè)備驅(qū)動程序的操作方法 1017

25.3.8 調(diào)用塊設(shè)備驅(qū)動程序過程 1017

25.3.9 I/O調(diào)度 1031

25.3.10 如何編寫塊設(shè)備驅(qū)動程序 1032

25.4 網(wǎng)絡(luò)設(shè)備驅(qū)動程序 1033

25.4.1 網(wǎng)絡(luò)設(shè)備驅(qū)動程序概述 1033

25.4.2 網(wǎng)絡(luò)設(shè)備相關(guān)數(shù)據(jù)結(jié)構(gòu) 1034

25.4.3 網(wǎng)絡(luò)設(shè)備相關(guān)宏定義 1044

25.4.4 網(wǎng)絡(luò)設(shè)備相關(guān)全局變量 1045

25.4.5 創(chuàng)建net_device結(jié)構(gòu) 1046

25.4.6 注冊網(wǎng)絡(luò)設(shè)備 1048

25.4.7 網(wǎng)絡(luò)設(shè)備的操作方法 1050

25.4.8 網(wǎng)絡(luò)設(shè)備中斷服務(wù)程序 1051

25.4.9 如何編寫網(wǎng)絡(luò)設(shè)備驅(qū)動程序 1051

25.5 PCI設(shè)備驅(qū)動程序 1052

25.5.1 PCI接口定義 1053

25.5.2 PCI設(shè)備的三個地址空間 1057

25.5.3 PCI總線仲裁 1058

25.5.4 PCI設(shè)備編號 1059

25.5.5 如何訪問PCI配置空間 1059

25.5.6 如何配置PCI設(shè)備 1061

25.5.7 PCI驅(qū)動程序相關(guān)數(shù)據(jù)結(jié)構(gòu) 1062

25.5.8 PCI驅(qū)動程序相關(guān)宏定義 1068

25.5.9 PCI驅(qū)動程序相關(guān)全局變量 1068

25.5.10 Bootloader和內(nèi)核做的事 1069

25.5.11 PCI驅(qū)動程序注冊 1069

25.5.12 PCI驅(qū)動程序接口函數(shù) 1071

25.5.13 如何編寫PCI驅(qū)動程序 1072

第4部分 Linux內(nèi)核開發(fā)高級指南

第26章 Linux系統(tǒng)參數(shù)設(shè)置 1076

從本章開始的后續(xù)章節(jié)主要講解了比較高級或者平時較少關(guān)注的Linux內(nèi)核方面的知識,本章講解了Linux中的4種系統(tǒng)參數(shù)格式和設(shè)置方法。

26.1 旗語系統(tǒng)參數(shù)(tag) 1076

26.1.1 與旗語系統(tǒng)參數(shù)相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 1076

26.1.2 旗語系統(tǒng)參數(shù)說明 1082

26.1.3 旗語系統(tǒng)參數(shù)設(shè)置方法 1084

26.2 前期命令行設(shè)置的系統(tǒng)參數(shù) 1084

26.2.1 與前期命令行系統(tǒng)參數(shù)相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 1084

26.2.2 前期命令行設(shè)置的系統(tǒng)參數(shù)說明 1085

26.2.3 前期命令行系統(tǒng)參數(shù)設(shè)置方法 1086

26.2.4 如何添加自己的前期命令行設(shè)置的系統(tǒng)參數(shù) 1087

26.3 老式命令行系統(tǒng)參數(shù) 1087

26.3.1 與老式命令行系統(tǒng)參數(shù)相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 1087

26.3.2 老式命令行設(shè)置的系統(tǒng)參數(shù)說明 1088

26.3.3 老式命令行設(shè)置的系統(tǒng)參數(shù)設(shè)置方法 1089

26.3.4 如何添加自己的老式命令行設(shè)置的系統(tǒng)參數(shù) 1089

26.4 命令行系統(tǒng)參數(shù) 1089

26.4.1 與命令行系統(tǒng)參數(shù)相關(guān)數(shù)據(jù)結(jié)構(gòu)和全局變量 1089

26.4.2 命令行設(shè)置的系統(tǒng)參數(shù)說明 1090

26.4.3 命令行設(shè)置的系統(tǒng)參數(shù)設(shè)置方法 1090

第27章 Linux內(nèi)核調(diào)試 1091

本章介紹了Linux內(nèi)核的調(diào)試方法。

27.1 打開Linux內(nèi)核及其各模塊自帶的調(diào)試開關(guān) 1091

27.2 內(nèi)核剖析(Profiling) 1093

27.3 通過打印調(diào)試(printk) 1095

27.3.1 關(guān)于printk() 1095

27.3.2 內(nèi)核信息級別 1096

27.3.3 打印速度限制 1097

27.3.4 控制臺重定向 1098

27.4 使用proc文件系統(tǒng)調(diào)試 1098

27.5 oops消息 1098

27.6 通過跟蹤命令strace調(diào)試 1099

27.7 使用gdb、kdb、kgdb調(diào)試 1099

第28章 Linux內(nèi)核移植 1101

本章介紹了Linux內(nèi)核的移植方法。

第29章 Linux內(nèi)核優(yōu)化 1104

本章介紹了Linux內(nèi)核的優(yōu)化方法。

29.1 編譯優(yōu)化 1104

29.2 根據(jù)CPU特性進行優(yōu)化 1105

29.3 對內(nèi)核進行裁減 1105

29.4 優(yōu)化系統(tǒng)內(nèi)存配置 1106

29.5 優(yōu)化系統(tǒng)啟動過程以縮減系統(tǒng)啟動時間 1106

29.6 內(nèi)存映射優(yōu)化 1107

29.7 工具軟件輔助優(yōu)化 1107

第30章 Linux定時器 1109

本章介紹了Linux內(nèi)核的軟件定時器。

30.1 定時器相關(guān)數(shù)據(jù)結(jié)構(gòu) 1109

30.2 定時器相關(guān)宏定義 1111

30.3 定時器相關(guān)全局變量 1112

30.4 定時器和時鐘初始化 1113

30.5 獲取系統(tǒng)時間 1114

30.6 延遲函數(shù) 1115

30.7 與定時器相關(guān)系統(tǒng)調(diào)用 1115

30.8 使用定時器方法 1116

第31章 雜項 1117

本章介紹了PER_CPU變量以及Linux中的數(shù)據(jù)類型定義。

31.1 per_cpu變量 1117

31.2 Linux中的數(shù)據(jù)類型定義 1118

第32章 編譯鏈接文件說明 1119

本章注釋了ARM處理器系統(tǒng)中Linux內(nèi)核的鏈接文件,以幫助讀者了解編譯出來的Linux內(nèi)核各區(qū)段在內(nèi)存中的存放位置。

參考文獻 1125

linux系統(tǒng)C語言的nm是什么意思

就是搜索動態(tài)鏈接庫 庫函數(shù)的

不是C語言吧?是系統(tǒng)命令。用來列舉object文件(比如編譯出的a.out)的symbols.

用法是:

nm

>

具體而言,nm用來列出目標(biāo)文件的符號清單。

如果沒有為nm命令指出目標(biāo)文件,則nm假定目標(biāo)文件是a.out。下面列出該命令的任選項,大部分支持“-”開頭的短格式和“-“開頭的長格式。

-A、-o或–print-file-name:在找到的各個符號的名字前加上文件名,而不是在此文件的所有符號前只出現(xiàn)文件名一次。

例如nmlibtest.a的輸出如下:

CPThread.o:

TMain__8CPThreadPv

TStart__8CPThread

T_._8CPThread

T__8CPThread

?__FRAME_BEGIN__

…………………………………

則nm-A的輸出如下:

libtest.a:CPThread.o:TMain__8CPThreadPv

libtest.a:CPThread.o:TStart__8CPThread

libtest.a:CPThread.o:T_._8CPThread

libtest.a:CPThread.o:T__8CPThread

libtest.a:CPThread.o:?__FRAME_BEGIN__

…………………………………………………………..

-a或–debug-syms:顯示調(diào)試符號。

-B:等同于–format=bsd,用來兼容MIPS的nm。

-C或–demangle:將低級符號名解碼(demangle)成用戶級名字。這樣可以使得C 函數(shù)名具有可讀性。

-D或–dynamic:顯示動態(tài)符號。該任選項僅對于動態(tài)目標(biāo)(例如特定類型的共享庫)有意義。

-fformat:使用format格式輸出。format可以選取bsd、sysv或posix,該選項在GNU的nm中有用。默認為bsd。

-g或–extern-only:僅顯示外部符號。

-n、-v或–numeric-sort:按符號對應(yīng)地址的順序排序,而非按符號名的字符順序。

-p或–no-sort:按目標(biāo)文件中遇到的符號順序顯示,不排序。

-P或–portability:使用POSIX.2標(biāo)準輸出格式代替默認的輸出格式。等同于使用任選項-fposix。

-s或–print-armap:當(dāng)列出庫中成員的符號時,包含索引。索引的內(nèi)容包含:哪些模塊包含哪些名字的映射。

-r或–reverse-sort:反轉(zhuǎn)排序的順序(例如,升序變?yōu)榻敌?。

–size-sort:按大小排列符號順序。該大小是按照一個符號的值與它下一個符號的值進行計算的。

-tradix或–radix=radix:使用radix進制顯示符號值。radix只能為“d”表示十進制、“o”表示八進制或“x”表示十六進制。

–target=bfdname:指定一個目標(biāo)代碼的格式,而非使用系統(tǒng)的默認格式。

-u或–undefined-only:僅顯示沒有定義的符號(那些外部符號)。

-l或–line-numbers:對每個符號,使用調(diào)試信息來試圖找到文件名和行號。對于已定義的符號,查找符號地址的行號。對于未定義符號,查找指向符號重定位入口的行號。如果可以找到行號信息,顯示在符號信息之后。

-V或–version:顯示nm的版本號。

–help:顯示nm的任選項。

ar cs libmy.a//創(chuàng)建一個庫

ar rs libmy.a 1.o//增加一個模塊

ar t libmy.a//顯示庫里的模塊

關(guān)于linux radix樹的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢:028-86922220。


本文名稱:深入剖析Linux的Radix樹使用方法與原理(linuxradix樹)
文章源于:http://www.5511xx.com/article/coessjd.html