×

无死锁监视器。 (英语) Zbl 1418.68056号

阿马尔·艾哈迈德(编辑),《编程语言和系统》。2018年4月14日至20日在希腊塞萨洛尼基举行的第27届欧洲编程研讨会(ESOP 2018),作为欧洲软件理论与实践联合会议的一部分。诉讼程序。查姆:斯普林格。莱克特。注释计算。科学。10801, 415-441 (2018).
摘要:监视器是多线程程序中同步线程的常用技术之一,其中对条件变量调用\(\mathsf{wait}\)命令会挂起调用方线程,而通知条件变量会导致等待该条件变量的线程恢复执行。这些程序的一个潜在问题是,等待线程可能会永远挂起,从而导致死锁,即程序的每个线程都在等待条件变量或锁。本文提出了一种模块化的程序死锁自由验证方法,确保在程序执行的任何状态下,如果有一些线程被挂起,那么至少有一个线程在运行。此方法背后的主要思想是确保对于线程正在等待的任何条件变量\(v),都存在一个线程必须履行\(v与每个可等待对象关联的数字小于等待级别\(v\)。本文引入的放松优先关系旨在避免循环,也有利于其他一些验证方法,验证通道和信号量等其他同步结构的死锁自由度,使它们能够接受更广泛的无死锁程序。我们在VeriFast程序验证器中对所提出的证明规则进行了编码,并通过为与一些条件变量相关的锁定义一些适当的不变量,成功地验证了监视器的一些流行用例,包括无界/有界缓冲区、睡眠理发器、屏障和读写器锁。给出了该方法的可靠性证明;这个证明中一些最棘手的引理已经用Coq进行了机器检查。
关于整个系列,请参见[Zbl 1408.68004号].

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
68吨15 定理证明(演绎、解析等)(MSC2010)

软件:

Coq公司
PDF格式BibTeX公司 XML格式引用
全文: 内政部