监视Ada任务中的死锁

S. German, D. Helmbold, D. Luckham
{"title":"监视Ada任务中的死锁","authors":"S. German, D. Helmbold, D. Luckham","doi":"10.1145/3304133.3304136","DOIUrl":null,"url":null,"abstract":"Most high level languages with multiprocessing do not have built in mechanisms to detect deadlocks during program execution. We present transformation rules for taking an original Ada program P and deriving a new program P', such that P' has a potential deadlock iff P does, and P' signals whenever a deadlock is about to occur. In principle, the transformations can be applied mechanically, giving a practical tool for debugging deadlocks. Since this method modifies the source program, it can be used with any implementation of the language, without special knowledge of the implementation of tasking. The transformations that we have developed thus far are sufficient to handle most of the complexities of Ada tasking, including arbitrary task types, conditional entry calls, selective waits, timed entry calls, and intertask exceptions. In the course of this work, we have developed some generally useful source program transformations, such as one to uniformly introduce task identifiers. We have also developed some interesting concurrent algorithms for the deadlock monitoring. An actual monitor program for detecting deadlocks has been implemented in Ada. Our basic approach and monitoring algorithms are applicable to other languages with multiple processes.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"10 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"21","resultStr":"{\"title\":\"Monitoring for deadlocks in Ada tasking\",\"authors\":\"S. German, D. Helmbold, D. Luckham\",\"doi\":\"10.1145/3304133.3304136\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Most high level languages with multiprocessing do not have built in mechanisms to detect deadlocks during program execution. We present transformation rules for taking an original Ada program P and deriving a new program P', such that P' has a potential deadlock iff P does, and P' signals whenever a deadlock is about to occur. In principle, the transformations can be applied mechanically, giving a practical tool for debugging deadlocks. Since this method modifies the source program, it can be used with any implementation of the language, without special knowledge of the implementation of tasking. The transformations that we have developed thus far are sufficient to handle most of the complexities of Ada tasking, including arbitrary task types, conditional entry calls, selective waits, timed entry calls, and intertask exceptions. In the course of this work, we have developed some generally useful source program transformations, such as one to uniformly introduce task identifiers. We have also developed some interesting concurrent algorithms for the deadlock monitoring. An actual monitor program for detecting deadlocks has been implemented in Ada. Our basic approach and monitoring algorithms are applicable to other languages with multiple processes.\",\"PeriodicalId\":304626,\"journal\":{\"name\":\"Proceedings of the AdaTEC Conference on Ada\",\"volume\":\"10 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1982-10-06\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"21\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the AdaTEC Conference on Ada\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3304133.3304136\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the AdaTEC Conference on Ada","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3304133.3304136","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 21

摘要

大多数具有多处理功能的高级语言都没有在程序执行期间检测死锁的内置机制。我们提出了用原始Ada程序P推导新程序P'的变换规则,使得P'在P发生死锁时具有潜在的死锁,而P'在死锁即将发生时发出信号。原则上,可以机械地应用转换,从而提供调试死锁的实用工具。由于这种方法修改了源程序,因此它可以与任何语言的实现一起使用,而不需要特殊的任务实现知识。到目前为止,我们开发的转换足以处理Ada任务的大多数复杂性,包括任意任务类型、条件输入调用、选择性等待、定时输入调用和任务间异常。在这项工作的过程中,我们开发了一些通常有用的源程序转换,例如统一引入任务标识符的转换。我们还为死锁监控开发了一些有趣的并发算法。在Ada中实现了一个用于检测死锁的实际监控程序。我们的基本方法和监测算法适用于其他语言的多进程。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Monitoring for deadlocks in Ada tasking
Most high level languages with multiprocessing do not have built in mechanisms to detect deadlocks during program execution. We present transformation rules for taking an original Ada program P and deriving a new program P', such that P' has a potential deadlock iff P does, and P' signals whenever a deadlock is about to occur. In principle, the transformations can be applied mechanically, giving a practical tool for debugging deadlocks. Since this method modifies the source program, it can be used with any implementation of the language, without special knowledge of the implementation of tasking. The transformations that we have developed thus far are sufficient to handle most of the complexities of Ada tasking, including arbitrary task types, conditional entry calls, selective waits, timed entry calls, and intertask exceptions. In the course of this work, we have developed some generally useful source program transformations, such as one to uniformly introduce task identifiers. We have also developed some interesting concurrent algorithms for the deadlock monitoring. An actual monitor program for detecting deadlocks has been implemented in Ada. Our basic approach and monitoring algorithms are applicable to other languages with multiple processes.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Design and implementation in Ada of a runtime task supervisor Lolita: a low level intermediate language for Ada Session details: Tools Comparative efficiency of different implementations of the Ada rendezvous Abstract syntax based programming environments
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1