Reducing the cost of real-time software through a cyclic task abstraction for Ada
Ada is unique as a software engineering language, facilitating the development of reliable and maintainable software through clear, unambiguous, modular code enforced to a specification. However, despite comprehensive real-time systems support, Ada lacks the abstraction at the heart of these systems: cyclic tasks. Without it, users resort to solutions decomposing their designs: introducing unnecessary complexity to a real-time systems primitive. Furthermore, the only Ada executive for microcontrollers, GNAT for Bare Boards, impedes the timing analysis of tasks and schedulability analysis of systems. Consequently, Ada and its environments do not reach their potential of producing low-cost, reliable and maintainable real-time systems. This thesis unlocks this latent potential through the development of the Cyclic Task Specification and Acton. The Specification extends Ada to incorporate cyclic tasks within Ada’s existing task abstraction using a simple but powerful model. Acton, on the other hand, is a new Ada executive built from the ground up to support real-time systems, forgoing an existing Ada tasking run-time in favour of building the tasking semantics natively within its kernel. The result is a flexible and portable Ada executive which correctly apportions execution time and enforces cyclic task attributes. Furthermore, tasks only perform user assigned activities and lower priority tasks cannot interrupt a running task. Their contributions come at the cost of a more complex language and larger execution time overheads for kernel operations. For Acton, the up to order of magnitude larger overheads is the cost of simplifying task timing and system schedulability analysis. For the Cyclic Task Specification, the added complexity simplifies the expression of cyclic task patterns for a wide range of systems. Its simple model centred on task attributes permits model expansion outside the formal language, addressing aversions to incorporating high-level abstractions. Together, the Cyclic Task Specification and Acton advance real-time systems by providing the clarity, structure and simplicity needed to express cyclic tasks and have their real-time constraints enforced at run-time. Furthermore, real-time analysis tools can now use the same cyclic task semantic information as the compiler to provide automatic timing verification and run-time enforceable cyclic constraints. Consequently, the contributions of this thesis allow real-time systems to use less code and have less scope for faults: reducing the life-cycle cost of real-time systems through quicker development and maintenance.
Ada, Real-time, Cyclic task, Ravenscar, Real-time executive, Run-time, Microcontroller, Programming abstraction, Bare board, Bare metal, Real-time abstraction
Networked Digital Library of Theses and Dissertations