形式陈述
共享内存系统由一组并发进程与一组共享对象组成。进程通过对象操作交互,例如原子寄存器的
直觉
进程不显式发送消息,而是读写共同可见的对象。并发语义的核心不是某条机器指令长什么样,而是多个跨时间区间的操作应被允许观察成什么结果。
例子与边界
两个线程分别执行 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。