图书介绍
深入Linux内核架构2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (德)莫尔勒著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115227430
- 出版时间:2010
- 标注页数:1040页
- 文件大小:194MB
- 文件页数:1055页
- 主题词:Linux操作系统
PDF下载
下载说明
深入Linux内核架构PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 简介和概述1
1.1 内核的任务2
1.2 实现策略2
1.3 内核的组成部分3
1.3.1 进程、进程切换、调度3
1.3.2 UNIX进程4
1.3.3 地址空间与特权级别6
1.3.4 页表9
1.3.5 物理内存的分配11
1.3.6 计时13
1.3.7 系统调用13
1.3.8 设备驱动程序、块设备和字符设备14
1.3.9 网络14
1.3.10 文件系统14
1.3.11 模块和热插拔15
1.3.12 缓存16
1.3.13 链表处理16
1.3.14 对象管理和引用计数17
1.3.15 数据类型20
1.3.16 本书的局限性22
1.4 为什么内核是特别的23
1.5 行文注记23
1.6 小结27
第2章 进程管理和调度28
2.1 进程优先级28
2.2 进程生命周期30
2.3 进程表示32
2.3.1 进程类型37
2.3.2 命名空间37
2.3.3 进程ID号43
2.3.4 进程关系49
2.4 进程管理相关的系统调用50
2.4.1 进程复制50
2.4.2 内核线程62
2.4.3 启动新程序63
2.4.4 退出进程66
2.5 调度器的实现67
2.5.1 概观67
2.5.2 数据结构69
2.5.3 处理优先级74
2.5.4 核心调度器79
2.6 完全公平调度类84
2.6.1 数据结构85
2.6.2 CFS操作85
2.6.3 队列操作89
2.6.4 选择下一个进程91
2.6.5 处理周期性调度器92
2.6.6 唤醒抢占93
2.6.7 处理新进程93
2.7 实时调度类94
2.7.1 性质94
2.7.2 数据结构95
2.7.3 调度器操作96
2.8 调度器增强97
2.8.1 SMP调度97
2.8.2 调度域和控制组101
2.8.3 内核抢占和低延迟相关工作102
2.9 小结106
第3章 内存管理107
3.1 概述107
3.2 (N)UMA模型中的内存组织109
3.2.1 概述109
3.2.2 数据结构111
3.3 页表123
3.3.1 数据结构124
3.3.2 页表项的创建和操作129
3.4 初始化内存管理129
3.4.1 建立数据结构130
3.4.2 特定于体系结构的设置135
3.4.3 启动过程期间的内存管理153
3.5 物理内存的管理159
3.5.1 伙伴系统的结构159
3.5.2 避免碎片161
3.5.3 初始化内存域和结点数据结构167
3.5.4 分配器API172
3.5.5 分配页177
3.5.6 释放页192
3.5.7 内核中不连续页的分配195
3.5.8 内核映射201
3.6 slab分配器205
3.6.1 备选分配器206
3.6.2 内核中的内存管理207
3.6.3 slab分配的原理209
3.6.4 实现212
3.6.5 通用缓存226
3.7 处理器高速缓存和TLB控制228
3.8 小结230
第4章 进程虚拟内存231
4.1 简介231
4.2 进程虚拟地址空间231
4.2.1 进程地址空间的布局232
4.2.2 建立布局234
4.3 内存映射的原理237
4.4 数据结构238
4.4.1 树和链表238
4.4.2 虚拟内存区域的表示239
4.4.3 优先查找树241
4.5 对区域的操作244
4.5.1 将虚拟地址关联到区域245
4.5.2 区域合并246
4.5.3 插入区域247
4.5.4 创建区域248
4.6 地址空间250
4.7 内存映射251
4.7.1 创建映射251
4.7.2 删除映射253
4.7.3 非线性映射254
4.8 反向映射257
4.8.1 数据结构258
4.8.2 建立逆向映射259
4.8.3 使用逆向映射259
4.9 堆的管理261
4.10 缺页异常的处理263
4.11 用户空间缺页异常的校正268
4.11.1 按需分配/调页269
4.11.2 匿名页271
4.11.3 写时复制271
4.11.4 获取非线性映射272
4.12 内核缺页异常272
4.13 在内核和用户空间之间复制数据274
4.14 小结276
第5章 锁与进程间通信277
5.1 控制机制277
5.1.1 竞态条件277
5.1.2 临界区278
5.2 内核锁机制279
5.2.1 对整数的原子操作280
5.2.2 自旋锁282
5.2.3 信号量283
5.2.4 RCU机制284
5.2.5 内存和优化屏障286
5.2.6 读者/写者锁287
5.2.7 大内核锁288
5.2.8 互斥量288
5.2.9 近似的per-CPU计数器290
5.2.10 锁竞争与细粒度锁291
5.3 System V进程间通信292
5.3.1 System V机制292
5.3.2 信号量292
5.3.3 消息队列300
5.3.4 共享内存303
5.4 其他IPC机制303
5.4.1 信号303
5.4.2 管道和套接字310
5.5 小结311
第6章 设备驱动程序312
6.1 I/O体系结构312
6.2 访问设备316
6.2.1 设备文件316
6.2.2 字符设备、块设备和其他设备317
6.2.3 使用ioctl进行设备寻址319
6.2.4 主从设备号的表示320
6.2.5 注册321
6.3 与文件系统关联324
6.3.1 inode中的设备文件成员324
6.3.2 标准文件操作325
6.3.3 用于字符设备的标准操作325
6.3.4 用于块设备的标准操作325
6.4 字符设备操作326
6.4.1 表示字符设备326
6.4.2 打开设备文件326
6.4.3 读写操作328
6.5 块设备操作329
6.5.1 块设备的表示330
6.5.2 数据结构331
6.5.3 向系统添加磁盘和分区338
6.5.4 打开块设备文件339
6.5.5 请求结构341
6.5.6 BIO343
6.5.7 提交请求345
6.5.8 I/O调度350
6.5.9 ioctl的实现352
6.6 资源分配353
6.6.1 资源管理353
6.6.2 I/O内存355
6.6.3 I/O端口357
6.7 总线系统358
6.7.1 通用驱动程序模型358
6.7.2 PCI总线363
6.7.3 USB370
6.8 小结376
第7章 模块377
7.1 概述377
7.2 使用模块378
7.2.1 添加和移除378
7.2.2 依赖关系380
7.2.3 查询模块信息381
7.2.4 自动加载382
7.3 插入和删除模块384
7.3.1 模块的表示385
7.3.2 依赖关系和引用389
7.3.3 模块的二进制结构391
7.3.4 插入模块396
7.3.5 移除模块403
7.4 自动化与热插拔404
7.4.1 kmod实现的自动加载404
7.4.2 热插拔405
7.5 版本控制408
7.5.1 校验和方法408
7.5.2 版本控制函数411
7.6 小结412
第8章 虚拟文件系统413
8.1 文件系统类型413
8.2 通用文件模型414
8.2.1 inode415
8.2.2 链接416
8.2.3 编程接口416
8.2.4 将文件作为通用接口417
8.3 VFS的结构417
8.3.1 结构概观418
8.3.2 inode419
8.3.3 特定于进程的信息423
8.3.4 文件操作427
8.3.5 目录项缓存431
8.4 处理VFS对象436
8.4.1 文件系统操作436
8.4.2 文件操作450
8.5 标准函数456
8.5.1 通用读取例程457
8.5.2 失效机制459
8.5.3 权限检查461
8.6 小结463
第9章 Ext文件系统族464
9.1 简介464
9.2 Ext2文件系统465
9.2.1 物理结构465
9.2.2 数据结构470
9.2.3 创建文件系统484
9.2.4 文件系统操作485
9.3 Ext3文件系统507
9.3.1 概念508
9.3.2 数据结构509
9.4 小结511
第10章 无持久存储的文件系统512
10.1 proc文件系统512
10.1.1 /proc的内容513
10.1.2 数据结构519
10.1.3 初始化522
10.1.4 装载proc文件系统523
10.1.5 管理/proc数据项525
10.1.6 读取和写入信息528
10.1.7 进程相关的信息530
10.1.8 系统控制机制535
10.2 简单的文件系统542
10.2.1 顺序文件542
10.2.2 用libfs编写文件系统546
10.2.3 调试文件系统547
10.2.4 伪文件系统549
10.3 sysfs549
10.3.1 概述550
10.3.2 数据结构550
10.3.3 装载文件系统554
10.3.4 文件和目录操作556
10.3.5 向sysfs添加内容562
10.4 小结564
第11章 扩展属性和访问控制表565
11.1 扩展属性565
11.1.1 到虚拟文件系统的接口566
11.1.2 Ext3中的实现570
11.1.3 Ext2中的实现576
11.2 访问控制表577
11.2.1 通用实现577
11.2.2 Ext3中的实现580
11.2.3 Ext2中的实现585
11.3 小结585
第12章 网络586
12.1 互联的计算机586
12.2 ISO/OSI和TCP/IP参考模型587
12.3 通过套接字通信589
12.3.1 创建套接字590
12.3.2 使用套接字591
12.3.3 数据报套接字595
12.4 网络实现的分层模型595
12.5 网络命名空间597
12.6 套接字缓冲区599
12.6.1 使用套接字缓冲区管理数据600
12.6.2 管理套接字缓冲区数据602
12.7 网络访问层603
12.7.1 网络设备的表示603
12.7.2 接收分组608
12.7.3 发送分组614
12.8 网络层615
12.8.1 IPv4615
12.8.2 接收分组617
12.8.3 交付到本地传输层618
12.8.4 分组转发619
12.8.5 发送分组620
12.8.6 netfilter623
12.8.7 IPv6627
12.9 传输层628
12.9.1 UDP628
12.9.2 TCP630
12.10 应用层640
12.10.1 socket数据结构640
12.10.2 套接字和文件643
12.10.3 socketcall系统调用644
12.10.4 创建套接字645
12.10.5 接收数据646
12.10.6 发送数据647
12.11 内核内部的网络通信647
12.11.1 通信函数648
12.11.2 netlink机制649
12.12 小结654
第13章 系统调用655
13.1 系统程序设计基础655
13.1.1 追踪系统调用656
13.1.2 支持的标准658
13.1.3 重启系统调用659
13.2 可用的系统调用660
13.3 系统调用的实现663
13.3.1 系统调用的结构664
13.3.2 访问用户空间670
13.3.3 追踪系统调用670
13.4 小结676
第14章 内核活动678
14.1 中断678
14.1.1 中断类型678
14.1.2 硬件IRQ680
14.1.3 处理中断680
14.1.4 数据结构682
14.1.5 中断电流处理688
14.1.6 初始化和分配IRQ692
14.1.7 处理IRQ693
14.2 软中断701
14.2.1 开启软中断处理702
14.2.2 软中断守护进程703
14.3 tasklet704
14.3.1 创建tasklet704
14.3.2 注册tasklet704
14.3.3 执行tasklet705
14.4 等待队列和完成量706
14.4.1 等待队列706
14.4.2 完成量710
14.4.3 工作队列711
14.5 小结713
第15章 时间管理714
15.1 概述714
15.1.1 定时器的类型714
15.1.2 配置选项716
15.2 低分辨率定时器的实现717
15.2.1 定时器激活与进程统计717
15.2.2 处理jiffies719
15.2.3 数据结构720
15.2.4 动态定时器721
15.3 通用时间子系统725
15.3.1 概述726
15.3.2 配置选项727
15.3.3 时间表示727
15.3.4 用于时间管理的对象728
15.4 高分辨率定时器736
15.4.1 数据结构736
15.4.2 设置定时器740
15.4.3 实现740
15.4.4 周期时钟仿真745
15.4.5 切换到高分辨率定时器746
15.5 动态时钟747
15.5.1 数据结构747
15.5.2 低分辨率系统下的动态时钟749
15.5.3 高分辨率系统下的动态时钟751
15.5.4 停止和启动周期时钟752
15.6 广播模式755
15.7 定时器相关系统调用的实现756
15.7.1 时间基准756
15.7.2 alarm和setitimer系统调用757
15.7.3 获取当前时间758
15.8 管理进程时间759
15.9 小结760
第16章 页缓存和块缓存761
16.1 页缓存的结构762
16.1.1 管理和查找缓存的页762
16.1.2 回写修改的数据763
16.2 块缓存的结构764
16.3 地址空间766
16.3.1 数据结构766
16.3.2 页树768
16.3.3 地址空间操作771
16.4 页缓存的实现774
16.4.1 分配页774
16.4.2 查找页775
16.4.3 在页上等待776
16.4.4 对整页的操作777
16.4.5 页缓存预读778
16.5 块缓存的实现781
16.5.1 数据结构782
16.5.2 操作783
16.5.3 页缓存和块缓存的交互783
16.5.4 独立的缓冲区787
16.6 小结792
第17章 数据同步793
17.1 概述793
17.2 pdflush机制795
17.3 启动新线程796
17.4 线程初始化796
17.5 执行实际工作798
17.6 周期性刷出798
17.7 相关的数据结构799
17.7.1 页状态799
17.7.2 回写控制800
17.7.3 可调参数802
17.8 中央控制802
17.9 超级块同步804
17.10 inode同步804
17.10.1 遍历超级块805
17.10.2 考察超级块inode805
17.10.3 回写单个inode807
17.11 拥塞809
17.11.1 数据结构809
17.11.2 阈值810
17.11.3 拥塞状态的设置和清除811
17.11.4 在拥塞队列上等待812
17.12 强制回写813
17.13 膝上模式814
17.14 用于同步控制的系统调用815
17.15 完全同步815
17.15.1 inode的同步816
17.15.2 单个文件的同步818
17.15.3 内存映射的同步819
17.16 小结820
第18章 页面回收和页交换821
18.1 概述821
18.1.1 可换出页822
18.1.2 页颠簸822
18.1.3 页交换算法823
18.2 Linux内核中的页面回收和页交换824
18.2.1 交换区的组织824
18.2.2 检查内存使用情况825
18.2.3 选择要换出的页825
18.2.4 处理缺页异常826
18.2.5 缩减内核缓存826
18.3 管理交换区826
18.3.1 数据结构827
18.3.2 创建交换区830
18.3.3 激活交换区831
18.4 交换缓存834
18.4.1 标识换出页835
18.4.2 交换缓存的结构838
18.4.3 添加新页839
18.4.4 搜索一页843
18.5 数据回写844
18.6 页面回收845
18.6.1 概述845
18.6.2 数据结构847
18.6.3 确定页的活动程度850
18.6.4 收缩内存域853
18.6.5 隔离LRU页和集中回收856
18.6.6 收缩活动页链表859
18.6.7 回收不活动页862
18.7 交换令牌867
18.8 处理交换缺页异常870
18.8.1 换入页870
18.8.2 读取数据872
18.8.3 交换预读873
18.9 发起内存回收873
18.9.1 用kswapd进行周期性内存回收873
18.9.2 在严重内存不足时换出页877
18.10 收缩其他缓存878
18.10.1 数据结构878
18.10.2 注册和删除收缩器879
18.10.3 收缩缓存879
18.11 小结880
第19章 审计882
19.1 概述882
19.2 审计规则883
19.3 实现884
19.3.1 数据结构884
19.3.2 初始化889
19.3.3 处理请求890
19.3.4 记录事件891
19.3.5 系统调用审计893
19.4 小结898
附录A 体系结构相关知识899
A.1 概述899
A.2 数据类型900
A.3 对齐900
A.4 内存页面900
A.5 系统调用901
A.6 字符串处理901
A.7 线程表示902
A.8 位操作和字节序914
A.9 页表916
A.10 杂项916
A.11 小结918
附录B 使用源代码919
B.1 内核源代码的组织919
B.2 用Kconfig进行配置920
B.3 用Kbuild编译内核930
B.4 有用的工具935
B.5 调试和分析内核942
B.6 用户模式Linux945
B.7 小结946
附录C 有关C语言的注记947
C.1 GNU C编译器如何工作947
C.2 内核的标准数据结构和技术967
C.3 小结984
附录D 系统启动985
D.1 IA-32系统上与体系结构相关的设置985
D.2 高层初始化986
D.3 小结998
附录E ELF二进制格式999
E.1 布局和结构999
E.2 内核中的数据结构1006
E.3 小结1018
附录F 内核开发过程1019
F.1 简介1019
F.2 内核代码树和开发的结构1019
F.3 补丁的结构1024
F.4 Linux和学术界1030
F.5 小结1035
参考文献1036
热门推荐
- 1887342.html
- 3182066.html
- 588702.html
- 3240819.html
- 425447.html
- 3277861.html
- 1455523.html
- 2425608.html
- 2900157.html
- 1649472.html
- http://www.ickdjs.cc/book_2565846.html
- http://www.ickdjs.cc/book_520354.html
- http://www.ickdjs.cc/book_2497634.html
- http://www.ickdjs.cc/book_532561.html
- http://www.ickdjs.cc/book_560074.html
- http://www.ickdjs.cc/book_3038181.html
- http://www.ickdjs.cc/book_2009941.html
- http://www.ickdjs.cc/book_2297483.html
- http://www.ickdjs.cc/book_788535.html
- http://www.ickdjs.cc/book_841090.html