12、内存虚拟化:云原生时代的奠基者

你好,我是海纳。 今天的这节课呢,是软件篇中的最后一节课了,在前面的课程里,我们整体介绍了单机系统上内存管理的基础知识。这节课,我们就结合前面学习的内容,一起来探讨下,虚拟化中的内存管理,因为我们前面讲过了内存知识,在这个基础上,你再来学习虚拟化中的...

编程高手必学的内存知识

11、即时编译:高性能JVM的核心秘密

你好,我是海纳。 在前面的课程里,我们讲解了进程内部的具体布局,以及每一个部分的功能和作用。你会发现,所有的例子都是用C/C++写的,我相信你在学习的过程中,心里可能会产生这样的疑问:那Java和Python语言是怎么运行起来的呢? 有这个...

编程高手必学的内存知识

10、页中断:fork、mmap背后的保护神

你好,我是海纳。 这节课是对前面所有课程的一次总结和回顾。前面我们介绍了很多内存管理的相关机制,其实都是为了把这节课的故事讲完整。在前面的课程里,我们了解了进程内部的分布,但也留下了三个关键的问题没有讲清楚: fork的工作方式非常奇怪,一方面父进...

编程高手必学的内存知识

9、深入理解堆:malloc和内存池是怎么回事

你好,我是海纳。 在[第3节课],我们讲到线性地址空间按照功能的不同,可以分为不同的区域。同时,我们还简单介绍了,如何使用sbrk和mmap这两个系统调用,向操作系统申请堆内存。 其实,堆内存是程序员打交道最多的一块区域,无论是哪种编程语言,正确合理...

编程高手必学的内存知识

8、动态链接(下):延迟绑定与动态链接器是什么

你好,我是海纳。 在上节课里,我们学习了动态链接过程的基本原理。动态链接通过GOT表加一层间接跳转的方式,解决了代码中call指令对绝对地址的依赖,从而实现了PIC的能力。我们同时也讲到了GOT表中的地址是由加载器在加载时填充的。 不过,细心的你也发...

编程高手必学的内存知识

7、动态链接(上):地址无关代码是如何生成的

你好,我是海纳。 通过上节课的学习,我们了解到,链接器可以将不同的编译单元所生成的中间文件组合在一起,并且可以为各个编译单元中的变量和函数分配地址,然后将分配好的地址传给引用者。这个过程就是静态链接。 静态链接可以让开发者进行模块化的开发,大大的促进...

编程高手必学的内存知识
13940414243673