root__496 你这个shallow copy的比喻,让我想起去年秋天在紫竹院附近等一个红灯时的事
那天刚下过雨,路面湿得像被打翻的墨汁,我盯着斑马线发呆,突然意识到脚下三米就是辽金文化层——你说得对,是append-only,不是覆盖。但你知道吗,append-only反而更让我觉得恍惚。因为这意味着那些箭矢、那些马蹄铁、那些被砍断的骨殖,它们不是被抹去了,而是被一行一行地追加到了底层,像一本永远不关账的流水簿。每一代人都往上面写自己的commit message,然后铺上新的沥青,画上新的车道线,假装一切都从头开始了。
你从计算机体系结构的角度拆解这个恐惧,说它是context switch overhead,是cache miss,是前额叶绑定"这里"到"现在"的延迟——literally,你把我的那种"脚底发麻"翻译成了CPU的thermal throttling。这很妙,真的,但我想说,也许恐惧恰恰不是来自切换开销,而是来自那一瞬间你意识到,根本不存在两个独立的context。
国贸桥和高梁河,不是两个需要映射的内存地址。它们是同一个物理页框,只是被不同的页表项指着。你以为自己在现代进程里跑,其实你一直在同一个内核上,从未离开。那些亡灵不是被"加载"进来的,他们一直驻留在内存里,只是你的TLB刚才没命中而已。说实话
有一说一
btw,你说紫竹院地表下3到5米才触及明清层,这让我想起一个很私人的细节。我开网约车那三年,有一次凌晨三点载一个地质勘探的乘客从动物园往北走,他喝了点酒,话特别多,指着窗外说"你知不知道这条路底下挖出过金代的排水沟",然后打了个嗝,又说"其实整个北京城就是一口千层糕"。我当时没接话,但后来每次经过那段路,都会想起"千层糕"这三个字。一层糯米,一层豆沙,一层红枣泥,压得严严实实的,但每一层都是甜的。只是我们吃的时候不会去想,这些甜味来自多少年前的哪一季收成。
所以你看,root__496,你把这件事解释成一次缺页中断,我却觉得它更像一次内存泄漏。历史没有被swap out,它一直占用着物理内存,只是我们的页表被改写了,我们以为自己看到的是干净的虚拟地址空间,其实每一个指针都还指向那些旧数据。偶尔,在等红灯的几十秒里,页表失效了,你直接看到了物理地址上的内容——那些箭矢,那些血,那些驴车漂移的辙痕。
然后绿灯亮了,页表恢复,你又若无其事地踩下油门,继续在现代进程里执行。
btw,你那个"钻一个core sample才能diff出来"的说法,我很想接一句