在Ada中设计和实现一个运行时任务管理器

Ed Falis
{"title":"在Ada中设计和实现一个运行时任务管理器","authors":"Ed Falis","doi":"10.1145/3304133.3304135","DOIUrl":null,"url":null,"abstract":"A runtime supervisor is an Ada package in the standard environment which provides a scheduling interface between a compiled tasking program and the virtual machine upon which it is to execute. Its visible operations implement the more complex aspects of the tasking dynamic semantics. These operations are very high level in the sense that they conform closely to Ada tasking constructs. Internal to the supervisor is a small kernel of machine dependent code providing the actual interface to the target virtual machine. Given this kind of runtime environment, the compiled code of a tasking program is equivalent to the code generated by a compilation of sequential Ada constructs with embedded calls to the supervisor visible operations. All parallelism is abstracted out of the program prior to the code generation phase of the compilation, and the implementation of the parallel constructs of the Ada language is shifted into the runtime supervisor package. While the form of the sequential Ada code implementing tasking constructs will depend on design decisions made by the implementors of specific compilers as in [3] and [5], a carefully designed supervisor will be compatible with the code generated by any Ada compiler calling that supervisor's visible operations in the specified manner. The benefits of this approach, which was originally adopted for the design of the experimental Adam compiler [4], are apparent. Target machine dependent aspects of scheduling, and details of scheduling strategies are separated from compilation. The code generation phase of the Ada compiler is greatly simplified by factoring out all tasking related routines. Compiler builders need not reimplement all of tasking for each new compiler or intended target machine. In addition, experimental and special purpose supervisors will gain wider distribution and evaluation due the portability inherent in this approach. In this paper we analyze the feasibility of implementing a runtime supervisor in Ada, pointing out those areas in which the Ada language is weak for this purpose. We then derive a standard supervisor interface on the basis of a (hopefully) minimal set of facilities to be provided by any supervisor. In this derivation, we consider in detail both what must be provided if a supervisor is to implement the full tasking semantics, and also in what ways we can minimize constraints on compiler builders who plan to use the interface.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"19 9","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"7","resultStr":"{\"title\":\"Design and implementation in Ada of a runtime task supervisor\",\"authors\":\"Ed Falis\",\"doi\":\"10.1145/3304133.3304135\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"A runtime supervisor is an Ada package in the standard environment which provides a scheduling interface between a compiled tasking program and the virtual machine upon which it is to execute. Its visible operations implement the more complex aspects of the tasking dynamic semantics. These operations are very high level in the sense that they conform closely to Ada tasking constructs. Internal to the supervisor is a small kernel of machine dependent code providing the actual interface to the target virtual machine. Given this kind of runtime environment, the compiled code of a tasking program is equivalent to the code generated by a compilation of sequential Ada constructs with embedded calls to the supervisor visible operations. All parallelism is abstracted out of the program prior to the code generation phase of the compilation, and the implementation of the parallel constructs of the Ada language is shifted into the runtime supervisor package. While the form of the sequential Ada code implementing tasking constructs will depend on design decisions made by the implementors of specific compilers as in [3] and [5], a carefully designed supervisor will be compatible with the code generated by any Ada compiler calling that supervisor's visible operations in the specified manner. The benefits of this approach, which was originally adopted for the design of the experimental Adam compiler [4], are apparent. Target machine dependent aspects of scheduling, and details of scheduling strategies are separated from compilation. The code generation phase of the Ada compiler is greatly simplified by factoring out all tasking related routines. Compiler builders need not reimplement all of tasking for each new compiler or intended target machine. In addition, experimental and special purpose supervisors will gain wider distribution and evaluation due the portability inherent in this approach. In this paper we analyze the feasibility of implementing a runtime supervisor in Ada, pointing out those areas in which the Ada language is weak for this purpose. We then derive a standard supervisor interface on the basis of a (hopefully) minimal set of facilities to be provided by any supervisor. In this derivation, we consider in detail both what must be provided if a supervisor is to implement the full tasking semantics, and also in what ways we can minimize constraints on compiler builders who plan to use the interface.\",\"PeriodicalId\":304626,\"journal\":{\"name\":\"Proceedings of the AdaTEC Conference on Ada\",\"volume\":\"19 9\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1982-10-06\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"7\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the AdaTEC Conference on Ada\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3304133.3304135\",\"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.3304135","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 7

摘要

运行时管理器是标准环境中的Ada包,它在编译后的任务程序和执行该程序的虚拟机之间提供调度接口。它的可见操作实现了任务动态语义更复杂的方面。这些操作在某种意义上是非常高级的,因为它们与Ada任务结构密切相关。管理器内部是一个小的机器相关代码内核,它提供了到目标虚拟机的实际接口。在这种运行时环境下,一个任务程序的编译代码相当于一个序列Ada构造的编译所生成的代码,其中嵌入了对监督可见操作的调用。在编译的代码生成阶段之前,所有的并行性都从程序中抽象出来,并且Ada语言的并行构造的实现被转移到运行时监督程序包中。虽然实现任务构造的顺序Ada代码的形式将取决于特定编译器的实现者所做的设计决策,如[3]和[5]所示,精心设计的监督程序将与任何Ada编译器以指定方式调用该监督程序的可见操作生成的代码兼容。这种方法的好处是显而易见的,它最初被用于实验性Adam编译器的设计[4]。目标机相关方面的调度,以及调度策略的细节与编译分离。通过分解所有与任务相关的例程,大大简化了Ada编译器的代码生成阶段。编译器构建器不需要为每个新的编译器或预期的目标机器重新实现所有的任务。此外,由于这种方法固有的可移植性,实验和特殊目的监督员将获得更广泛的分配和评估。在本文中,我们分析了在Ada中实现运行时监督器的可行性,指出了Ada语言在这方面的薄弱之处。然后,我们根据(希望)任何主管提供的最小设施集派生出标准的主管界面。在这个派生中,我们详细地考虑了如果监督器要实现完整的任务语义,必须提供什么,以及我们可以用什么方法最小化对计划使用该接口的编译器构建器的约束。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Design and implementation in Ada of a runtime task supervisor
A runtime supervisor is an Ada package in the standard environment which provides a scheduling interface between a compiled tasking program and the virtual machine upon which it is to execute. Its visible operations implement the more complex aspects of the tasking dynamic semantics. These operations are very high level in the sense that they conform closely to Ada tasking constructs. Internal to the supervisor is a small kernel of machine dependent code providing the actual interface to the target virtual machine. Given this kind of runtime environment, the compiled code of a tasking program is equivalent to the code generated by a compilation of sequential Ada constructs with embedded calls to the supervisor visible operations. All parallelism is abstracted out of the program prior to the code generation phase of the compilation, and the implementation of the parallel constructs of the Ada language is shifted into the runtime supervisor package. While the form of the sequential Ada code implementing tasking constructs will depend on design decisions made by the implementors of specific compilers as in [3] and [5], a carefully designed supervisor will be compatible with the code generated by any Ada compiler calling that supervisor's visible operations in the specified manner. The benefits of this approach, which was originally adopted for the design of the experimental Adam compiler [4], are apparent. Target machine dependent aspects of scheduling, and details of scheduling strategies are separated from compilation. The code generation phase of the Ada compiler is greatly simplified by factoring out all tasking related routines. Compiler builders need not reimplement all of tasking for each new compiler or intended target machine. In addition, experimental and special purpose supervisors will gain wider distribution and evaluation due the portability inherent in this approach. In this paper we analyze the feasibility of implementing a runtime supervisor in Ada, pointing out those areas in which the Ada language is weak for this purpose. We then derive a standard supervisor interface on the basis of a (hopefully) minimal set of facilities to be provided by any supervisor. In this derivation, we consider in detail both what must be provided if a supervisor is to implement the full tasking semantics, and also in what ways we can minimize constraints on compiler builders who plan to use the interface.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
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