Lobsters | 原文链接 | 2026-09-03 收录

平坦与分段内存是递归的:硬件不懂递归,程序员却离不开它

来源: humprog.org — 2026-08-25

概述

作者回顾了自己近期研究 x86 段式内存的经历,指出一个贯穿 64 位迁移与快速系统调用特性演进的趋势:细粒度内存保护的衰退。他给出的解释是 Unix——从 PDP-11/PDP-7 一路继承下来的对平坦地址空间的偏爱,让“没人想要”64 位的段式特性。他又调侃 WebAssembly 爱好者“分段内存在回归”,因为 Wasm 更像是 OS/2 之类非 Unix 系统的编程模型。真正有意思的洞见是:这个问题不该用“是/否”来框定,因为它是递归的——程序员总会在平坦内存上再施加一层子划分(arena、内存池、结构体里的字段),而硬件是有限状态、本质非递归的。CHERI 支持硬件认识这种子划分,过去的硬件则不支持(x86 段式又因特权模型太粗而做不了真正的细粒度隔离)。软件递归、硬件非递归的张力,正是问题的核心。

核心要点

金句

The programmer's mental abstraction is never flat — but hardware is very much non-recursive.(程序员的抽象从不平坦,而硬件却非常不递归。)
返回 Lobsters 首页