Burns, Alan,

Concurrent and real-time programming in Ada 2005 / Alan Burns and Andy Wellings. - Cambridge ; New York : Cambridge University Press, 2007. - xiv, 461 p. : 26 cm.

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

9780521866972 (hbk.) 0521866979 (hbk.)


Ada (Computer program language)
Parallel Programming (Computer science)
Real-time Programming.

005.133 / BUR/C