Rationale for Ada 2012
5.1 Overview of changes: Tasking and Real-Time
The WG9 guidance document
[1] identifies real-time systems as an
important application area for Ada. In particular it says that attention
should be paid to
improving the capabilities of Ada on multicore
and multiprocessor architectures.
Ada 2012 does indeed address the issues of multiprocessors
as well as other real-time improvements.
The following Ada Issues
cover the relevant changes and are described in detail in this chapter:
Requeue on synchronized interfaces
Memory barriers and Volatile objects
Yield for non-preemptive dispatching
Affinities for programs on multiprocessor platforms
Extended suspension objects
Group budgets for multiprocessors
Monitoring time spent in interrupt handlers
Pragma CPU and Ravenscar profile
Implement task barriers in Ada
Pragma Implemented should be an aspect
Set_CPU called during a protected action
These changes can be grouped as follows.
First there are a number of improvements and additions
to the scheduling mechanisms (
166,
168,
174).
These are in the Real-Time Systems annex (D).
A number of additions recognise the importance of
the widespread introduction of multiprocessors and provide mechanisms
for associating tasks with particular CPUs or groups of CPUs known as
dispatching domains (
167,
171,
278).
There is an associated change to group budgets which were introduced
in Ada 2005 (
169).
These changes also concern Annex D.
Other changes concerning budgets relate to the time
spent in interrupt handlers (
170).
In some systems it may be possible to account for time spent in individual
interrupts whereas in others it might only be possible to account for
time spent in interrupts as a whole. Again this concerns Annex D.
The definition of Volatile is updated to take account
of multiprocessors (
117).
Finally, there are changes to the core language regarding
synchronized interfaces and requeue (30,
215).
© 2011, 2012, 2013 John Barnes Informatics.
Sponsored in part by: