fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络操作系统/系统开发深入理解Linux进程与内存:修炼底层内功,掌握高性能原理

深入理解Linux进程与内存:修炼底层内功,掌握高性能原理

打造高性能高稳定应用的硬核建议,高频工程实践问题解决方案,清扫性能误区,探寻底层原理,应对招聘、晋升考核,用内功对抗职业焦虑

作者:张彦飞(@开发内功修炼) 出版社:电子工业出版社 出版时间:2024年07月 

ISBN: 9787121485596
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €108.99

类别: 计算机/网络 新书热卖榜, 操作系统/系统开发 SKU:67502bed358b38fec0cf6ef5 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121485596

产品特色

编辑推荐

打造高性能高稳定应用的硬核建议,高频工程实践问题解决方案,清扫性能误区,探寻底层原理,应对招聘、晋升考核,用内功对抗职业焦虑。

1) 作者十余年大型互联网公司实战技术心得分享。

2) 区别于国外计算机原理名著,本书绝非空谈理论,更有与现实业务场景紧密结合的解决方案。

3) 300 幅底层原理彩色插图助力理解。

4) 丰富实验代码免费提供。

5) 张彦飞技术持续精进和时间管理方法深层揭秘。

 

内容简介

国内大部分的开发者和公司都从事的是应用层的开发,平时大家更多关注的是应用层的开发技术。但应用层是建立在CPU和内存等硬件、操作系统内核、语言运行时的基础之上的。如果缺乏对这些底层知识的理解,驾驭技术的能力就无法精进,也很难开发出高性能、高稳定性的应用。 本书主要包括CPU和内存硬件、进程创建和调度原理、虚拟内存底层机制、Go 用户态协程实现、容器cgroup资源限制,以及throttle、CPU利用率和负载等性能指标统计原理等内容,最后过渡到性能优化手段,带领大家修炼底层内功,掌握高性能原理。

作者简介

张彦飞,有十多年一线大厂大型互联网公司项目经验。善于归纳总结内核等底层技术原理。他的技术文章帮助很多读者提升了对底层的理解,深受广大技术爱好者好评。个人微信公众号“开发内功修炼”在全网超过十万读者。

目  录

目 录
第1章 CPU硬件原理 / 1
1.1 CPU的生产过程 / 2
1.2 个人电脑CPU硬件简介 / 3
1.2.1 个人电脑CPU代际简介 / 4
1.2.2 个人电脑CPU内部架构 / 6
1.3 服务器CPU硬件简介 / 7
1.3.1 服务器CPU代际简介 / 8
1.3.2 服务器CPU内部架构 / 9
1.3.3 服务器CPU片内总线 / 10
1.3.4 服务器CPU片间互联 / 12
1.4 CPU核原理 / 15
1.4.1 CPU核内部结构 / 15
1.4.2 CPU的工作频率 / 19
1.4.3 物理核与逻辑核 / 20
1.4.4 CPU的L1/L2/L3缓存查看 / 22
1.4.5 CPU的TLB缓存查看 / 25
1.5 本章总结 / 28

第2章 内存硬件原理 / 30
2.1 CPU对内存的硬件支持 / 31
2.1.1 CPU的内存控制器 / 31
2.1.2 CPU支持的内存代际 / 32
2.1.3 CPU支持的内存模块规格 / 34
2.1.4 服务器CPU支持的ECC内存 / 36
2.2 内存硬件内部结构 / 44
2.2.1 内存的Rank与位宽 / 45
2.2.2 内存Chip内部构成 / 45
2.2.3 服务器内存颗粒构成 / 47
2.3 内存IO原理 / 48
2.3.1 内存延迟 / 48
2.3.2 内存IO过程 / 49
2.3.3 内存Burst IO / 51
2.4 存储性能测试 / 52
2.4.1 延时测试 / 52
2.4.2 带宽测试 / 55
2.5 本章总结 / 57

第3章 进程、线程的对比 / 58
3.1 进程、线程定义 / 59
3.1.1 进程、线程状态 / 61
3.1.2 进程ID与线程ID / 62
3.1.3 进程树关系 / 63
3.1.4 进程调度优先级 / 63
3.1.5 进程地址空间 / 64
3.1.6 进程文件系统信息(当前目录等) / 65
3.1.7 进程打开的文件信息 / 66
3.1.8 命名空间 / 67
3.2 进程的创建 / 69
3.2.1 Nginx使用fork创建worker / 69
3.2.2 fork系统调用原理 / 70
3.2.3 本节小结 / 84
3.3 线程的创建 / 85
3.3.1 线程与进程创建的异同 / 87
3.3.2 fork创建线程的详细过程 / 88
3.4 进程与线程的异同汇总 / 93
3.5 本章总结 / 94

