图书介绍
Linux内核修炼之道PDF|Epub|txt|kindle电子书版本网盘下载
- 任桥伟编著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115225856
- 出版时间:2010
- 标注页数:350页
- 文件大小:116MB
- 文件页数:368页
- 主题词:Linux操作系统
PDF下载
下载说明
Linux内核修炼之道PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 初识Linux1
1.1 Linux史记2
1.1.1 Linux诞生记2
1.1.2 泰坦尼克的狂潮2
1.1.3 提前发生的革命3
1.1.4 和平、爱情和Linux4
1.1.5 Ubuntu 4.104
1.1.6 Richard Stallman的征婚启事5
1.1.7 一封公开信6
1.1.8 首款Android手机8
1.1.9 Linux信用卡8
1.2 内核的版本9
1.3 获取内核源码10
1.4 Linux发行版11
1.4.1 软件包管理器11
1.4.2 流行的发行版12
1.4.3 选择Linux发行版13
第2章 配置与编译内核15
2.1 配置内核16
2.1.1 几种配置方式16
2.1.2 .config文件19
2.1.3 配置选项详解20
2.2 编译内核26
2.2.1 准备工作26
2.2.2 如何为内核打补丁27
2.2.3 编译步骤28
2.2.4 文档的编译29
2.2.5 编译小技巧29
2.3 自由软件的编译与安装30
2.3.1 发布时的组织结构30
2.3.2 配置30
2.3.3 编译32
2.3.4 安装35
第3章 浏览内核源代码37
3.1 内核学习的技术基础38
3.2 内核体系结构38
3.3 内核源码目录结构40
3.4 浏览代码的工具43
3.4.1 Source Insight43
3.4.2 Vim+Cscope43
3.4.3 LXR45
3.5 内核代码的特点46
3.5.1 GCC扩展46
3.5.2 内嵌汇编51
3.6 内核中的链表51
3.7 Kconfig和Makefile53
3.7.1 Kconfig结构54
3.7.2 利用Kconfig和Makefile寻找目标代码55
3.8 代码分析示例57
3.8.1 分析README57
3.8.2 分析Kconfig和Makefile58
3.8.3 寻找初始化函数60
第4章 系统初始化64
4.1 引导过程65
4.2 内核初始化67
4.2.1 start_kernel函数68
4.2.2 reset_init函数71
4.2.3 kernel_init函数72
4.2.4 init_post函数73
4.3 init进程75
4.4 内核选项解析75
4.4.1 内核选项75
4.4.2 注册内核选项77
4.4.3 两次解析78
4.5 子系统的初始化79
4.5.1 do_initcalls()函数79
4.5.2 .initcall.init节80
4.5.3 分析示例81
第5章 系统调用84
5.1 系统调用概述85
5.1.1 系统调用、POSIX、C库、系统命令和内核函数85
5.1.2 系统调用表87
5.1.3 系统调用号87
5.1.4 系统调用服务例程88
5.1.5 如何使用系统调用88
5.1.6 为什么需要系统调用90
5.2 系统调用执行过程91
5.3 系统调用示例93
5.3.1 sys_dup93
5.3.2 sys_reboot94
5.4 系统调用的实现97
5.4.1 如何实现一个新的系统调用97
5.4.2 什么时候需要添加新的系统调用99
第6章 中断与中断处理100
6.1 概述101
6.1.1 中断分类101
6.1.2 PIC vs APIC102
6.1.3 中断号vs中断向量104
6.1.4 中断描述符表105
6.1.5 门106
6.1.6 中断服务程序107
6.2 重要数据结构107
6.2.1 中断描述符irq_desc108
6.2.2 中断控制器描述符irq_chip109
6.2.3 中断服务程序描述符irqaction110
6.3 中断子系统初始化111
6.3.1 中断描述符表的初始化111
6.3.2 中断请求队列的初始化116
6.4 中断或异常处理117
6.4.1 中断控制器的工作118
6.4.2 CPU的工作120
6.4.3 内核对中断的处理120
6.4.4 内核对异常的处理123
6.5 中断API123
6.5.1 注册和释放123
6.5.2 激活和禁止125
6.5.3 其他API函数125
6.6 通用IRQ层126
6.6.1 GenIRQ的起源及发展126
6.6.2 GenIRQ的抽象层次126
6.7 多处理器系统中的中断处理128
6.7.1 处理器间中断128
6.7.2 中断亲和力128
6.7.3 中断负载均衡129
6.8 中断的下半部130
6.8.1 下半部的实现机制130
6.8.2 下半部机制的选择132
第7章 进程管理133
7.1 概述134
7.1.1 进程vs程序134
7.1.2 进程vs线程134
7.1.3 进程描述符135
7.1.4 进程状态136
7.1.5 进程标识符137
7.1.6 进程间关系138
7.1.7 进程0与进程1140
7.1.8 进程的内核栈140
7.1.9 获取当前进程142
7.2 进程创建142
7.2.1 fork()、vfork()与clone()143
7.2.2 do_fork()146
7.2.3 copy_process()149
7.2.4 内核线程150
7.3 进程退出151
7.3.1 do_exit()151
7.3.2 僵死进程152
7.3.3 孤儿进程153
7.4 后台进程153
第8章 调度155
8.1 概述156
8.1.1 调度策略156
8.1.2 进程调度的目标157
8.1.3 进程的nice值158
8.1.4 优先级158
8.1.5 时间片159
8.2 进程调度器的发展历史160
8.2.1 Linux 2.4的调度器160
8.2.2 O(1)调度器161
8.2.3 SD调度器163
8.2.4 RSDL调度器163
8.2.5 CFS调度器164
8.3 O(1)调度器165
8.3.1 运行队列165
8.3.2 优先级数组168
8.3.3 计算时间片169
8.3.4 平均休眠时间170
8.3.5 判断交互性170
8.3.6 计算优先级171
8.3.7 休眠和唤醒172
8.3.8 schedule()173
8.3.9 负载均衡174
8.3.10 软实时调度176
8.4 CFS调度器176
8.4.1 完全公平与进程的权重176
8.4.2 模块化177
8.4.3 调度实体179
8.4.4 CFS运行队列180
8.4.5 虚拟运行时间181
8.4.6 CFS调度类182
8.4.7 schedule()183
8.4.8 组调度183
8.5 进程抢占与切换185
8.5.1 用户抢占185
8.5.2 内核抢占186
8.5.3 进程切换187
第9章 内存管理189
9.1 内存概述190
9.1.1 地址空间190
9.1.2 分页191
9.2 内核的内存分配192
9.2.1 内存结构192
9.2.2 BUDDY页面管理195
9.2.3 SLAB内存管理198
9.2.4 SLUB/SLOB内存管理201
9.2.5 vmalloc内存分配203
9.2.6 高端内存映射204
9.3 进程地址空间204
9.3.1 内存描述符205
9.3.2 内存映射208
9.3.3 多级页表结构209
9.3.4 缺页错误处理210
9.4 页面缓存211
9.4.1 页面缓存管理212
9.4.2 Swap内存交换213
9.4.3 kswapd和pdflush214
9.5 内存工具汇总214
9.5.1 用proc接口查看内存信息214
9.5.2 系统命令工具215
第10章 文件系统217
10.1 概述218
10.1.1 文件218
10.1.2 文件系统218
10.1.3 虚拟文件系统221
10.2 VFS的数据结构224
10.2.1 超级块224
10.2.2 索引节点227
10.2.3 目录项232
10.2.4 文件235
10.2.5 与文件系统相关的数据结构238
10.2.6 与进程相关的数据结构240
10.2.7 路径查找辅助结构243
10.3 VFS的缓存机制244
10.3.1 索引节点缓存244
10.3.2 目录项缓存245
10.3.3 缓冲区缓存247
10.4 文件系统的注册与安装248
10.4.1 文件系统的注册248
10.4.2 文件系统的安装249
10.4.3 rootfs的注册和安装250
10.5 inotify机制251
10.5.1 inotify数据结构251
10.5.2 inotify钩子函数253
10.5.3 inotify用户接口254
10.5.4 应用示例255
10.5.5 inotify工具256
第11章 设备驱动258
11.1 概述259
11.2 模块机制与“Hello World!”260
11.3 设备模型262
11.3.1 设备模型的经济基础263
11.3.2 设备模型的上层建筑268
11.3.3 类(Class)与类设备(class_device)273
11.4 sysfs文件系统275
11.4.1 sysfs与/sys276
11.4.2 sysfs目录项sysfs_dirent277
11.4.3 sysfs目录和属性278
11.5 spec、datasheet与内核源代码279
11.6 USB子系统与USB驱动279
11.6.1 USB简史279
11.6.2 USB协议基础281
11.6.3 USB子系统与sysfs284
11.6.4 内核中的USB286
11.6.5 USB设备基础288
11.6.6 USB urb304
11.6.7 OTG简介310
11.6.8 USB驱动程序310
第12章 内核开发基础316
12.1 相关资源317
12.1.1 内核文档317
12.1.2 经典书籍318
12.1.3 内核社区319
12.1.4 其他网络资源319
12.2 编码风格320
12.3 内核API324
12.4 内核中的Makefile325
12.5 如何添加自己的驱动程序327
12.6 如何提交补丁329
12.7 学会使用Git332
第13章 调试335
13.1 内核调试配置选项336
13.2 二分法与printk()337
13.2.1 二分查找法的基本原理337
13.2.2 printk()338
13.3 获取内核信息339
13.3.1 syslog和dmesg339
13.3.2 /proc340
13.3.3 /sys341
13.3.4 ioctl342
13.4 oops342
13.5 调试工具343
13.5.1 gdb343
13.5.2 kgdb344
13.5.3 kdb346
13.5.4 kprobes346
13.5.5 systemtap347
13.5.6 kdump348
13.5.7 硬件工具348
13.6 “神奇”的SysRq349
13.7 使用模拟器与虚拟机349