Flat vs. segmented memory:递归的真相
Flat vs. segmented memory – it's recursive
我最近研究 x86 分段机制时注意到一个趋势:细粒度内存保护正在衰退。Unix 对 Flat 地址空间的偏好,让 64 位架构放弃了复杂的分段功能。然而,WebAssembly 的兴起似乎预示着分段内存的回归。Poul-Henning Kamp 曾指出,Flat 内存模型本质上是“不安全”的,因为软件总会强行在其上构建子结构。问题的核心在于:硬件是非递归的有限状态机,而软件思维本质是递归的。CHERI 架构试图通过能力链解决这一矛盾,而我的 liballocs 项目则专注于描述性地捕捉软件递归划分地址空间的结构。硬件与软件在递归性上的根本差异,正是我们需要调和的关键。
如果硬件是非递归的,但软件是递归的,我们该如何调和这两者之间的差异?