第4章 进程加载启动原理 / 96
4.1 可执行文件格式 / 97
4.1.1 ELF文件头 / 98
4.1.2 Program Header Table / 100
4.1.3 Section Header Table / 102
4.1.4 各种Section / 103
4.1.5 入口进一步查看 / 104
4.2 shell启动用户进程 / 106
4.3 Linux的可执行文件加载器 / 108
4.4 execve加载用户程序 / 110
4.4.1 alloc_bprm初始化linux_binprm对象 / 112
4.4.2 bprm_execve执行加载 / 114
4.5 ELF文件加载过程 / 115
4.5.1 读取ELF文件头 / 116
4.5.2 读取Program Header / 117
4.5.3 清空父进程继承来的资源 / 118
4.5.4 执行Segment加载 / 120
4.5.5 数据内存申请和堆初始化 / 122
4.5.6 跳转到程序入口执行 / 123
4.6 本章总结 / 125

第5章 系统物理内存初始化 / 127
5.1 固件介绍 / 128
5.2 物理内存安装检测 / 129
5.3 初期memblock内存分配器 / 133
5.3.1 memblock内存分配器的创建 / 133
5.3.2 向memblock分配器申请内存 / 136
5.4 NUMA信息感知 / 139
5.4.1 非一致性内存访问原因 / 139
5.4.2 Linux获取NUMA信息 / 140
5.5 物理页管理之伙伴系统 / 143
5.5.1 伙伴系统相关数据结构 / 143
5.5.2 伙伴系统管理空闲页面 / 145
5.5.3 memblock向伙伴系统交接物理内存 / 148
5.6 本章总结 / 149

第6章 进程如何使用内存 / 153
6.1 虚拟内存和物理页 / 154
6.1.1 虚拟地址空间 / 154
6.1.2 缺页中断 / 157
6.2 虚拟内存使用方式 / 162
6.2.1 进程启动时对虚拟内存的使用 / 162
6.2.2 mmap / 166
6.2.3 sbrk和brk / 168
6.3 进程栈内存的使用 / 170
6.3.1 进程栈的初始化 / 170
6.3.2 栈的自动增长 / 172
6.3.3 进程栈总结 / 176
6.4 线程栈是如何使用内存的 / 176
6.4.1 glibc线程对象 / 178
6.4.2 确定栈空间大小 / 178
6.4.3 申请用户栈 / 180
6.4.4 创建线程 / 182
6.4.5 线程栈小结 / 183
6.5 进程堆内存管理 / 183
6.5.1 ptmalloc内存分配器定义 / 184
6.5.2 malloc内存分配过程 / 190
6.6 本章总结 / 192

第7章 进程调度器 / 196
7.1 Linux进程调度发展简史 / 197
7.1.1 O(n)调度发展过程 / 197
7.1.2 Linux 2.5 O(1)调度器 / 201
7.1.3 完全公平调度器诞生 / 205
7.2 Linux调度器定义 / 205
7.2.1 实时调度器 / 208
7.2.2 完全公平调度器 / 209
7.3 进程的任务队列选择 / 211
7.3.1 新进程创建时加入 / 212
7.3.2 老进程唤醒时加入 / 220
7.4 调度时机 / 221
7.4.1 调度节拍 / 221
7.4.2 真正的调度 / 232
7.5 任务切换开销实测 / 234
7.5.1 进程切换开销 / 235
7.5.2 线程切换开销 / 237
7.6 Linux调度器相关命令 / 238
7.6.1 调度策略 / 238
7.6.2 nice值设置 / 239
7.6.3 taskset命令 / 241
7.7 本章总结 / 242

第8章 性能统计原理 / 246
8.1 负载 / 247
8.1.1 理解负载查看过程 / 247
8.1.2 内核负载计算过程 / 249
8.1.3 平均负载和CPU消耗的关系 / 254
8.1.4 负载计算整体流程 / 256
8.2 CPU利用率 / 256
8.2.1 方案思考 / 257
8.2.2 top命令使用的数据在哪里 / 259
8.2.3 统计数据是怎么来的 / 262
8.2.4 CPU利用率统计流程 / 266
8.3 指令统计 / 268
8.4 本章总结 / 270

