Linux典藏大系:ARM嵌入式Linux系統(tǒng)開發(fā)詳解(第2版) [弓雷著] pd
168MB / 05-12
ARM嵌入式Linux系統(tǒng)開發(fā)詳解 (弓雷) 中文PDF掃描版 71.5M
71.5MB / 09-07
精通ARM嵌入式Linux系統(tǒng)開發(fā) PDF掃描版[122MB]
122.64MB / 03-02
ARM LINUX入門與實(shí)踐 PDF掃描版[41MB]
41.53KB / 12-17
-
-
-
Kali Linux Revealed完美版(掌握滲透測試) 官方教程 pdf完整版 Linux_unix / 25.0MB
-
-
Kali Linux系統(tǒng)使用基礎(chǔ)教程(大學(xué)霸) V2.0 中文PDF完整版 Linux_unix / 65MB
-
-
韓順平2021圖解Linux升級 + 一周內(nèi)學(xué)會linux 完整版PDF Linux_unix / 32.0MB
-
跟老男孩學(xué)linux三劍客命令(awk sed grep全攻略) v1.5 中文PDF版 Linux_unix / 933KB
-
Linux應(yīng)急手冊 中文PDF完整版 Linux_unix / 158MB
-
詳情介紹
《ARM Linux內(nèi)核源碼剖析》是多位作者在3年Liunx內(nèi)核分析經(jīng)驗(yàn)和龐大資料基礎(chǔ)上寫成的,收錄了其他同類書未曾講解的內(nèi)容并進(jìn)行逐行分析,一掃當(dāng)前市場中其他理論書帶給讀者的郁悶。書中詳細(xì)的代碼分析與大量插圖能夠使讀者對Linux內(nèi)核及ARM獲得正確認(rèn)識,自然而然習(xí)得如何有效分析定期發(fā)布的Linux內(nèi)核。
《ARM Linux內(nèi)核源碼剖析》適合想從Linux內(nèi)核啟動開始透徹分析全部啟動過程的讀者,因Linux代碼量龐大而束手無策的人、想要了解Linux實(shí)際運(yùn)行過程的人、渴求OS實(shí)操理論的人,本書必將成為他們不可或缺的參考書。
目錄
第一部分 ARMLinux內(nèi)核——分析內(nèi)核前需要做的準(zhǔn)備
第1章 內(nèi)核介紹及2.6版和3.2版之間的差異 2
1.1 內(nèi)核的誕生、作用以及內(nèi)部結(jié)構(gòu) 2
1.1.1 Linus創(chuàng)造的Linux 2
1.1.2 由多種子系統(tǒng)集成運(yùn)行的單內(nèi)核 3
1.1.3 全世界最著名的通用操作系統(tǒng) 5
1.2 內(nèi)核2.6版和3.2版之間的差異 5
第2章 內(nèi)核構(gòu)建系統(tǒng) 8
2.1 內(nèi)核初始化 8
2.2 內(nèi)核配置 9
2.3 內(nèi)核構(gòu)建 11
2.4 內(nèi)核安裝 17
第3章 了解ARM處理器 19
3.1 處理器概要和特征 19
3.2 處理器架構(gòu)與核心 19
3.3 處理器命名規(guī)則 21
3.4 處理器內(nèi)部結(jié)構(gòu) 21
3.5 處理器模式和寄存器 23
3.6 處理器異常 25
3.7 硬件擴(kuò)展功能 26
3.7.1 緩存 26
3.7.2 內(nèi)存管理裝置 26
3.7.3 協(xié)處理器 26
第4章 構(gòu)建分析環(huán)境 28
4.1 下載并安裝Linux源內(nèi)核 28
4.1.1 下載源內(nèi)核 28
4.1.2 安裝源內(nèi)核 30
4.2 安裝ctags+cscope 31
4.2.1 用ctags制作源代碼標(biāo)簽 31
4.2.2 制作cscope標(biāo)簽數(shù)據(jù)庫 33
4.3 vim插件下載及環(huán)境設(shè)置 34
4.3.1 下載vim插件 34
4.3.2 vim+plugin的環(huán)境結(jié)構(gòu) 37
4.3.3 vim環(huán)境設(shè)置 38
4.4 查看源碼分析環(huán)境工具 40
第二部分 內(nèi)核的啟動——start_kernel調(diào)用方法
第5章 準(zhǔn)備解壓內(nèi)核 48
5.1 進(jìn)入啟動加載后結(jié)束首個啟動——start標(biāo)簽 49
5.2 BSS系統(tǒng)域初始化——not_relocated標(biāo)簽 50
5.3 激活緩存——cache_on標(biāo)簽 53
5.4 頁目錄項(xiàng)初始化——__setup_mmu標(biāo)簽 56
5.5 指令緩存激活及緩存策略適用——__common_mmu_cache_on標(biāo)簽 58
第6章 從壓縮的內(nèi)核zImage還原內(nèi)核映像 60
6.1 解壓內(nèi)核并避免覆寫——wont_overwrite、decompress_kernel標(biāo)簽 61
6.2 調(diào)用已解壓內(nèi)核——call_kernel標(biāo)簽 62
6.3 緩存清理及清除——cache_clean_flush標(biāo)簽 62
6.4 緩存禁用——cache_off標(biāo)簽 64
第7章 調(diào)用start_kernel() 65
7.1 初始化指向——stext標(biāo)簽 65
7.2 處理器信息搜尋——__look_processor_type 69
7.2.1 __lookup_processor_type標(biāo)簽 69
7.2.2 __proc_info_begin和__proc_info_end中保存的信息 71
7.2.3 在MMU禁用狀態(tài)下將虛擬地址轉(zhuǎn)換為物理地址 73
7.2.4 查找proc_info_list結(jié)構(gòu)體并比較處理器信息 74
7.3 搜尋我的機(jī)型——__lookup_machine_type 75
7.3.1 __lookup_machine_type標(biāo)簽 75
7.3.2 保存在__arch_info_begin和__arch_info_end中的machine_desc信息及訪問路徑 76
7.3.3 查找machine_desc結(jié)構(gòu)體并比較機(jī)器信息 77
7.4 源自啟動加載項(xiàng)的atags——__vet_atags標(biāo)簽 78
7.5 對虛擬內(nèi)存進(jìn)行基礎(chǔ)創(chuàng)建——__create_page_tables標(biāo)簽 81
7.6 設(shè)置核心(core)——v6_setup標(biāo)簽 85
7.7 打開MMU并使用虛擬地址——__enable_mmu/__turn_mmu_on標(biāo)簽 86
7.8 跳轉(zhuǎn)至start_kernel——__mmap_switched標(biāo)簽 90
第三部分 內(nèi)核的執(zhí)行——內(nèi)核的起始與結(jié)束位置
第8章 start_setup_processor_id()~~lock_kernel() 94
8.1 smp_setup_processor_id()、lockdep_init()、debug_objects_early_init() 95
8.1.1 smp_setup_processor_id() 95
8.1.2 lockdep_init() 95
8.1.3 debug_objects_early_init() 96
8.2 棧溢出感應(yīng)——__boot_init_stack_canary 98
8.3 初始化提供進(jìn)程集成方法的cgroup——__cgroup_init_early() 98
8.3.1 cgroupfs_root和cgroup的關(guān)聯(lián)初始化——init_cgroup_root() 102
8.3.2 初始化子系統(tǒng)——cgroup_init_subsys() 103
8.4 禁用IRQ 104
8.5 early_boot_irqs_off()、early_init_irq_lock_class() 104
8.6 大內(nèi)核鎖——lock_kernel() 106
第9章 注冊針對時鐘事件的處理器 111
9.1 函數(shù)的聲明和定義——tick_init() 111
9.2 注冊處理事件的處理器——_clockevents_register_notifier() 113
9.2.1 為clockevents_lock添加自旋鎖 114
9.2.2 clockevents_chain生成原理 115
9.2.3 在clockevents_chain中注冊tick_notifier的方法 116
9.2.4 對clockevents_lock解除自旋鎖的原理 117
第10章 在CPU位圖中注冊當(dāng)前運(yùn)行CPU/初始化HIGHMEM管理 119
10.1 在包含熱插拔信息的位圖上添加執(zhí)行init_task的CPU——boot_cpu_init() 119
10.2 管理高端內(nèi)存——page_address_init() 121
第11章 整體指向——setup_arch 123
第12章 unwind_init()~~early_trap_init() 126
12.1 ?;厮?mdash;—unwind_init() 126
12.2 求出包含機(jī)器信息的machine_desc結(jié)構(gòu)體——setup_machine() 126
12.3 處理ATAG信息——setup_arch() 127
12.4 處理啟動參數(shù)——parse_cmdline() 129
12.5 構(gòu)建源代碼樹——request_standard_resources() 131
12.6 初始化cpupossible位圖——smp_init_cpus() 136
12.7 用棧指定各ARM異常模式——cpu_init() 137
12.8 初始化以處理異常——early_trap_init() 138
12.9 查看中斷處理器函數(shù) 143
12.9.1 調(diào)用IRQ處理器——asm_do_IRQ() 147
12.9.2 返回中斷之前——ret_to_user標(biāo)簽 147
第13章 設(shè)置處理器——setup_processor() 150
13.1 查看setup_processor()結(jié)構(gòu) 150
13.2 查找CPUID——read_cpuid_id() 151
13.3 查找處理器信息——lookup_processor_type() 153
13.4 查找處理器結(jié)構(gòu)信息——cpu_architecture() 153
13.5 查找處理器緩存類型_cacheid_init() 156
13.6 調(diào)用處理器初始化函數(shù)——cpu_proc_init() 160
第14章 準(zhǔn)備內(nèi)存分頁——paging_init() 163
14.1 查看paging_init()的整體結(jié)構(gòu) 163
14.2 設(shè)置內(nèi)存類型表——build_mem_type_table() 165
14.3 檢驗(yàn)內(nèi)存信息——sanity_check_meminfo() 166
14.4 準(zhǔn)備頁表——prepare_page_table() 168
14.4.1 prepare_page_table() 168
14.4.2 Linux的分頁結(jié)構(gòu) 170
14.4.3 求出頁目錄項(xiàng) 170
14.4.4 pmd_clear() 172
14.5 設(shè)備區(qū)域映射準(zhǔn)備——devicemaps_init() 174
14.6 準(zhǔn)備使用高端內(nèi)存——kmap_init() 177
14.7 初始化零頁 178
14.7.1 分配內(nèi)存——__alloc_bootmem_nopanic() 179
14.7.2 在指定節(jié)點(diǎn)使用fallback分配內(nèi)存——alloc_bootmem_core 180
14.7.3 將虛擬地址變換為page結(jié)構(gòu)體——virt_to_page 182
14.8 保持?jǐn)?shù)據(jù)緩存一致性——flush_dcache_page() 182
第15章 在啟動時初始化內(nèi)存分配器 184
15.1 bootmem函數(shù)流和數(shù)據(jù)結(jié)構(gòu) 185
15.2 查看bootmem_init()結(jié)構(gòu) 188
15.3 查找虛擬內(nèi)存盤位置——check_initrd() 189
15.4 將節(jié)點(diǎn)的BANK信息反映到頁目錄——bootmem_init_node() 191
15.4.1 map_memory_bank() 192
15.4.2 bootmem_bootmap_pages() 195
15.4.3 find_bootmap_pfn() 196
15.4.4 node_set_online() 197
15.4.5 NODE_DATA宏 198
15.4.6 init_bootmem_node() 200
15.4.7 free_bootmem_node() 202
15.4.8 reserve_bootmem_node() 202
15.5 排除0號節(jié)點(diǎn)——reserve_node_zero() 203
15.6 排除虛擬內(nèi)存盤節(jié)點(diǎn)——bootmem_reserve_initrd() 204
15.7 設(shè)置為無可用頁——bootmem_free_node() 205
15.8 初始化free_area區(qū)域 207
15.8.1 free_area結(jié)構(gòu)體 207
15.8.2 free_area_init_node() 208
15.8.3 free_area_init_core() 209
15.8.4 init_currently_empty_zone() 211
15.8.5 memmap_init() 212
第16章 mm_init_owner()~~preempt_disable() 217
第17章 構(gòu)建借用內(nèi)存的后臺 233
第18章 page_alloc_init()~~pidhash_init() 253
第19章 init_timers()~~page_cgroup_init() 273
第20章 終止bootmem分配器并替換為伙伴系統(tǒng) 297
第21章 初始化以支持CPU熱插拔 315
第22章 激活slab內(nèi)存分配器——kmem_cache_init() 318
第23章 kmem_trace_init()~~security_init() 344
第24章 初始化VFS中使用的多種緩存——vfs_cache_init() 367
第25章 radix_tree_init()~~ftrace_init() 382
第26章 同步內(nèi)存與后備存儲——pagewriteback 394
第27章 查看啟動內(nèi)核的最終函數(shù)結(jié)構(gòu)——rest_init() 405
第28章 生成執(zhí)行函數(shù)的內(nèi)核線程——kernel_thread() 407
第29章 喚醒新生成的任務(wù) 419
第30章 準(zhǔn)備使用內(nèi)核 426
第31章 內(nèi)核線程守護(hù)進(jìn)程 453
第32章 find_task_by_pid_ns()~~cpu_idle() 469
附錄
附錄A 匯編語言、gas關(guān)鍵詞總結(jié) 480
附錄B 內(nèi)核分析常見API 485
附錄C 淺談ext2文件系統(tǒng) 487
附錄D Linux線程模型 497
附錄E 鏈接器腳本文件結(jié)構(gòu) 500
后記 510
索引 513
下載地址
人氣書籍
UNIX網(wǎng)絡(luò)編程 卷1:套接字聯(lián)網(wǎng)API(第3版) 中文 PDF版 [85M]
深入理解Linux內(nèi)核(第三版) 帶完整書簽 PDF掃描版[56MB]
Ubuntu Linux從入門到精通 PDF 掃描版[59M]
unix環(huán)境高級編程(第3版) 中文版 pdf掃描版[21MB]
KVM虛擬化技術(shù):實(shí)戰(zhàn)與原理解析 PDF掃描版[108MB]
鳥哥的Linux私房菜 Linux基礎(chǔ)學(xué)習(xí)篇(第三版)
Linux/UNIX系統(tǒng)編程手冊 PDF掃描版[262MB]
Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(原書第3版)pdf掃描版[36.7MB]
Linux命令行大全 ((美)William E.shotts,Jr) 中文PDF高清掃描版
linux命令大全(15部最全面的CHM文檔) linux命令手冊集合
下載聲明
☉ 解壓密碼:chabaoo.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個軟件總是不能下載的請?jiān)谠u論中留言,我們會盡快修復(fù),謝謝!
☉ 下載本站資源,如果服務(wù)器暫不能下載請過一段時間重試!或者多試試幾個下載地址
☉ 如果遇到什么問題,請?jiān)u論留言,我們定會解決問題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請購買正版。
☉ 本站提供的ARM Linux內(nèi)核源碼剖析 尹錫訓(xùn)著 完整版PDF(帶書簽?zāi)夸?資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。