程序员进阶之路:缓存、网络、内存与案例
全新正版 极速发货
¥
89.34
6.5折
¥
138
全新
库存32件
作者邓中华
出版社电子工业出版社
ISBN9787121476433
出版时间2024-05
装帧平装
开本其他
定价138元
货号1203313259
上书时间2024-08-08
商品详情
- 品相描述:全新
- 商品描述
-
目录
目
录
第1章 缓存1
1.1 存储体系结构1
1.2 缓存一致性协议4
1.2.1 MESI协议4
1.2.2 MOESI协议8
1.2.3 MESIF协议9
1.3 写缓存区和无效队列9
1.3.1 写缓冲区的作用11
1.3.2 无效队列的作用11
1.4 内存屏障11
1.4.1 读写屏障12
1.4.2 单向屏障12
1.5 x86-TSO13
1.6 CPU黑盒测试15
1.6.1 测试核心内是否存在Store Buffer15
1.6.2 测试转发(Store Forwarding)是否生效17
1.6.3 测试StoreStore是否乱序执行18
1.6.4 测试LoadLoad是否乱序执行19
1.6.5 测试LoadStore是否乱序执行19
1.6.6 测试StoreLoad是否乱序执行20
1.7 CAS原理20
1.8 原子操作22
1.8.1 互斥锁23
1.8.2 自旋锁23
1.8.3 C++原子变量25
1.8.4 C++内存顺序26
1.9 无锁队列31
1.9.1 设计思路31
1.9.2 实现细节32
第2章 网络36
2.1 网络分层36
2.2 网络接口层(以太网)37
2.3 网络层(IP、ICMP)39
2.3.1 IP39
2.3.2 ICMP43
2.4 套接字编程47
2.4.1 套接字47
2.4.2 函数47
2.4.3 多路复用49
2.5 虚拟网卡54
2.5.1 Tun设备54
2.5.2 创建代码55
2.6 网络抓包56
2.6.1 tcpdump56
2.6.2 Wireshark59
2.7 网络工具61
2.7.1 ethtool工具61
2.7.2 ifconfig工具65
2.7.3 ip工具66
2.7.4 nc工具66
2.8 网卡的特性(Feature)67
2.8.1 LRO67
2.8.2 GRO67
2.8.3 TSO68
2.8.4 GSO68
2.9 网络栈的扩展(Scaling)69
2.9.1 RSS69
2.9.2 RPS71
2.9.3 RFS72
2.9.4 XPS73
2.10 硬中断的负载均衡74
2.10.1 硬中断的CPU亲和性74
2.10.2 irqbalance功能75
第3章 TCP76
3.1 协议体76
3.2 有限状态机81
3.2.1 netstat82
3.2.2 ss82
3.3 准备阶段83
3.4 握手阶段84
3.4.1 三次握手84
3.4.2 初始化序列号88
3.5 连接阶段89
3.5.1 重传机制90
3.5.2 确认机制93
3.5.3 乱序恢复机制94
3.5.4 保活机制95
3.6 流量控制97
3.6.1 滑动窗口97
3.6.2 流量控制过程99
3.6.3 零窗口100
3.7 拥塞控制101
3.7.1 拥塞控制算法101
3.7.2 CUBIC102
3.8 挥手阶段109
3.8.1 四次挥手109
3.8.2 三次挥手112
3.8.3 同时挥手113
3.8.4 关闭函数114
第4章 UDP117
4.1 协议体117
4.2 特点119
4.2.1 无连接性119
4.2.2 不可靠性122
4.2.3 面向报文122
4.2.4 优选交付124
4.2.5 最小开销125
4.3 应用场景125
4.4 可靠性保障126
4.4.1 ACK126
4.4.2 FEC126
第5章 端口128
5.1 问题128
5.2 地址和端口复用的总结128
5.2.1 两个选项均关闭129
5.2.2 仅开启一个选项129
5.2.3 仅开启地址复用选项130
5.2.4 开启端口复用选项131
5.3 地址复用的应用场景132
5.4 端口复用的应用场景133
5.4.1 单工作线程133
5.4.2 多工作线程137
5.5 TCP和UDP绑定同一端口138
第6章 收包139
6.1 网卡的准备过程139
6.1.1 网卡驱动的加载140
6.1.2 网卡驱动的初始化141
6.1.3 启用网卡143
6.2 收包过程总览145
6.3 网络接口层148
6.3.1 网卡收到数据包149
6.3.2 内核收到硬中断149
6.3.3 内核收到软中断150
6.3.4 清理接收队列152
6.3.5 GRO158
6.3.6 RPS159
6.3.7 数据包进入协议栈之前161
6.4 网络层(IP)168
6.4.1 网络协议栈入口169
6.4.2 数据包的流向171
6.4.3 数据包的转发172
6.4.4 数据包进入传输层之前173
6.5 传输层(UDP)174
6.5.1 UDP协议入口175
6.5.2 数据包的特殊处理176
6.5.3 将数据包放入接收队列178
6.5.4 唤醒等待数据的进程/线程179
6.6 套接字层183
6.6.1 创建套接字183
6.6.2 绑定套接字188
6.6.3 读取套接字189
第7章 发包195
7.1 发包流程总览195
7.2 套接字层198
7.2.1 send/sendto函数(用户态)198
7.2.2 send/sendto系统调用(内核态)199
7.2.3 选择发送函数200
7.2.4 将消息对象递交到传输层201
7.3 传输层(UDP)202
7.3.1 处理消息对象203
7.3.2 处理数据包(struct sk_buff)211
7.4 网络层(IP)212
7.4.1 IP层入口函数213
7.4.2 IPv4的发送函数214
7.4.3 执行BPF程序214
7.4.4 数据包的分片215
7.4.5 将数据包发给邻居子系统216
7.5 邻居子系统217
7.5.1 确定发送路径219
7.5.2 快速发送路径220
7.5.3 慢速发送路径222
7.6 网络接口层225
7.6.1 网络接口层入口226
7.6.2 内核选择发送队列229
7.6.3 运行排队规则233
7.6.4 将数据包递交到网卡驱动235
7.6.5 网卡驱动发包236
7.6.6 软中断处理过程240
7.6.7 网卡发送完成241
第8章 内存244
8.1 物理内存244
8.1.1 物理内存模型244
8.1.2 物理内存架构250
8.1.3 物理内存节点253
8.1.4 物理内存区域256
8.1.5 物理内存页261
8.1.6 物理内存布局266
8.1.7 物理内存硬件269
8.2 虚拟内存270
8.2.1 虚拟内存布局270
8.2.2 虚拟内存空间279
8.2.3 虚拟内存区域288
8.2.4 虚拟内存申请290
8.3 内存映射301
8.3.1 正向映射301
8.3.2 反向映射307
第9章 案例310
9.1 伪内存泄漏排查310
9.1.1 背景310
9.1.2 分析310
9.1.3 定位311
9.2 周期性事故处理312
9.2.1 背景312
9.2.2 猜想(大胆假设)312
9.2.3 定位(小心求证)313
9.2.4 总结316
内容摘要
本书主要讲解计算机系统中核心的技术知识,涵盖缓存、内存屏障、无锁编程、网络基础、TCP/UDP、端口复用、网络收发包流程、物理内存、虚拟内存等内容。本书还分享了实际工作中可能出现的技术难题及解决方案供读者借鉴。为了使读者轻松、快速地理解书中晦涩难懂的技术知识,本书作者精心绘制了大量的流程图、结构图。为了使读者更好地理解Linux内核源码,本书还提供了大量经过注释的Linux内核源码供读者下载。通过阅读本书,读者可以轻松、快速地掌握这些技术知识,并通过源码和书中配图加强对相关知识的理解。
— 没有更多了 —
以下为对购买帮助不大的评价