Skip to content

导引:点亮什么

上一章让两个核真跑起了线程。一旦真并发,一批单核时代"不是 bug"的代码立刻变脸——引用计数在两核间丢更新、分配器被双核同时踩、CoW 页被误释放。这章把这些并发债一次性清算,顺带把类型安全和可观测性往上抬一档:一个饱和引用计数类型、一个用户指针标记、几个 irq-safe 自旋锁,以及编译期的零警告门禁和运行期的 UBSan。验证靠构建零警告 + 内核测试(含新增的 refcount/user_ptr/mapcount 用例)。

这章咱们要点亮什么

  1. 饱和引用计数:为什么普通的原子计数器不够用、会 wrap 成 use-after-free,以及饱和怎么堵这个洞。
  2. 用户指针标记:用类型系统给"来自用户空间的指针"打个零开销的标。
  3. SMP 并发债清算:分配器、任务注册表在双核下怎么撞,irq-safe 自旋锁怎么护。
  4. CoW 页的引用计数:fork/exec 的写时复制页为什么需要 per-page 计数,不然就 use-after-free。
  5. 零警告门禁 + UBSan:把警告升级成编译失败、把未定义行为变成运行期报告。

035_multi_terminal-45-gf25de18 · f25de18 · 2026-08-04