“真正的并发”是什么意思?


28

我经常听到诸如“真正的并发语义”和“真正的并发等效”之类的短语而没有任何参考。这些术语是什么意思,为什么重要?

真正的并发等效的一些例子是什么,对它们有什么需求?例如,在哪些情况下它们比更多的标准等价物(双仿真,痕量等价物)更适用?

Answers:


23

术语“真正的并发性”出现在并发和并行计算的理论研究中。与交错并发形成对比。真正的并发是不能减少为交错的并发。如果在计算的每个步骤中只能发生一个原子计算动作(例如,发送方和接收方之间交换消息),则将并发进行交错。如果一个步骤中发生了多个这样的原子操作,则并发为真。

区分两者的最简单方法是查看并行组合的规则。在基于交织的设置中,它看起来像这样:

PPP|QP|Q

该规则强制并行组成中只有一个进程可以执行原子动作。对于真正的并发,更类似以下规则。

PPQQP|QP|Q

该规则允许并行组成中的两个参与者都执行原子动作。

当并发理论确实是对并行执行计算步骤的系统的研究时,为什么人们会对交错式并发感兴趣?答案是,并且这是一个很好的见解,对于简单形式的消息传递并发,真正的并发和基于交织的并发在上下文上是不可区分的。换句话说,就观察者而言,交错并发的行为就像真正的并发。交织是对真正并发的良好分解。由于交织在证明中更易于处理,因此人们通常只研究基于交织的更简单的并发(例如CCS和π-钙)。但是,对于具有更丰富观察形式的并发计算(例如定时计算),这种简单性消失了:真正并发与交错并发之间的差异变得可见。

标准等效项(例如双仿真和跟踪)对基于真实和交织的并发具有相同的定义。但是,取决于底层演算,它们可能等同于也可能不等同于不同的过程。

让我给出一个非正式的解释,说明为什么在简单的过程计算中无法区分交错和真正的并发交互。设置为CCS或类演算。说我们有一个程序π

P=x¯ | y¯ | x.y.a¯ | y.b¯
然后,我们得到以下真正的并发缩减: 此缩减步骤可以与以下交错的步骤匹配: 两者之间的唯一区别是,前者迈出了一步,而后者则迈出了一步。但是简单的计算无法检测到达到某个过程所需的步骤数。
Py.a¯ | b¯
Px¯ | x.y.a¯ | b¯y.a¯ | b¯

同时,具有以下第二个交错的缩减序列: 但这只是真正并发设置中的简化序列,只要不强制要求真正的并发(即即使一次可能存在多个交互,也可以执行交错执行。P

Py¯ | y.a¯ | y.b¯a¯ | y.b¯

谢谢,很好的答案!您能给我一些参考资料吗?
丹尼尔(Daniil)

@Daniil恐怕我没有任何方便的参考资料。在我开始之前,部分是关于民间文学艺术,部分是在并发理论的早期进行了研究。如果您想做一点数学,则可以自己建立基本的结果。以一个简单的过程演算为例,例如异步 -calculus,为其配备真正的并发约简,并证明当您将新演算中的两个过程等同于交错演算时,它们被您最喜欢的(弱)对等概念等同。π
马丁·伯杰

0

说实话,我本人正在寻找答案。这里的语义是什么?我们给“过程代数”的描述赋予一个“过渡系统”的含义;也就是说,含义是使用定义的SOS规则从初始系统描述生成的过渡系统。因此,使用交织语义,我们失去了所获得的过渡系统中的所有并发结构。

另一个答案可能不是“可观察的差异”,而是“可观察性”的差异。使用交织语义,我们只能观察到线性游程。同时,使用真正的并发,我们可能会观察到“并发运行”(请参阅​​W.Reisig'13 Petri网书)。

尽管如此,我对我上面所说的还有一些疑问,并且听到更深刻的见解会很有趣。即,使用Lamport矢量时钟,可以将多少相对论转移到并发理论。


1
早期已经观察到从并发程序到过渡系统的步骤可以有损地进行。约翰·雷诺兹(John Reynolds)制定了现在称为雷诺兹(Reynolds)的准则,以描述交织语义对于共享变量并发程序何时准确。沃恩·普拉特(Vaughan Pratt)作为模型P 1986研究了真正的并发,并与戈登·普洛特金(Gordon Plotkin)一起在1987年P&P观察了行动顺序的局部性。

@凯,参考非常感谢!我将它们写下来,以防链接断开:Vaughan Pratt,使用部分订单建模并发;G. Plotkin V. Pratt,“团队可以看到Pomsets”。>可以以有损方式进行。当然,我只是想清除“语法描述/语义/含义”中的单独概念。
Leonid Dworzanski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.