TY - BOOK AU - Burns,Alan TI - Concurrent and real-time programming in Ada 2005 SN - 9780521866972 (hbk.) U1 - 005.133 PY - 2007/// CY - Cambridge, New York PB - Cambridge University Press KW - Ada (Computer program language) KW - Parallel Programming (Computer science) KW - Real-time Programming N1 - Introduction 1.1 Concurrency 1.2 Real-time systems 1.3 Ada's time and clock facilities 1.4 Summary 1.5 Further reading The nature and uses of concurrent programming 2.1 Uses of concurrent programming 2.2 Program entities 2.3 Process representation 2.4 A simple embedded system 2.5 Summary 2.6 Further reading Inter-process communication 3.1 Data communication 3.2 Synchronisation 3.3 Deadlocks and indefinite postponements 3.4 System performance, correctness and reliability 3.5 Dining philosophers problem 3.6 Shared variables and protected variables 3.7 Semaphores 3.8 Monitors 3.9 Message-based communication 3.10 Summary 3.11 Further reading Task types and objects 4.1 Task creation 4.2 Task activation, execution, finalisation and termination 4.3 Task hierarchies 4.4 Task identification 4.5 Task creation, communication and synchronisation within task finalisation 4.6 Summary The rendezvous 5.1 The basic model 5.2 The entry statement 5.3 The accept statement 5.4 The Count attribute 5.5 Entry families 5.6 Three-way synchronisation 5.7 Private entries 5.8 Exceptions and the rendezvous 5.9 Task states 5.10 Summary The select statement and the rendezvous 6.1 Selective accept 6.2 Guarded alternatives 6.3 Delay alternative 6.4 The else part 6.5 The correct use of guards 6.6 The terminate alternative 6.7 The exception Program-Error 6.8 Summary of the selective accept statement 6.9 Conditional and timed entry calls 6.10 Mutual exclusion and deadlocks 6.11 The dining philosophers 6.12 Task states 6.13 Summary Protected objects and data-oriented communication 7.1 Protected objects 7.2 Mutual exclusion 7.3 Condition synchronisation 7.4 Entry calls and barriers 7.5 Private entries and entry families 7.6 Restrictions on protected objects 7.7 Access variables and protected types 7.8 Elaboration, finalisation and exceptions 7.9 Shared data 7.10 The readers and writers problem 7.11 The specification of synchronisation agents 7.12 Shared variables 7.13 Volatile and atomic data 7.14 Task states 7.15 Summary 8 Avoidance synchronisation and the requeue facility 8.1 The need for requeue 8.2 Semantics of requeue 8.3 Requeuing to other entities 8.4 Real-time solutions to the resource control problem 8.5 Entry families and server tasks 8.6 Extended example 8.7 Task states 8.8 Summary 9 Exceptions, abort and asynchronous transfer of control 9.1 Exceptions 9.2 The abort statement 9.3 Asynchronous transfer of control 9.4 Understanding the asynchronous select statement 9.5 A robust readers and writers algorithm 9.6 Task states 9.7 Summary 10 Object-oriented programming and tasking 10.1 The Ada 2005 OOP model 10.2 Tasks and interfaces 10.3 Protected types and interfaces 10.4 Synchronized interfaces 10.5 Summary 10.6 Further reading 11 Concurrency utilities 11.1 Communication and synchronisation abstractions 11.2 Semaphores 11.3 Locks 11.4 Signals 11.5 Event variables 11.6 Buffers 11.7 Blackboards 11.8 Broadcasts 11.9 Barriers 11.10 Concurrent execution abstractions 11.11 Callables and futures 11.12 Executors 11.13 Completion services 11.14 Image processing example revisited 11.15 Summary 12 Tasking and systems programming 12.1 Device driving and interrupt handling 12.2 Model of interrupts 12.3 Task identifiers 12.4 Task attributes 12.5 Summary 12.6 Further reading 13 Scheduling real-time systems - fixed priority dispatching 13.1 Scheduling 13.2 Fixed priority dispatching 13.3 Priority ceiling locking 13.4 Entry queue policies 13.5 Active priorities and dispatching policies 13.6 Summary 13.7 Further reading 14 Scheduling real-time systems - other dispatching facilities 14.1 Non-preemptive dispatching 14.2 Round-robin dispatching 14.3 Earliest deadline first dispatching 14.4 Mixed scheduling 14.5 Dynamic priorities 14.6 Synchronous and asynchronous task control 14.7 Summary 14.8 Further reading 15 Timing events and execution-time control 15.1 Events and event handling 15.2 Timing events 15.3 Dual priority scheduling 15.4 Execution-time clocks 15.5 Execution-time timers 15.6 Group budgets 15.7 Task termination events 15.8 Summary 15.9 Further reading 16 Real-time utilities 16.1 Real-time task state 16.2 Real-time task release mechanisms 16.3 Periodic release mechanisms 16.4 Sporadic release mechanisms 16.5 Aperiodic release mechanisms and execution-time servers 16.6 Real-time tasks 16.7 The cruise control system example 16.8 Summary 17 Restrictions, metrics and the Ravenscar profile 17.1 Restricted tasking and other language features 17.2 The Ravenscar profile 17.3 Partition elaboration control 17.4 Examples of the use of the Ravenscar profile 17.5 Metrics and optimisations 17.6 Summary 17.7 Further reading 18 Conclusion 18.1 Support for concurrency 18.2 Support for real-time 18.3 New to Ada 2005 18.4 Outstanding issues and the future ER -