In order to understand the relative expressive power of larger concurrent programming languages, we analyze translations of small process calculi which model the communication and synchronization of concurrent processes. The source language SYNCSIMPLE is a minimalistic model for message passing concurrency while the target language LOCKSIMPLE is a minimalistic model for shared memory concurrency. The former is a calculus with synchronous communication of processes, while the latter has synchronizing mutable locations -- called locks -- that behave similarly to binary semaphores. The criteria for correctness of translations is that they preserve and reflect may-termination and must-termination of the processes. We show that there is no correct compositional translation from SYNCSIMPLE to LOCKSIMPLE that uses one or two locks, independent from the initialisation of the locks. We also show that there is a correct translation that uses three locks. Also variants of the locks are taken into account with different blocking behavior.
翻译:为了理解较大同步编程语言的相对表达力, 我们分析模拟同步进程通信和同步的小型进程计算器的翻译。 源语言 SYNCSIMPLE 是传递电文的最小化模式, 而目标语言 LOCKSIMPLE 是共享内存共通货币的最小化模式。 前者是带有同步进程通信的微积分, 而后者则具有与二进制血压相似的可移动位置( 称为锁) 。 翻译的正确性标准是它们保存和反映可能终止和必须终止进程。 我们显示, SYNCSIMPLE 到 LOCKSIMPLE 没有正确的拼写翻译, 它使用一个或两个锁, 独立于锁的初始化。 我们还显示, 有正确翻译, 它使用三个锁。 另外, 锁的变体会被考虑不同的阻塞行为 。