Concurrent and Real-Time Programming in AdaAda is the only ISO-standard, object-oriented, concurrent, real-time programming language. It is intended for use in large, long-lived applications where reliability and efficiency are essential, particularly real-time and embedded systems. In this book, Alan Burns and Andy Wellings give a thorough, self-contained account of how the Ada tasking model can be used to construct a wide range of concurrent and real-time systems. This is the only book that focuses on an in-depth discussion of the Ada tasking model. Following on from the authors' earlier title Concurrency in Ada, this book brings the discussion up to date to include the new Ada 2005 language and the recent advances in real-time programming techniques. It will be of value to software professionals and advanced students of programming alike: indeed every Ada programmer will find it essential reading and a primary reference work that will sit alongside the language reference manual. |
Contents
15 | |
31 | |
3 | 77 |
6 | 97 |
9 | 119 |
7 | 156 |
Avoidance synchronisation and the requeue facility | 163 |
Exceptions abort and asynchronous transfer of control | 195 |
Tasking and systems programming | 293 |
Scheduling realtime systems fixed priority dispatching | 317 |
129 | 325 |
Scheduling realtime systems other dispatching facilities | 331 |
2 | 352 |
Timing events and executiontime control | 361 |
Realtime utilities | 391 |
Restrictions metrics and the Ravenscar profile | 433 |
Objectoriented programming and tasking | 223 |
Concurrency utilities | 247 |
BURNS 2007427 2022 PAGE vii | 277 |
Conclusion | 451 |
Index | 457 |
Common terms and phrases
abort abstract accept statement active priority Ada.Real_Time Ada.Task_Identification algorithm Allocate allows asynchronous select statement barrier base priority begin loop block buffer BURNSWELL BURNSWELL:“BURNS busy-wait calling task chapter client task clock concurrent programming concurrent programming language deadline declaration defined delay dispatching policy embedded systems end loop end record end select entry call entry queue entry Wait event example False First_Queue fixed priority Free function group budget Image_Index implementation implementation-defined Important note Integer inter-process communication interrupt handler language lock mutual exclusion My_Future null Number_In_Buffer operation overriding entry overriding procedure package body parameter Persistent_Signal pragma priority inversion protected body protected object protected type queued raised range Ravenscar profile ready queue Release Release_Mechanisms rendezvous Request Request_Range requeue resource return Boolean scheduling Section semaphore Seq1 server task Signal specification subprogram synchronisation synchronized interface task body task type Task_Id tasking model Time_Span Timer Timing_Event True
Popular passages
Page 7 - Duration range 0.0 .. 86_400.0; function Clock return Time; function Year (Date : Time) return Year_Number ; function Month (Date : Time) return Month_Number ; function Day (Date : Time) return Day_Number; function Seconds (Date : Time) return Day_Duration; procedure Split (Date : in Time; Year : out...
Page 65 - ... task type. The initial part of this execution is called the activation of the task object, and also that of the designated task; it consists of the elaboration of the declarative part, if any, of the task body. The execution of different tasks, in particular their activation, proceeds in parallel. If an object declaration that declares a task object occurs immediately within a declarative part...
Page 7 - ... CLOCK return TIME; function YEAR (DATE : TIME) return YEAR_NUMBER; function MONTH ( DATE : TIME) return MONTH_NUMBER; function DAY (DATE : TIME) return DAY_NUMBER; function SECONDS (DATE : TIME) return DAY_DURATION; procedure SPLIT ( DATE : in TIME; YEAR : out YEAR_NUMBER; MONTH : out...
Page 4 - Soft real-time systems are those where response times are important but the system will still function correctly if deadlines are occasionally missed.
Page 15 - This can be achieved by specifying a standard interface to a multiprocessing operating system:): or by allowing multiple process systems to be expressed in the language itself.
Page 118 - In addition a selective wait can contain either a terminate alternative (only one), or one or more delay alternatives, or an else part; these three possibilities are mutually exclusive. A select alternative is said to be open...
Page 4 - For this reason real-time systems are usually constructed using processors with considerable spare capacity, thereby ensuring that 'worst-case behaviour' does not produce any unwelcome delays during critical periods of the system's operation. Given adequate processing power, language and run-time support is required to enable the programmer to: • Specify times at which actions are to be performed. • Specify times at which actions are to be completed. • Respond to situations where all the timing...
Page 164 - Consider the problem of constructing a resource controller that allocates some resource to a group of client agents. There are a number of instances of the resource but the number is bounded; contention is possible and must be catered for in the design of the program. If the client tasks only require a single instance of the resource, then the problem is straightforward. For example, in the following, the resource (although not directly represented) can be encoded as a protected object: protected...
Page xiii - Real-time Systems Research at York Alan Burns and Andy Wellings are members of the Real-Time Systems Research Group in the Department of Computer Science at the University of York (UK). This group undertakes research into all aspects of the design, implementation and analysis of real-time systems. Specifically, the group is addressing: formal and structured methods for development, scheduling theories, reuse, language design, kernel design, communication protocols, distributed and...
Page 199 - This means that the execution of every construct in the task body is aborted, unless it is involved in the execution of an abort-deferred operation. The execution of an abort-deferred operation is allowed to complete before it is aborted.