skip to main content
10.1145/3304133.3304135acmotherconferencesArticle/Chapter ViewAbstractPublication PagesadatecConference Proceedingsconference-collections
research-article
Free Access

Design and implementation in Ada of a runtime task supervisor

Published:06 October 1982Publication History

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.

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Other conferences
    AdaTEC '82: Proceedings of the AdaTEC Conference on Ada
    October 1982
    279 pages
    ISBN:0897910877
    DOI:10.1145/3304133

    Copyright © 1982 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 6 October 1982

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader