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 overcome challenges of reversing concurrent programs. We prove this reversibility to be correct, showing that the initial program state is restored and that all saved information is used (garbage-free).
翻译:我们引入了扭转执行强制同步程序的方法。 根据一个不可逆的程序, 我们描述两个版本的生成过程。 第一个版本进行前期执行并保存逆转所需的信息。 第二个版本使用此保存的信息模拟逆转。 我们建议使用识别符来克服逆转同步程序的挑战。 我们证明这种可逆性是正确的, 这表明初始程序状态已经恢复, 所有保存的信息都被使用( 无垃圾 ) 。