Skip to content

共享内存系统

Shared-memory system

进程通过读写共享对象交互的并发模型。

形式陈述

共享内存系统由一组并发进程与一组共享对象组成。进程通过对象操作交互,例如原子寄存器的 read()write(v)。一次执行可抽象为调用和响应事件组成的历史 H;每个操作是匹配的调用—响应区间,尚无响应者为 pending。每个进程在历史中的投影必须符合其顺序程序。

直觉

进程不显式发送消息,而是读写共同可见的对象。并发语义的核心不是某条机器指令长什么样,而是多个跨时间区间的操作应被允许观察成什么结果。

例子与边界

两个线程分别执行 write(1)read() 时,读可能在写之前、之后或与之并发,规范需说明允许返回什么。把普通多字写入假定为原子共享对象是不合法的模型偷换;底层内存模型、对象原子性和编译器重排都必须由实现或规范保证。

推论与应用

共享内存模型用于定义寄存器、队列、栈、锁和无锁对象,并以历史为基础陈述线性一致性、顺序一致性与进展条件。它与消息传递模型可相互模拟,但故障假设和复杂度代价会改变。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 9–13。
  • Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chs. 2–5。