
从进程栈内存底层原理到Segmentation fault报错
大家好,我是飞哥!栈是编程中使用内存最简单的方式。例如,下面的简单代码中的局部变量 n 就是在堆栈中分配内存的。#include <stdio.h> void main() { int n = 0; printf("0x%x\n",&v)...
大家好,我是飞哥!栈是编程中使用内存最简单的方式。例如,下面的简单代码中的局部变量 n 就是在堆栈中分配内存的。#include <stdio.h> void main() { int n = 0; printf("0x%x\n",&v)...
大家好,我是飞哥!读者群里一位同学的线上服务器出现一个诡异的问题,执行任何命令都是报错“fork:无法分配内存”。这个问题最近出现的,前几次重启后解决的,但是每隔 2-3 天就会出现一次。# service docker stop -bash fork: 无法分配内存 # vi 1.txt -...
现在你可能还觉得Node、zone、伙伴系统、slab这些东东还有那么一点点陌生。别怕,接下来我们结合动手观察,把它们逐个来展开细说。(下面的讨论都基于Linux 3.10.0版本)一、NODE 划分在现代的服务器上,内存和CPU都是所谓的NUMA架构 CPU往往不止是一颗。通过...
从2001年DDR内存面世以来发展到2019年的今天,已经走过了DDR、DDR2、DDR3、DDR4四个大的规格时代了。内存的工作频率也从DDR时代的266MHz进化到了今天的3200MHz。这个频率在操作系统里叫Speed、在内存术语里叫等效频率、或干脆直接简称频率。这个频率越高,每秒钟内存...
平时大家都知道内存访问很快,今天来让我们来把刨根问底的精神发挥到极致,来思考两个问题 问题1: 内存访问延时到底是多少?你是否会进行大概的估算? 例如笔者的内存条的Speed显示是1066MHz,那是否可以推算出内存IO延时是1s/1066MHz=0.93ns?这种算法大错特错。问题2: 内...