Verifying concurrent software using movers in CSPEC

被引:0
作者
Chajed, Tej [1 ]
Kaashoek, M. Frans [1 ]
Lampson, Butler [2 ]
Zeldovich, Nickolai [1 ]
机构
[1] MIT CSAIL, Cambridge, MA 02139 USA
[2] Microsoft Res, Redmond, WA USA
来源
PROCEEDINGS OF THE 13TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION | 2018年
关键词
VERIFICATION;
D O I
暂无
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Writing concurrent systems software is error-prone, because multiple processes or threads can interleave in many ways, and it is easy to forget about a subtle corner case. This paper introduces CSPEC, a framework for formal verification of concurrent software, which ensures that no corner cases are missed. The key challenge is to reduce the number of interleavings that developers must consider. CSPEC uses mover types to re-order commutative operations so that usually it's enough to reason about only sequential executions rather than all possible interleavings. CSPEC also makes proofs easier by making them modular using layers, and by providing a library of reusable proof patterns. To evaluate CSPEC, we implemented and proved the correctness of CMAIL, a simple concurrent Maildir-like mail server that speaks SMTP and POP3. The results demonstrate that CSPEC's movers and patterns allow reasoning about sophisticated concurrency styles in CMAIL.
引用
收藏
页码:307 / 322
页数:16
相关论文
共 50 条
  • [1] Flow analysis for verifying properties of concurrent software systems
    Dwyer, MB
    Clarke, LA
    Cobleigh, JM
    Naumovich, G
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2004, 13 (04) : 359 - 430
  • [2] Verifying Industrial Robotic Applications Using Simulation Software
    Kwak, Daniel
    Mikhail, Maged
    IEEE SOUTHEASTCON 2020, 2020,
  • [3] Verifying a Concurrent Garbage Collector Using a Rely-Guarantee Methodology
    Zakowski, Yannick
    Cachera, David
    Demange, Delphine
    Petri, Gustavo
    Pichardie, David
    Jagannathan, Suresh
    Vitek, Jan
    INTERACTIVE THEOREM PROVING (ITP 2017), 2017, 10499 : 496 - 513
  • [4] Using Concurrent Relational Logic with Helpers for Verifying the AtomFS File System
    Zou, Mo
    Ding, Haoran
    Du, Dong
    Fu, Ming
    Gu, Ronghui
    Chen, Haibo
    PROCEEDINGS OF THE TWENTY-SEVENTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES (SOSP '19), 2019, : 259 - 274
  • [5] Generic tools for verifying concurrent systems
    Cleaveland, R
    Sims, ST
    SCIENCE OF COMPUTER PROGRAMMING, 2002, 42 (01) : 39 - 47
  • [6] Verifying Class Invariants in Concurrent Programs
    Zaharieva-Stojanovski, Marina
    Huisman, Marieke
    FUNDAMENTAL APPROACHES TO SOFTWARE ENGINEERING, FASE 2014, 2014, 8411 : 230 - 245
  • [7] Verifying concurrent probabilistic systems using probabilistic-epistemic logic specifications
    Wan, Wei
    Bentahar, Jamal
    Yahyaoui, Hamdi
    Ben Hamza, Abdessamad
    APPLIED INTELLIGENCE, 2016, 45 (03) : 747 - 776
  • [8] Verifying concurrent probabilistic systems using probabilistic-epistemic logic specifications
    Wei Wan
    Jamal Bentahar
    Hamdi Yahyaoui
    Abdessamad Ben Hamza
    Applied Intelligence, 2016, 45 : 747 - 776
  • [9] Testing of Concurrent and Imperative Software using CLP
    Albert, Elvira
    Arenas, Puri
    Gomez-Zamalloa, Miguel
    PROCEEDINGS OF THE 18TH INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING (PPDP 2016), 2016, : 1 - 8
  • [10] Modeling and Verifying Transaction Scheduling for Software Transactional Memory using CSP
    Xu, Chao
    Wu, Xi
    Zhu, Huibiao
    Popovic, Miroslav
    2019 13TH INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING (TASE 2019), 2019, : 240 - 247