Shared Memory

Abstraction

Share Memory Abstraction(SMA): 当多个进程无法共享物理存储,只能通过exchange message进行通信时,如何提供一种抽象,让进程感觉就好像在访问一个共享存储。SMA也被称为register,这应该是因为SMA就好像多核系统中,多个cpu的寄存器工作如何就像一个共享寄存器一样。
SMA最直接的应用场景应该就是分布式存储中的副本一致性:从用户访问角度,多个副本如何表现得像一个副本一样。
本章提供了如下几种SMA模型:

  • (1,N)regular register:
  • (1,N)atomic register:
  • (N,N)atomic register:
    当然上面三个模型可以根据 fail-stop,fail-silent,fail-recovery,fail-arbitrary格子寅生出不同的算法。

Introducation

4.1.2 Register Overview

Assumption:

  • The processes in the system use register for communicating with each other and for storing information.
  • Each correct process accesses the registers in a sequential manner.(只有当上一个operation执行完,才会进行下一个operation。如果上一个operation未执行完就crash了,那么下一个operation自然得不到执行了。)
  • values written to a particular register are unique.(比如附加时间戳)

Signature and Semantics

事件定义(register——r):

  • <r,Read>
  • <r,Readreturn | v>
  • <r,Write| v>
  • <r,WriteReturn>
    If a register is accessed by a set of processes one at a time, in a serial manner, and if no process crashes, we define following two properties:(这两个属性会贯穿本章)
  • Liveness: Every operation eventually completes.
  • Safety: Every read operation returns the value written by the last written operation.

Failures

failure是不可预测的,它会在任何时间节点发生,例如在operation invoke 和 operation complete 之间发生,所以对于crash process我们不能保证Liveness。我们思考这样一个问题,当failure发生时,safety会发生什么变化:read operation是返回last correctly written value呢?还是返回crash的written value?其实我们无法判断。不过我们可以认为这样的write和之后的read是“concurrency”的。

Concurrency

当read和write并发是,什么是last value呢?这个问题和failure有点相似。

4.1.3 Completeness and Precedence

如果说operation A precedence operation B,那么 T(completion of A) < T(invoke of B);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容