Linux内核编程PDF电子书下载
- 电子书积分:13 积分如何计算积分?
- 作 者:(美)罗德里格斯,(美)费舍尔,(美)斯莫斯基著;陈莉君,贺炎,刘霞林译
- 出 版 社:北京:人民邮电出版社
- 出版年份:2011
- ISBN:9787115251947
- 页数:400 页
第1章 概述 1
1.1 UNIX的历史 2
1.2 标准和通用接口 3
1.3 自由软件和开放源码 3
1.4 Linux发布版概览 3
1.4.1 Debian 4
1.4.2 Red Hat/Fedora 4
1.4.3 Mandriva 4
1.4.4 SUSE 4
1.4.5 Gentoo 4
1.4.6 Yellow Dog 5
1.4.7 其他发布版 5
1.5 内核版本信息 5
1.6 基于Power的Linux 5
1.7 什么是操作系统 6
1.8 内核组织 7
1.9 Linux内核概述 7
1.9.1 用户接口 7
1.9.2 用户标识符 8
1.9.3 文件和文件系统 8
1.9.4 进程 12
1.9.5 系统调用 15
1.9.6 Linux调度程序 15
1.9.7 Linux设备驱动程序 15
1.10 可移植性和体系结构的相关性 16
1.11 小结 16
1.12 习题 16
第2章 内核探索工具集 18
2.1 内核中常见的数据类型 18
2.1.1 链表 18
2.1.2 查找 21
2.1.3 树 22
2.2 汇编 24
2.2.1 PowerPC 24
2.2.2 x86 27
2.3 汇编语言示例 29
2.3.1 x86中的汇编示例 30
2.3.2 PowerPC中的汇编示例 31
2.4 内联汇编 33
2.4.1 输出操作数 34
2.4.2 输入操作数 34
2.4.3 已修改过的寄存器(已修改的元素列表) 34
2.4.4 参数的编号方式 34
2.4.5 约束条件 34
2.4.6 asm 35
2.4.7 __volatile__ 35
2.5 特殊的C语言用法 38
2.5.1 asmlinkage 38
2.5.2 UL 39
2.5.3 内联 39
2.5.4 const和volatile 39
2.6 内核探索工具一览 40
2.6.1 objdump/readlf 40
2.6.2 hexdump 41
2.6.3 nm 41
2.6.4 objcopy 42
2.6.5 ar 42
2.7 内核发言:倾听来自内核的消息 42
2.7.1 printk() 42
2.7.2 dmesg 42
2.7.3 /var/log/messages 42
2.8 其他奥秘 43
2.8.1 __init 43
2.8.2 likely()和unlikely() 43
2.8.3 IS_ERR和PTR_ERR 44
2.8.4 通告程序链 44
2.9 小结 45
2.9.1 项目:Hellomod 45
2.9.2 第一步:构造Linux模块的框架 45
2.9.3 第二步:编译模块 46
2.9.4 第三步:运行代码 47
2.10 习题 48
第3章 进程:程序执行的基本模型 49
3.1 程序 51
3.2 进程描述符 52
3.2.1 与进程属性相关的字段 54
3.2.2 与调度相关的字段 55
3.2.3 涉及进程间相互关系的字段 58
3.2.4 与进程信任状相关的字段 59
3.2.5 与进程权能相关的字段 60
3.2.6 与进程限制相关的字段 61
3.2.7 与文件系统及地址空间相关的字段 63
3.3 进程的创建:系统调用fork()、vfork和clone() 64
3.3.1 fork()函数 65
3.3.2 vfork()函数 66
3.3.3 clone()函数 67
3.3.4 do_fork()函数 68
3.4 进程的生命周期 70
3.4.1 进程的状态 70
3.4.2 进程状态的转换 71
3.5 进程的终止 74
3.5.1 sys_exit()函数 75
3.5.2 do_exit()函数 75
3.5.3 通知父进程和sys_wait4() 77
3.6 了解进程的动态:调度程序的基本构架 80
3.6.1 基本结构 80
3.6.2 从等待中醒来或者激活 81
3.7 等待队列 86
3.7.1 添加到等待队列 88
3.7.2 等待事件 89
3.7.3 唤醒进程 91
3.8 异步执行流程 93
3.8.1 异常 93
3.8.2 中断 95
3.9 小结 114
3.9.1 项目:系统变量current 114
3.9.2 项目源码 115
3.9.3 运行代码 116
3.10 习题 116
第4章 内存管理 117
4.1 页 119
4.2 内存管理区 121
4.2.1 内存管理区描述符 122
4.2.2 内存管理区操作辅助函数 124
4.3 页面 124
4.3.1 请求页面的函数 124
4.3.2 释放页面的函数 126
4.3.3 伙伴系统 126
4.4 Slab分配器 130
4.4.1 缓存描述符 133
4.4.2 通用缓存描述符 135
4.5 Slab描述符 136
4.5 Slab分配器的生命周期 138
4.5.1 与Slab分配器有关的全局变量 138
4.5.2 创建缓存 139
4.5.3 创建slab与cache_grow 144
4.5.4 Slab的销毁:退还内存与kmem_cache_destroy() 146
4.6 内存请求路径 147
4.6.1 kmalloc() 147
4.6.2 kmem_cache_alloc() 148
4.7 Linux进程的内存结构 149
4.7.1 mm_struct 150
4.7.2 vm_area_struct 152
4.8 进程映像的分布及线性地址空间 153
4.9 页表 155
4.10 缺页 156
4.10.1 x86缺页异常 156
4.10.2 缺页处理程序 157
4.10.3 PowerPC缺页异常 164
4.11 小结 164
4.12 项目:进程内存映射 165
4.13 习题 166
第5章 输入/输出 167
5.1 总线、桥、端口和接口的硬件实现 167
5.2 设备 171
5.2.1 块设备概述 172
5.2.2 请求队列和I/O调度 173
5.2.3 示例:“通用”块设备驱动程序 180
5.2.4 设备操作 182
5.2.5 字符设备 183
5.2.6 网络设备 184
5.2.7 时钟设备 184
5.2.8 终端设备 184
5.2.9 直接存储器存取 184
5.3 小结 185
5.4 项目:创建并口驱动程序 187
5.4.1 并口的硬件 185
5.4.2 运行的并口上软件 187
5.5 习题 192
第6章 文件系统 194
6.1 文件系统的基本概念 194
6.1.1 文件和文件名 194
6.1.2 文件类型 195
6.1.3 文件的附加属性 195
6.1.4 目录和路径名 196
6.1.5 文件操作 197
6.1.6 文件描述符 197
6.1.7 磁盘块、磁盘分区以及实现 198
6.1.8 性能 198
6.2 Linux虚拟文件系统 198
6.2.1 VFS的数据结构 200
6.2.2 全局链表和局部链表的应用 211
6.3 与VFS相关的结构 212
6.3.1 fs_struct结构 212
6.3.2 files_struct结构 213
6.4 页缓存 216
6.4.1 address_epace结构 217
6.4.2 buffer_head结构 219
6.5 VFS的系统调用和文件系统层 221
6.5.1 open() 221
6.5.2 close() 227
6.5.3 read() 229
6.5.4 write() 244
6.6 小结 246
6.7 习题 246
第7章 进程调度和内核同步 247
7.1 Linux的调度程序 248
7.1.1 选择下一个进程 248
7.1.2 上下文切换 253
7.1.3 让出CPU 261
7.2 内核抢占 269
7.2.1 显示内核抢占 269
7.2.2 隐式用户抢占 270
7.2.3 隐式内核抢占 270
7.3 自旋锁和信号量 272
7.4 系统时钟:关于时间和定时器 274
7.4.1 实时时钟:现在几点了 274
7.4.2 读取PPC的实时时钟 276
7.4.3 读取x86的实时时钟 278
7.5 小结 280
7.6 习题 280
第8章 内核引导 281
8.1 BIOS和Open Firmware 282
8.2 引导加载程序 282
8.2.1 GRUB 283
8.2.2 LILO 286
8.2.3 PowerPC和Yaboot 286
8.3 与体系结构相关的内存初始化 287
8.3.1 PowerPC的硬件内存管理 287
8.3.2 基于Intel x86体系结构的硬件内存管理 296
8.3.3 PowerPC和x86的代码汇集 305
8.4 原始的RAM盘 305
8.5 开始:start_kernel() 306
8.5.1 调用lock_kernel() 307
8.5.2 调用page_address_init() 309
8.5.3 调用printk(linux_banner) 311
8.5.4 调用setup_arch 311
8.5.5 调用setup_per_cpu_areas() 315
8.5.6 调用smp_prepare_boot_cpu() 316
8.5.7 调用sched_init() 317
8.5.8 调用build_all_zonelists() 319
8.5.9 调用page_alloc_init 319
8.5.10 调用parse_args() 320
8.5.11 调用trap_init() 322
8.5.12 调用rcu_init() 323
8.5.13 调用init_IRQ() 323
8.5.14 调用softirq_init() 324
8.5.15 调用time_init() 325
8.5.16 调用console_init() 326
8.5.17 调用profile_init() 326
8.5.18 调用local_irq_enable() 327
8.5.19 配置initrd 327
8.5.20 调用mem_init() 327
8.5.21 调用late_time_init() 333
8.5.22 调用calitrate_delay() 333
8.5.23 调用pgtable_cache_init() 334
8.5.24 调用buffer_init() 335
8.5.25 调用security_scaffol-ding_startup() 336
8.5.26 调用vfs_caches_init() 336
8.5.27 调用radix_tree_init() 343
8.5.28 调用signal_init() 344
8.5.29 调用page_writeback_init() 344
8.5.30 调用proc_root_init() 346
8.5.31 调用init_idle() 347
8.5.32 调用rest_init() 348
8.6 init线程(或进程1) 349
8.7 小结 353
8.8 习题 353
第9章 构建Linux内核 354
9.1 工具链 354
9.1.1 编译程序 355
9.1.2 交叉编译 355
9.1.3 连接程序 356
9.1.4 ELF二进制目标文件 356
9.2 内核源代码的构建 360
9.2.1 解释源代码 360
9.2.2 构建内核映像 364
9.3 小结 369
9.4 习题 369
第10章 向内核添加代码 371
10.1 浏览源代码 371
10.1.1 熟悉文件系统 371
10.1.2 filp和fops 372
10.1.3 用户空间和内核空间 374
10.1.4 等待队列 375
10.1.5 工作队列及中断 378
10.1.6 系统调用 380
10.1.7 其他类型的驱动程序 380
10.1.8 设备模型和sysfs文件系统 383
10.2 编写代码 386
10.2.1 设备基础 386
10.2.2 符号输出 388
10.2.3 IOCTL 388
10.2.4 轮询与中断 391
10.2.5 工作队列和tasklet 395
10.2.6 增加系统调用的代码 396
10.3 构建和调试 398
10.4 小结 399
10.5 习题 400
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《全国职业院校工业机器人技术专业规划教材 工业机器人现场编程》(中国)项万明 2019
- 《编程超有趣 奇妙Python轻松学 第1辑》HelloCode人工智能国际研究组 2018
- 《我的第一套编程启蒙绘本 看事件 开始了》编程猫教研团队编绘 2019
- 《STEM教育丛书 麦昆机器人和Micro:bit图形化编程》张弛责任编辑;(中国)陈宝杰,沙靓雯 2019
- 《ROS机器人编程与SLAM算法解析指南》陶满礼 2020
- 《我的第一套编程启蒙绘本 123 序列来啦》编程猫教研团队编绘 2019
- 《高等院校计算机任务驱动教改教材 C语言编程思维 第2版》(中国)陈萌,鲍淑娣 2019
- 《我的第一套编程启蒙绘本 咦 什么在 循环》编程猫教研团队编绘 2019
- 《工业机器人离线编程与仿真》张明文,封家诚,王鑫主编 2019
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《剑桥国际英语写作教程 段落写作》(美)吉尔·辛格尔顿(Jill Shingleton)编著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《办好人民满意的教育 全国教育满意度调查报告》(中国)中国教育科学研究院 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《人民院士》吴娜著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《中国人民的心》杨朔著;夕琳编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中华人民共和国成立70周年优秀文学作品精选 短篇小说卷 上 全2册》贺邵俊主编 2019
- 《指向核心素养 北京十一学校名师教学设计 数学 九年级 上 配人教版》周志英总主编 2019
- 《中华人民共和国成立70周年优秀文学作品精选 中篇小说卷 下 全3册》洪治纲主编 2019