第9章 用户态协程 / 274
9.1 Go的GMP原理 / 275
9.1.1 Go中的线程 / 276
9.1.2 Go中的协程 / 277
9.1.3 Go中的虚拟处理器 / 278
9.2 Go程序启动过程 / 280
9.2.1 寻找执行入口 / 281
9.2.2 执行入口分析 / 282
9.2.3 main函数真正运行 / 290
9.3 协程的栈内存 / 292
9.3.1 回忆进程栈和glibc 线程栈 / 292
9.3.2 Go的线程栈与协程栈 / 293
9.3.3 Go协程栈的扩张 / 296
9.4 使用协程封装epoll / 299
9.4.1 Go net包使用方式 / 300
9.4.2 Listen底层过程 / 301
9.4.3 Accept过程 / 305
9.4.4 Read和Write内部过程 / 310
9.4.5 Go唤醒协程 / 312
9.5 协程切换性能测试 / 314
9.6 本章总结 / 316

第10章 容器化技术 / 318
10.1 容器发展过程 / 319
10.1.1 虚拟机时代 / 319
10.1.2 容器化技术 / 320
10.2 PID命名空间 / 326
10.2.1 默认命名空间 / 327
10.2.2 新PID命名空间创建 / 330
10.2.3 在命名空间中申请pid / 334
10.2.4 容器进程pid查看 / 337
10.3 本章总结 / 339

第11章 容器的CPU资源限制 / 340
11.1 CPU cgroup的创建原理 / 341
11.1.1 使用cgroupfs创建cgroup / 341
11.1.2 内核中cgroup的相关定义 / 344
11.1.3 创建cgroup对象原理 / 349
11.1.4 将进程PID写进cgroup / 351
11.2 容器CPU权重分配实现 / 354
11.2.1 容器CPU权重设置 / 354
11.2.2 容器CPU权重分配实现 / 355
11.3 容器CPU限制分配实现 / 358
11.3.1 设置CPU限制 / 358
11.3.2 设置CPU限制底层原理 / 360
11.3.3 进程CPU带宽控制过程 / 362
11.3.4 进程的可运行时间的分配 / 368
11.3.5 容器CPU性能 / 372
11.4 K8s中的limits与requests / 375
11.5 容器中的CPU利用率 / 377
11.5.1 获取容器CPU利用率的思路 / 377
11.5.2 cgroup v1 CPU 利用率统计原理 / 381
11.5.3 cgroup v2 CPU利用率统计原理 / 385
11.6 本章总结 / 391

第12章 容器的内存资源限制 / 394
12.1 内存cgroup的创建原理 / 395
12.1.1 内存cgroup定义 / 395
12.1.2 创建内存cgroup / 395
12.1.3 内存cgroup中的接口文件 / 397
12.2 设置内存cgroup内存限制 / 397
12.3 容器物理内存的分配 / 399
12.3.1 记账过程 / 401
12.3.2 容器内存超出限制时的处理 / 402 <

媒体评论

程序员这个职业是幸福的,因为可以在软件的世界中充当“上帝”的角色,“为所欲为”,但程序员又是“悲催”的,因为这个软件世界的上层每隔5~10年就会坍塌重建一次,让你之前的积累清零。怎么办呢?像飞哥这样,瞄准底层,学习长期稳定不变的基础知识,掌握规律,修炼内功,以底层的“不变”应对上层的“万变”,让自己立于不败之地

——刘欣,自媒体“码农翻身”作者

作为一个喜欢研究底层技术,同时在工作中也因理论和实践无法很好打通而困惑的人,看到这本书的出版是非常兴奋的!拿到书稿的第一时间我就如饥似渴全部读完了。从我看的飞哥的第一篇经典技术文章《图解Linux网络包接收过程》,到前段时间出版的《深入理解Linux网络》,再到现在的这本《深入理解Linux进程与内存》,飞哥总能做到在深入解读源码的同时又不脱离实际工作,通过抽丝剥茧般的讲解逐渐触达技术的本质,真正从根本上解答你心中的疑惑。

——闪客,《Linux源码趣读》作者

抢先评论了 “深入理解Linux进程与内存:修炼底层内功,掌握高性能原理” 取消回复

评论

还没有评论。

相关产品

加入购物车

UNIX环境高级编程(第3版)(20年来影响无数程序员的经典之作,与Linux相结合的权威案例教程。UNIX网络编程“圣经”全

EUR €59.99
评分 5.00 &sol; 5
阅读更多
缺货

Linux就该这么学

EUR €48.99
阅读更多
缺货

Linux命令行大全

EUR €43.99
加入购物车

鸟哥的Linux私房菜 基础学习篇 第四版

EUR €68.99
评分 5.00 &sol; 5

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略