Abstract
We introduce a method of reversing the execution of imperative concurrent programs. Given an irreversible program, we describe the process of producing two versions. The first performs forward execution and saves information necessary for reversal. The second uses this saved information to simulate reversal. We propose using identifiers to capture statement execution order, and to use this to correctly undo data races via backtracking reversibility. We prove this reversibility to be correct, showing that the initial program state is restored and that all saved information is used (garbage-clean). • Reversal of a concurrent imperative programming language that stores minimal data to undo irreversible steps • Identifiers assigned to statements as they execute that determines reverse control flow and ensures correct reversibility • Proof of correctness confirms the method of reversal restores program states and does not produce garbage • Reversibility illustrated on an implementation of a parallel sorting algorithm, with forward and reverse execution described
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.