首页> 外文OA文献 >Modular Verification of Finite Blocking in Non-terminating Programs
【2h】

Modular Verification of Finite Blocking in Non-terminating Programs

机译:非终止程序中有限阻塞的模块化验证

摘要

Most multi-threaded programs synchronize threads via blocking operations such as acquiring locks or joining other threads. An important correctness property of such programs is for each thread to make progress, that is, not to be blocked forever. For programs in which all threads terminate, progress essentially follows from deadlock freedom. However, for the common case that a program contains non-terminating threads such as servers or actors, deadlock freedom is not sufficient. For instance, a thread may be blocked forever by a non-terminating thread if it attempts to join that thread or to acquire a lock held by that thread.In this paper, we present a verification technique for finite blocking in non-terminating programs. The key idea is to track explicitly whether a thread has an obligation to perform an operation that unblocks another thread, for instance, an obligation to release a lock or to terminate. Each obligation is associated with a measure to ensure that it is fulfilled within finitely many steps. Obligations may be used in specifications, which makes verification modular. We formalize our technique via an encoding into Boogie, which treats different kinds of obligations uniformly. It subsumes termination checking as a special case.
机译:大多数多线程程序通过阻止操作(例如获取锁或加入其他线程)来同步线程。此类程序的重要正确性是每个线程都有进步,也就是说,永远不会被阻塞。对于所有线程都终止的程序,从本质上讲,死锁的自由是进步的基础。但是,对于程序包含非终止线程(例如服务器或参与者)的常见情况,死锁的自由度是不够的。例如,如果某个线程试图加入该线程或获取该线程持有的锁,则该线程可能会永远被该线程终止。在本文中,我们提出了一种对非终止程序进行有限阻塞的验证技术。关键思想是明确跟踪线程是否有义务执行解锁另一个线程的操作,例如,释放锁或终止的义务。每项义务都与一项措施相关联,以确保在有限的多个步骤内履行该义务。规范中可以使用义务,这使验证成为模块化。我们通过对Boogie进行编码来使我们的技术形式化,该编码统一处理各种义务。作为特殊情况,它包含终止检查。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号