ARM Linux内核源码剖析 尹锡训著 完整版PDF(带书签目录)

ARM Linux内核源码剖析

  • 书籍大小:101MB
  • 书籍语言:简体中文
  • 书籍类型:国产软件
  • 书籍授权:免费软件
  • 更新时间:2017-11-24 15:01:01
  • 书籍类别:Linux_unix
  • 购买链接:
  • 网友评分:软件评分
  • 应用平台:PDF
内容介绍热点排行相关文章下载地址↓

《ARM Linux内核源码剖析》是多位作者在3年Liunx内核分析经验和庞大资料基础上写成的,收录了其他同类书未曾讲解的内容并进行逐行分析,一扫当前市场中其他理论书带给读者的郁闷。书中详细的代码分析与大量插图能够使读者对Linux内核及ARM获得正确认识,自然而然习得如何有效分析定期发布的Linux内核。

《ARM Linux内核源码剖析》适合想从Linux内核启动开始透彻分析全部启动过程的读者,因Linux代码量庞大而束手无策的人、想要了解Linux实际运行过程的人、渴求OS实操理论的人,本书必将成为他们不可或缺的参考书。

目录
第一部分 ARMLinux内核——分析内核前需要做的准备
  第1章 内核介绍及2.6版和3.2版之间的差异 2
  1.1 内核的诞生、作用以及内部结构 2
  1.1.1 Linus创造的Linux 2
  1.1.2 由多种子系统集成运行的单内核 3
  1.1.3 全世界最著名的通用操作系统 5
  1.2 内核2.6版和3.2版之间的差异 5
  第2章 内核构建系统 8
  2.1 内核初始化 8
  2.2 内核配置 9
  2.3 内核构建 11
  2.4 内核安装 17
  第3章 了解ARM处理器 19
  3.1 处理器概要和特征 19
  3.2 处理器架构与核心 19
  3.3 处理器命名规则 21
  3.4 处理器内部结构 21
  3.5 处理器模式和寄存器 23
  3.6 处理器异常 25
  3.7 硬件扩展功能 26
  3.7.1 缓存 26
  3.7.2 内存管理装置 26
  3.7.3 协处理器 26
  第4章 构建分析环境 28
  4.1 下载并安装Linux源内核 28
  4.1.1 下载源内核 28
  4.1.2 安装源内核 30
  4.2 安装ctags+cscope 31
  4.2.1 用ctags制作源代码标签 31
  4.2.2 制作cscope标签数据库 33
  4.3 vim插件下载及环境设置 34
  4.3.1 下载vim插件 34
  4.3.2 vim+plugin的环境结构 37
  4.3.3 vim环境设置 38
  4.4 查看源码分析环境工具 40
  第二部分 内核的启动——start_kernel调用方法
  第5章 准备解压内核 48
  5.1 进入启动加载后结束首个启动——start标签 49
  5.2 BSS系统域初始化——not_relocated标签 50
  5.3 激活缓存——cache_on标签 53
  5.4 页目录项初始化——__setup_mmu标签 56
  5.5 指令缓存激活及缓存策略适用——__common_mmu_cache_on标签 58
  第6章 从压缩的内核zImage还原内核映像 60
  6.1 解压内核并避免覆写——wont_overwrite、decompress_kernel标签 61
  6.2 调用已解压内核——call_kernel标签 62
  6.3 缓存清理及清除——cache_clean_flush标签 62
  6.4 缓存禁用——cache_off标签 64
  第7章 调用start_kernel() 65
  7.1 初始化指向——stext标签 65
  7.2 处理器信息搜寻——__look_processor_type 69
  7.2.1 __lookup_processor_type标签 69
  7.2.2 __proc_info_begin和__proc_info_end中保存的信息 71
  7.2.3 在MMU禁用状态下将虚拟地址转换为物理地址 73
  7.2.4 查找proc_info_list结构体并比较处理器信息 74
  7.3 搜寻我的机型——__lookup_machine_type 75
  7.3.1 __lookup_machine_type标签 75
  7.3.2 保存在__arch_info_begin和__arch_info_end中的machine_desc信息及访问路径 76
  7.3.3 查找machine_desc结构体并比较机器信息 77
  7.4 源自启动加载项的atags——__vet_atags标签 78
  7.5 对虚拟内存进行基础创建——__create_page_tables标签 81
  7.6 设置核心(core)——v6_setup标签 85
  7.7 打开MMU并使用虚拟地址——__enable_mmu/__turn_mmu_on标签 86
  7.8 跳转至start_kernel——__mmap_switched标签 90
  第三部分 内核的执行——内核的起始与结束位置
  第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 栈溢出感应——__boot_init_stack_canary 98
  8.3 初始化提供进程集成方法的cgroup——__cgroup_init_early() 98
  8.3.1 cgroupfs_root和cgroup的关联初始化——init_cgroup_root() 102
  8.3.2 初始化子系统——cgroup_init_subsys() 103
  8.4 禁用IRQ 104
  8.5 early_boot_irqs_off()、early_init_irq_lock_class() 104
  8.6 大内核锁——lock_kernel() 106
  第9章 注册针对时钟事件的处理器 111
  9.1 函数的声明和定义——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位图中注册当前运行CPU/初始化HIGHMEM管理 119
  10.1 在包含热插拔信息的位图上添加执行init_task的CPU——boot_cpu_init() 119
  10.2 管理高端内存——page_address_init() 121
  第11章 整体指向——setup_arch 123
  第12章 unwind_init()~~early_trap_init() 126
  12.1 栈回溯——unwind_init() 126
  12.2 求出包含机器信息的machine_desc结构体——setup_machine() 126
  12.3 处理ATAG信息——setup_arch() 127
  12.4 处理启动参数——parse_cmdline() 129
  12.5 构建源代码树——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 查看中断处理器函数 143
  12.9.1 调用IRQ处理器——asm_do_IRQ() 147
  12.9.2 返回中断之前——ret_to_user标签 147
  第13章 设置处理器——setup_processor() 150
  13.1 查看setup_processor()结构 150
  13.2 查找CPUID——read_cpuid_id() 151
  13.3 查找处理器信息——lookup_processor_type() 153
  13.4 查找处理器结构信息——cpu_architecture() 153
  13.5 查找处理器缓存类型_cacheid_init() 156
  13.6 调用处理器初始化函数——cpu_proc_init() 160
  第14章 准备内存分页——paging_init() 163
  14.1 查看paging_init()的整体结构 163
  14.2 设置内存类型表——build_mem_type_table() 165
  14.3 检验内存信息——sanity_check_meminfo() 166
  14.4 准备页表——prepare_page_table() 168
  14.4.1 prepare_page_table() 168
  14.4.2 Linux的分页结构 170
  14.4.3 求出页目录项 170
  14.4.4 pmd_clear() 172
  14.5 设备区域映射准备——devicemaps_init() 174
  14.6 准备使用高端内存——kmap_init() 177
  14.7 初始化零页 178
  14.7.1 分配内存——__alloc_bootmem_nopanic() 179
  14.7.2 在指定节点使用fallback分配内存——alloc_bootmem_core 180
  14.7.3 将虚拟地址变换为page结构体——virt_to_page 182
  14.8 保持数据缓存一致性——flush_dcache_page() 182
  第15章 在启动时初始化内存分配器 184
  15.1 bootmem函数流和数据结构 185
  15.2 查看bootmem_init()结构 188
  15.3 查找虚拟内存盘位置——check_initrd() 189
  15.4 将节点的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号节点——reserve_node_zero() 203
  15.6 排除虚拟内存盘节点——bootmem_reserve_initrd() 204
  15.7 设置为无可用页——bootmem_free_node() 205
  15.8 初始化free_area区域 207
  15.8.1 free_area结构体 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章 构建借用内存的后台 233
  第18章 page_alloc_init()~~pidhash_init() 253
  第19章 init_timers()~~page_cgroup_init() 273
  第20章 终止bootmem分配器并替换为伙伴系统 297
  第21章 初始化以支持CPU热插拔 315
  第22章 激活slab内存分配器——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章 同步内存与后备存储——pagewriteback 394
  第27章 查看启动内核的最终函数结构——rest_init() 405
  第28章 生成执行函数的内核线程——kernel_thread() 407
  第29章 唤醒新生成的任务 419
  第30章 准备使用内核 426
  第31章 内核线程守护进程 453
  第32章 find_task_by_pid_ns()~~cpu_idle() 469
  附录
  附录A 汇编语言、gas关键词总结 480
  附录B 内核分析常见API 485
  附录C 浅谈ext2文件系统 487
  附录D Linux线程模型 497
  附录E 链接器脚本文件结构 500
  后记 510
  索引 513

人气书籍
下载地址
相关文章
网友评论
下载声明

☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的ARM Linux内核源码剖析 尹锡训著 完整版PDF(带书签目录)资源来源互联网,版权归该下载资源的合法拥有者所有。