首页> 外文期刊>Computer architecture news >A Case for an Interleaving Constrained Shared-Memory Multi-Processor
【24h】

A Case for an Interleaving Constrained Shared-Memory Multi-Processor

机译:交错约束共享内存多处理器的情况

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

摘要

Shared-memory multi-threaded programming is inherently more difficult than single-threaded programming. The main source of complexity is that, the threads of an application can interleave in so many different ways. To ensure correctness, a programmer has to test all possible thread interleavings, which, however, is impractical.rnMany rare thread interleavings remain untested in production systems, and they are the root cause for a majority of concurrency bugs. We propose a shared-memory multiprocessor design that avoids untested interleavings to improve the correctness of a multi-threaded program. Since untested interleavings tend to occur infrequently at runtime, the performance cost of avoiding them is not high.rnWe propose to encode the set of tested correct interleavings in a program's binary executable using Predecessor Set (PSet) constraints. These constraints are efficiently enforced at runtime using processor support, which ensures that the runtime follows a tested interleaving. We analyze several bugs in open source applications such as MySQL, Apache, Mozilla, etc., and show that, by enforcing PSet constraints, we can avoid not only data races and atomicity violations, but also other forms of concurrency bugs.
机译:共享内存多线程编程从本质上比单线程编程更加困难。复杂性的主要来源是,应用程序的线程可以以许多不同的方式进行交织。为了确保正确性,程序员必须测试所有可能的线程交织,但是这是不切实际的。许多罕见的线程交织在生产系统中仍然未经测试,它们是大多数并发错误的根本原因。我们提出了一种共享内存的多处理器设计,该设计可以避免未经测试的交错,从而提高多线程程序的正确性。由于未经测试的交织往往在运行时很少发生,因此避免它们的性能代价并不高。我们建议使用前置程序集(PSet)约束在程序的二进制可执行文件中对一组经过测试的正确交织进行编码。这些约束在运行时使用处理器支持有效地实施,从而确保运行时遵循经过测试的交织。我们分析了MySQL,Apache,Mozilla等开源应用程序中的几个错误,并表明通过强制执行PSet约束,我们不仅可以避免数据争夺和原子性违规,而且还可以避免其他形式的并发错误。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号