...
首页> 外文期刊>International journal of parallel programming >Convoider: A Concurrency Bug Avoider Based on Transparent Software Transactional Memory
【24h】

Convoider: A Concurrency Bug Avoider Based on Transparent Software Transactional Memory

机译:Convoider:基于透明软件事务性内存的并发错误避免器

获取原文
获取原文并翻译 | 示例
   

获取外文期刊封面封底 >>

       

摘要

Software transactional memory is an effective mechanism to avoid concurrency bugs in multi-threaded programs. However, two problems hinder the adoption of traditional such systems in wild world: high human cost for equipping programs with transaction functionality and low compatibility with I/O calls and conditional variables. This paper presents Convoider to try to solve these problems. By intercepting inter-thread operations and designating code among them as transactions in each thread, Convoider automatically transactionalizes target programs without any source code modification and recompiling. By saving/restoring stack frames and CPU registers on beginning/aborting a transaction, Convoider makes execution flow revocable. By turning threads into processes, leveraging virtual memory protection and customizing memory allocation/deallocation, Convoider makes memory manipulations revocable. By maintaining virtual file systems and redirecting I/O operations onto them, Convoider makes I/O effects revocable. By converting lock/unlock operations to no-ops, customizing signal/wait operations on condition variables and committing memory changes transactionally, Convoider makes deadlocks, data races and atomicity violations impossible. Experimental results show that Convoider succeeds in transparently transactionalizing twelve real-world applications and perfectly avoid 94% of thirty-one concurrency bugs used in our experiments. This study can help efficiently transactionalize legacy multi-threaded applications and effectively improve the runtime reliability of them.
机译:软件事务性内存是避免多线程程序中的并发错误的有效机制。但是,有两个问题阻碍了在野外环境中采用传统的此类系统:为程序配备事务功能的人工成本较高,与I / O调用和条件变量的兼容性较低。本文提出了Convoider来尝试解决这些问题。通过拦截线程间操作并在其中将代码指定为每个线程中的事务,Convoider可以自动对目标程序进行事务处理,而无需任何源代码修改和重新编译。通过在开始/中止事务时保存/恢复堆栈帧和CPU寄存器,Convoider使执行流程可撤消。通过将线程转换为进程,利用虚拟内存保护并自定义内存分配/重新分配,Convoider使内存操作可撤销。通过维护虚拟文件系统并将I / O操作重定向到虚拟文件系统,Convoider使I / O效果可撤消。通过将锁定/解锁操作转换为无操作,自定义条件变量的信号/等待操作并以事务方式提交内存更改,Convoider使得死锁,数据争用和原子性违规成为不可能。实验结果表明,Convoider成功地透明地事务处理了12个现实应用程序,并完美避免了我们实验中使用的31个并发错误中的94%。这项研究可以帮助有效地对旧的多线程应用程序进行事务处理,并有效地提高它们的运行时可靠性。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号