编程高手必学的内存知识
学好内存,掌握系统开发诀窍
海纳  华为编译器高级专家,原 Huawei JDK 团队负责人
专栏
已完结·共 33 讲
|
2.1w 人已学
|
收藏
直到对该块内存进行读写时,操作系统才会真正地为它分配物理内存
来自:01|虚拟内存:为什么可用内存会远超物理内存?
9 人划过
协程是比线程更轻量的执行单元。进程和线程的调度是由操作系统负责的,而协程则是由执行单元相互协商进行调度的,所以它的切换发生在用户态。只有前一个协程主动地执行 yield 函数,让出 CPU 的使用权,下一个协程才能得到调度。
来自:05 | 栈的魔法:从栈切换的角度理解进程和协程
8 人划过
“写传播”的缓存一致性的缺点是需要很高的带宽。原因是对于缓存块的每次写入,都会触发 BusWr 从而占用带宽。相反的是,在“写无效”缓存策略下,如果同一个缓存块中的数据被多次写入,只需占用一次总线带宽来失效其他处理器的缓存副本即可。
来自:15 | MESI协议:多核CPU是如何同步高速缓存的?
5 人划过
执行 callq 指令时,CPU 会把 rip 寄存器中的内容,也就是 call 的下一条指令的地址放到栈上(在这个例子中就是 0x40054b),然后跳转到目标函数处执行。当目标函数执行完成后,会执行 ret 指令,这个指令会从栈上找到刚才存的那条指令,然后继续恢复执行。
来自:04 | 深入理解栈:从CPU和函数的视角看栈的管理
4 人划过
不同模块之间符号的链接过程,需要推迟到加载时进行
来自:07 | 动态链接(上):地址无关代码是如何生成的?
4 人划过
对于未初始化的全局变量和静态变量,因为编译器知道它们的初始值都是 0,因此便不需要再在程序的二进制映像中存放这么多 0 了,只需要记录他们的大小即可,这便是 BSS 段
来自:03 | 内存布局:应用程序是如何安排数据的?
4 人划过
Happens-Before 模型强调的是同步动作的先后关系,对于非同步动作,就没有任何的限制了。
来自:18 | Java内存模型:Java中的volatile有什么用?
3 人划过
text 段内部的偏移可以保证在链接的过程中不发生改变
来自:06 | 静态链接:变量与内存地址是如何映射的?
3 人划过
do_page_fault,在这个函数里,它会继续判断中断的类型。由于发生中断的虚拟地址在 vma 中是可写的
来自:10 | 页中断:fork、mmap背后的保护神
3 人划过
这种不断地把一块内存分割成更小的两块内存的做法,就是伙伴系统,这两块更小的内存就是伙伴。
来自:09 | 深入理解堆:malloc和内存池是怎么回事?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

海纳

华为编译器高级专家,原 Huawei JDK 团队负责人

海纳,华为资深编译器专家,原 Huawei JDK 团队负责人。著有《自己动手写 Python 虚拟机》,并长期维护知乎专栏《进击的 Java 新人》,他的《从零开始写 Linux 内核》也即将面市。 海纳的工作涉及数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,他在这些领域积...查看更多
编辑推荐
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283803 人已学习

¥68¥199
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224934 人已学习

¥68¥199
操作系统实战 45 讲
彭东
网名 LMOS,Intel 傲腾项目关键开发者

60讲 | 65220 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180999 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123469 人已学习

¥98¥299
Redis 核心技术与实战
蒋德钧
中科院计算所副研究员

53讲 | 81741 人已学习

¥68¥199