首页> 外文期刊>Formal Methods in System Design >From non-preemptive to preemptive scheduling using synchronization synthesis
【24h】

From non-preemptive to preemptive scheduling using synchronization synthesis

机译:使用同步综合从非抢占式调度到抢占式调度

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

摘要

We present a computer-aided programming approach to concurrency. The approach allows programmers to program assuming a friendly, non-preemptive scheduler, and our synthesis procedure inserts synchronization to ensure that the final program works even with a preemptive scheduler. The correctness specification is implicit, inferred from the non-preemptive behavior. Let us consider sequences of calls that the program makes to an external interface. The specification requires that any such sequence produced under a preemptive scheduler should be included in the set of sequences produced under a non-preemptive scheduler. We guarantee that our synthesis does not introduce deadlocks and that the synchronization inserted is optimal w.r.t. a given objective function. The solution is based on a finitary abstraction, an algorithm for bounded language inclusion modulo an independence relation, and generation of a set of global constraints over synchronization placements. Each model of the global constraints set corresponds to a correctness-ensuring synchronization placement. The placement that is optimal w.r.t. the given objective function is chosen as the synchronization solution. We apply the approach to device-driver programming, where the driver threads call the software interface of the device and the API provided by the operating system. Our experiments demonstrate that our synthesis method is precise and efficient. The implicit specification helped us find one concurrency bug previously missed when model-checking using an explicit, user-provided specification. We implemented objective functions for coarse-grained and fine-grained locking and observed that different synchronization placements are produced for our experiments, favoring a minimal number of synchronization operations or maximum concurrency, respectively.
机译:我们提出一种用于并行的计算机辅助编程方法。该方法允许程序员以友好的非抢先式调度程序进行编程,并且我们的综合过程插入同步以确保最终程序即使在抢先式调度程序下也可以正常工作。正确性规范是隐式的,从非抢先行为推断得出。让我们考虑程序对外部接口的调用序列。规范要求在抢先式调度程序下产生的任何此类序列应包括在非抢先式调度程序下产生的序列集合中。我们保证我们的综合不会引入死锁,并且插入的同步是最佳的。给定的目标函数。该解决方案基于最终抽象,一种以独立关系为模的有界语言包含算法,以及在同步布局上生成一组全局约束。全局约束集的每个模型都与一个确保正确性的同步放置相对应。最佳摆放位置选择给定的目标函数作为同步解决方案。我们将该方法应用于设备驱动程序编程,其中驱动程序线程调用设备的软件接口和操作系统提供的API。我们的实验表明,我们的合成方法准确有效。隐式规范帮助我们找到了一个使用明确的,用户提供的规范进行模型检查时先前遗漏的并发错误。我们为粗粒度和细粒度锁定实现了目标函数,并观察到为我们的实验生成了不同的同步位置,分别支持最少数量的同步操作或最大并发性。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号