直到对该块内存进行读写时,操作系统才会真正地为它分配物理内存
来自: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 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
看过的人还看了