Review & Comments

Review & Comments

2025 南京大学《操作系统原理》
Review & Comments

多处理器编程:从入门到放弃

入门:线程库

  • spawn(fn): 创建共享内存的线程 (执行流、状态机)
  • join(): 等待线程结束

放弃:确定性 & 执行顺序 & 全局一致性

  • 人类是 “sequential creatures”
    • 具备 ABA \to \ldots \to B 简化为 ABA \to B 的直觉本能
    • 编译器 (处理器也是编译器) 也是这样设计的
  • 但是多处理器彻底改变了 “执行” 的含义
    • 任何 load 都可能读到其他线程写入的值
    • 连 1 + 1 都不会实现了,这还怎么玩?
2025 南京大学《操作系统原理》
Review & Comments

不要急,我们是来解决问题的

线程 = 人

  • 大脑能完成局部存储和计算

共享内存 = 物理世界

  • 物理世界天生并行

程序 = 状态机

  • C 程序、机器指令、model checker……
  • 物理世界也可以用状态迁移来建模
2025 南京大学《操作系统原理》