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
The nature and uses of concurrent programming | 15 |
Interprocess communication | 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 |
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 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 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 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...