反馈 / 投诉
-
ARM Linux内核源码剖析 PDF 高清版
2020-09-23 09:06:40 类别:Linux
-
扫二维码手机浏览
资源介绍
给寻找技术文档的朋友们精选了Linux相关的 PDF电子书资料,由人民邮电出版社出版,作者是尹锡训、著;崔范松,介绍了关于ARM、Linux、内核源码方面,格式为PDF,资源大小101 MB,目前在Linux类资源综合评分为:9.8分。
《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
以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。
下载地址
下载地址:网盘下载
Linux相关资源
学习心得
欢迎发表评论:
- 最新更新
-
1
Java编程实战宝典 PDF电子书
类别:Java编程
-
2
自然语言处理原理与技术实现 PDF电子书
类别:自然语言
-
3
Vert.x应用开发实例教程 PDF电子书
类别:Vert.x
-
4
深入理解php:高级技巧、面向对象与核心技术(第3版) PDF电子书
类别:php
-
5
PHP经典实例(第3版) PDF电子书
类别:PHP实例
-
6
Django开发宝典 PDF电子书
类别:Django
-
7
Learning PHP设计模式 PDF电子书
类别:PHP编程
-
8
Java高并发编程详解:多线程与架构设计 PDF电子书
类别:Java编程
-
9
教孩子学编程:Python语言版 PDF电子书
类别:儿童编程
- 资料推荐
-
- 01-24基于Bootstrap和Knockout.js的ASP.NET MVC开发实战 PDF电子书
- 09-22大数据日知录:架构与算法 PDF电子书
- 04-26Ceph设计原理与实现 PDF电子书
- 11-12C++面向对象程序设计教程 课后答案
- 06-30点集拓扑讲义(第三版) 课后答案
- 09-02微交互:细节设计成就卓越产品 PDF电子书
- 09-16量化投资:以Python为工具 PDF电子书
- 11-08计算机英语(第2版) 课后答案
- 11-19Hadoop大数据开发 PDF电子书
- 12-19C++Primer题解 PDF电子书
Python、 Pycharm、Django安装详细教程(图文)
最近做项目要用到python,那么不用说就得先配置好python环境 以及选择好python工具。接下来分享自己的安装过程。 (一)、Python的安装 1.先进入官网下载python版本,https://www.python.org/downloads/ 2.下载完成后双击.exe文件进行安装,可以自定义安装,也可以默认安装,我选择的是自定义安装,注意:我这里是选择自动生成环境变量,所以我把Add Python3.6 to Path勾选上了。 3.默认安装,Ne……
Pycharm 创建 Django admin 用户名和密码的实例
1. 问题 使用PyCharm 创建完Django 项目 想登录admin 页面 却不知道用户名和密码。 用的默认sqlit 2.解决办法 2.1 打开manage.py 控制界面 2.2 初始化数据库表 manage.py@HelloDj makemigrations manage.py@HelloDj migrate 2.3 创建admin user manage.py@HelloDj createsuperuser 输入用户。。密码。。 http://127.0.0.1:8000/admin 以上这篇Pycharm 创建 Django admin 用户名和密码的实例就是小编分享给大家的全部内容了,希望能给大家一……