Verifying concurrent, crash-safe systems with Perennial

This paper introduces Perennial, a framework for verifying concurrent, crash-safe systems. Perennial extends the Iris concurrency framework with three techniques to enable crash-safety reasoning: recovery leases, recovery helping, and versioned memory. To ease development and deployment of applicati...

Full description

Bibliographic Details
Main Authors: Chajed, Tej, Tassarotti, Joseph, Kaashoek, M. Frans, Zeldovich, Nickolai
Other Authors: Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Format: Article
Language:English
Published: Association for Computing Machinery (ACM) 2021
Online Access:https://hdl.handle.net/1721.1/129984
_version_ 1826211967054905344
author Chajed, Tej
Tassarotti, Joseph
Kaashoek, M. Frans
Zeldovich, Nickolai
author2 Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
author_facet Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Chajed, Tej
Tassarotti, Joseph
Kaashoek, M. Frans
Zeldovich, Nickolai
author_sort Chajed, Tej
collection MIT
description This paper introduces Perennial, a framework for verifying concurrent, crash-safe systems. Perennial extends the Iris concurrency framework with three techniques to enable crash-safety reasoning: recovery leases, recovery helping, and versioned memory. To ease development and deployment of applications, Perennial provides Goose, a subset of Go and a translator from that subset to a model in Perennial with support for reasoning about Go threads, data structures, and file-system primitives. We implemented and verified a crash-safe, concurrent mail server using Perennial and Goose that achieves speedup on multiple cores. Both Perennial and Iris use the Coq proof assistant, and the mail server and the framework’s proofs are machine checked.
first_indexed 2024-09-23T15:14:14Z
format Article
id mit-1721.1/129984
institution Massachusetts Institute of Technology
language English
last_indexed 2024-09-23T15:14:14Z
publishDate 2021
publisher Association for Computing Machinery (ACM)
record_format dspace
spelling mit-1721.1/1299842022-09-29T13:34:21Z Verifying concurrent, crash-safe systems with Perennial Chajed, Tej Tassarotti, Joseph Kaashoek, M. Frans Zeldovich, Nickolai Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory This paper introduces Perennial, a framework for verifying concurrent, crash-safe systems. Perennial extends the Iris concurrency framework with three techniques to enable crash-safety reasoning: recovery leases, recovery helping, and versioned memory. To ease development and deployment of applications, Perennial provides Goose, a subset of Go and a translator from that subset to a model in Perennial with support for reasoning about Go threads, data structures, and file-system primitives. We implemented and verified a crash-safe, concurrent mail server using Perennial and Goose that achieves speedup on multiple cores. Both Perennial and Iris use the Coq proof assistant, and the mail server and the framework’s proofs are machine checked. NSF (Awards CNS-1563763 and CCF- 1836712) 2021-02-23T22:14:55Z 2021-02-23T22:14:55Z 2019-10 2020-12-22T14:37:47Z Article http://purl.org/eprint/type/ConferencePaper 9781450368735 https://hdl.handle.net/1721.1/129984 Chajed, Tej et al. "Verifying concurrent, crash-safe systems with Perennial." Proceedings of the 27th ACM Symposium on Operating Systems Principles, October 2019, Huntsville, Ontario, Canada, Association for Computing Machinery, October 2019. © 2019 owner/author(s) en http://dx.doi.org/10.1145/3341301.3359632 Proceedings of the 27th ACM Symposium on Operating Systems Principles Creative Commons Attribution-Noncommercial-Share Alike http://creativecommons.org/licenses/by-nc-sa/4.0/ application/pdf Association for Computing Machinery (ACM) MIT web domain
spellingShingle Chajed, Tej
Tassarotti, Joseph
Kaashoek, M. Frans
Zeldovich, Nickolai
Verifying concurrent, crash-safe systems with Perennial
title Verifying concurrent, crash-safe systems with Perennial
title_full Verifying concurrent, crash-safe systems with Perennial
title_fullStr Verifying concurrent, crash-safe systems with Perennial
title_full_unstemmed Verifying concurrent, crash-safe systems with Perennial
title_short Verifying concurrent, crash-safe systems with Perennial
title_sort verifying concurrent crash safe systems with perennial
url https://hdl.handle.net/1721.1/129984
work_keys_str_mv AT chajedtej verifyingconcurrentcrashsafesystemswithperennial
AT tassarottijoseph verifyingconcurrentcrashsafesystemswithperennial
AT kaashoekmfrans verifyingconcurrentcrashsafesystemswithperennial
AT zeldovichnickolai verifyingconcurrentcrashsafesystemswithperennial