Preface |
|
xi | |
|
|
1 | (14) |
|
|
2 | (1) |
|
|
3 | (3) |
|
Ada's time and clock facilities |
|
|
6 | (7) |
|
|
13 | (1) |
|
|
13 | (2) |
|
The nature and uses of concurrent programming |
|
|
15 | (16) |
|
Uses of concurrent programming |
|
|
17 | (1) |
|
|
18 | (2) |
|
|
20 | (1) |
|
|
21 | (9) |
|
|
30 | (1) |
|
|
30 | (1) |
|
Inter-process communication |
|
|
31 | (24) |
|
|
32 | (1) |
|
|
33 | (1) |
|
Deadlocks and indefinite postponements |
|
|
34 | (2) |
|
System performance, correctness and reliability |
|
|
36 | (2) |
|
Dining philosophers problem |
|
|
38 | (1) |
|
Shared variables and protected variables |
|
|
39 | (2) |
|
|
41 | (3) |
|
|
44 | (4) |
|
Message-based communication |
|
|
48 | (5) |
|
|
53 | (1) |
|
|
54 | (1) |
|
|
55 | (24) |
|
|
57 | (8) |
|
Task activation, execution, finalisation and termination |
|
|
65 | (5) |
|
|
70 | (5) |
|
|
75 | (2) |
|
Task creation, communication and synchronisation within task finalisation |
|
|
77 | (1) |
|
|
77 | (2) |
|
|
79 | (18) |
|
|
79 | (2) |
|
|
81 | (2) |
|
|
83 | (5) |
|
|
88 | (1) |
|
|
88 | (2) |
|
Three-way synchronisation |
|
|
90 | (2) |
|
|
92 | (1) |
|
Exceptions and the rendezvous |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
94 | (3) |
|
The select statement and the rendezvous |
|
|
97 | (32) |
|
|
97 | (4) |
|
|
101 | (2) |
|
|
103 | (4) |
|
|
107 | (2) |
|
The correct use of guards |
|
|
109 | (2) |
|
The terminate alternative |
|
|
111 | (5) |
|
The exception Program_Error |
|
|
116 | (2) |
|
Summary of the selective accept statement |
|
|
118 | (1) |
|
Conditional and timed entry calls |
|
|
118 | (3) |
|
Mutual exclusion and deadlocks |
|
|
121 | (3) |
|
|
124 | (3) |
|
|
127 | (1) |
|
|
127 | (2) |
|
Protected objects and data-oriented communication |
|
|
129 | (34) |
|
|
129 | (2) |
|
|
131 | (2) |
|
Condition synchronisation |
|
|
133 | (2) |
|
|
135 | (4) |
|
Private entries and entry families |
|
|
139 | (3) |
|
Restrictions on protected objects |
|
|
142 | (2) |
|
Access variables and protected types |
|
|
144 | (2) |
|
Elaboration, finalisation and exceptions |
|
|
146 | (1) |
|
|
147 | (1) |
|
The readers and writers problem |
|
|
148 | (3) |
|
The specification of synchronisation agents |
|
|
151 | (1) |
|
|
152 | (4) |
|
|
156 | (4) |
|
|
160 | (1) |
|
|
161 | (2) |
|
Avoidance synchronisation and the requeue facility |
|
|
163 | (32) |
|
|
163 | (12) |
|
|
175 | (4) |
|
Requeuing to other entities |
|
|
179 | (4) |
|
Real-time solutions to the resource control problem |
|
|
183 | (3) |
|
Entry families and server tasks |
|
|
186 | (4) |
|
|
190 | (3) |
|
|
193 | (1) |
|
|
194 | (1) |
|
Exceptions, abort and asynchronous transfer of control |
|
|
195 | (28) |
|
|
195 | (3) |
|
|
198 | (2) |
|
Asynchronous transfer of control |
|
|
200 | (12) |
|
Understanding the asynchronous select statement |
|
|
212 | (5) |
|
A robust readers and writers algorithm |
|
|
217 | (4) |
|
|
221 | (1) |
|
|
221 | (2) |
|
Object-oriented programming and tasking |
|
|
223 | (24) |
|
|
224 | (7) |
|
|
231 | (8) |
|
Protected types and interfaces |
|
|
239 | (5) |
|
|
244 | (2) |
|
|
246 | (1) |
|
|
246 | (1) |
|
|
247 | (46) |
|
Communication and synchronisation abstractions |
|
|
248 | (1) |
|
|
248 | (9) |
|
|
257 | (6) |
|
|
263 | (1) |
|
|
264 | (2) |
|
|
266 | (2) |
|
|
268 | (1) |
|
|
269 | (7) |
|
|
276 | (1) |
|
Concurrent execution abstractions |
|
|
277 | (1) |
|
|
278 | (2) |
|
|
280 | (4) |
|
|
284 | (4) |
|
Image processing example revisited |
|
|
288 | (3) |
|
|
291 | (2) |
|
Tasking and systems programming |
|
|
293 | (24) |
|
Device driving and interrupt handling |
|
|
296 | (4) |
|
|
300 | (11) |
|
|
311 | (2) |
|
|
313 | (3) |
|
|
316 | (1) |
|
|
316 | (1) |
|
Scheduling real-time systems - fixed priority dispatching |
|
|
317 | (14) |
|
|
317 | (2) |
|
Fixed priority dispatching |
|
|
319 | (3) |
|
|
322 | (5) |
|
|
327 | (1) |
|
Active priorities and dispatching policies |
|
|
327 | (2) |
|
|
329 | (1) |
|
|
329 | (2) |
|
Scheduling real-time systems - other dispatching facilities |
|
|
331 | (30) |
|
Non-preemptive dispatching |
|
|
331 | (1) |
|
|
332 | (3) |
|
Earliest deadline first dispatching |
|
|
335 | (12) |
|
|
347 | (1) |
|
|
348 | (6) |
|
Synchronous and asynchronous task control |
|
|
354 | (5) |
|
|
359 | (1) |
|
|
359 | (2) |
|
Timing events and execution-time control |
|
|
361 | (30) |
|
Events and event handling |
|
|
361 | (1) |
|
|
362 | (4) |
|
|
366 | (3) |
|
|
369 | (2) |
|
|
371 | (3) |
|
|
374 | (13) |
|
|
387 | (2) |
|
|
389 | (1) |
|
|
389 | (2) |
|
|
391 | (42) |
|
|
393 | (2) |
|
Real-time task release mechanisms |
|
|
395 | (2) |
|
Periodic release mechanisms |
|
|
397 | (8) |
|
Sporadic release mechanisms |
|
|
405 | (2) |
|
Aperiodic release mechanisms and execution-time servers |
|
|
407 | (8) |
|
|
415 | (4) |
|
The cruise control system example |
|
|
419 | (13) |
|
|
432 | (1) |
|
Restrictions, metrics and the Ravenscar profile |
|
|
433 | (18) |
|
Restricted tasking and other language features |
|
|
433 | (3) |
|
|
436 | (3) |
|
Partition elaboration control |
|
|
439 | (1) |
|
Examples of the use of the Ravenscar profile |
|
|
440 | (8) |
|
Metrics and optimisations |
|
|
448 | (1) |
|
|
449 | (1) |
|
|
450 | (1) |
|
|
451 | (4) |
|
|
452 | (1) |
|
|
452 | (1) |
|
|
453 | (1) |
|
Outstanding issues and the future |
|
|
453 | (2) |
References |
|
455 | (2) |
Index |
|
457 | |