[...]... 17 4 4.4.6 Requirements Analysis with Petri Nets / 17 7 Structured Analysis and Design / 17 8 Object-Oriented Analysis and the Unified Modeling Language / 18 0 4.6 .1 Use Cases / 18 1 4.6.2 Class Diagram / 18 2 4.6.3 Recommendations on Specification Approach for Real-Time Systems / 18 2 Organizing the Requirements Document / 18 3 Organizing and Writing Requirements / 18 4 Requirements Validation and Review / 18 6... Stack Size / 12 6 3.4.4 Multiple-Stack Arrangements / 12 6 3.4.5 Memory Management in the Task-Control-Block Model / 12 7 3.4.6 Swapping / 12 8 3.4.7 Overlays / 12 8 3.4.8 Block or Page Management / 12 9 3.4.9 Replacement Algorithms / 13 1 3.4 .10 Memory Locking / 13 2 3.4 .11 Working Sets / 13 2 3.4 .12 Real-Time Garbage Collection / 13 2 3.4 .13 Contiguous File Systems / 13 3 3.4 .14 Building versus Buying Real-Time. .. Operating Systems / 13 3 3.4 .15 Selecting Real-Time Kernels / 13 4 Case Study: POSIX / 13 9 3.5 .1 Threads / 13 9 3.5.2 POSIX Mutexes and Condition Variables / 14 2 3.5.3 POSIX Semaphores / 14 3 3.5.4 Using Semaphores and Shared Memory / 14 4 3.5.5 POSIX Messages / 14 5 3.5.6 Real-Time POSIX Signals / 14 8 3.5.7 Clocks and Timers / 14 9 3.5.8 Asynchronous Input and Output / 15 3 3.5.9 POSIX Memory Locking / 15 4 Exercises... Communication and Synchronization / 98 3.3 .1 Buffering Data / 99 3.3.2 Time-Relative Buffering / 99 3.3.3 Ring Buffers / 10 1 3.3.4 Mailboxes / 10 2 3.3.5 Queues / 10 4 3.3.6 Critical Regions / 10 4 3.3.7 Semaphores / 10 5 3.3.8 Other Synchronization Mechanisms / 11 1 3.3.9 Deadlock / 11 1 3.3 .10 Priority Inversion / 11 7 Memory Management / 12 2 3.4 .1 Process Stack Management / 12 2 3.4.2 Run-Time Ring Buffer / 12 6 3.4.3... Exercises / 15 6 ix x CONTENTS 4 Software Requirements Engineering 4 .1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4 .10 4 .11 16 1 Requirements-Engineering process / 16 1 Types of Requirements / 16 2 Requirements Specification for Real-Time Systems / 16 4 Formal Methods in Software Specification / 16 5 4.4 .1 Limitations of Formal Methods / 16 7 4.4.2 Z / 16 8 4.4.3 Finite State Machines / 16 8 4.4.4 Statecharts / 17 2 4.4.5... Real-Time Languages / 346 6.5.9 Know the Compiler and Rules of Thumb / 346 6.6 Coding Standards / 347 6.7 Exercises / 349 7 Performance Analysis And Optimization 7 .1 Theoretical Preliminaries / 3 51 7 .1. 1 NP-Completeness / 3 51 7 .1. 2 Challenges in Analyzing Real-Time Systems / 352 7 .1. 3 The Halting Problem / 353 7 .1. 4 Amdahl’s Law / 355 7 .1. 5 Gustafson’s Law / 356 7.2 Performance Analysis / 357 7.2 .1. .. Exercises / 70 3 Real-Time Operating Systems 3 .1 Real-Time Kernels / 73 3 .1. 1 Pseudokernels / 74 3 .1. 2 Interrupt-Driven Systems / 79 3 .1. 3 Preemptive-Priority Systems / 82 3 .1. 4 Hybrid Systems / 83 3 .1. 5 The Task-Control Block Model / 86 3.2 Theoretical Foundations of Real-Time Operating Systems / 88 3.2 .1 Process Scheduling / 90 3.2.2 Round-Robin Scheduling / 91 3.2.3 Cyclic Executives / 92 73 CONTENTS... 7.6 .10 Flow-of-Control Optimization / 385 7.6 .11 Constant Propagation / 386 7.6 .12 Dead-Store Elimination / 386 7.6 .13 Dead-Variable Elimination / 387 7.6 .14 Short-Circuiting Boolean Code / 387 7.6 .15 Loop Unrolling / 387 7.6 .16 Loop Jamming / 388 7.6 .17 More Optimization Techniques / 389 7.6 .18 Combination Effects / 390 7.6 .19 Speculative Execution / 3 91 7.7 Analysis of Memory Requirements / 3 91 7.8... constraints Conversely, systems where failure to meet response-time constraints leads to complete and catastrophic system failure are called hard real-time systems Definition: A hard real-time system is one in which failure to meet a single deadline may lead to complete and catastrophic system failure 6 1 BASIC REAL-TIME CONCEPTS Table 1. 1 A sampling of hard, soft, and firm real-time systems Real-Time Classification... 406 8.2 .1 The Role of Testing / 407 8.2.2 Testing Techniques / 407 8.2.3 System-Level Testing / 413 8.2.4 Design of Testing Plans / 415 8.3 Fault-Tolerance / 415 8.3 .1 Spatial Fault-Tolerance / 416 8.3.2 Software Black Boxes / 417 397 xiv CONTENTS 8.4 8.5 8.6 8.7 8.3.3 N -Version Programming / 418 8.3.4 Built-In-Test Software / 418 8.3.5 CPU Testing / 418 8.3.6 Memory Testing / 419 8.3.7 ROM / 419 8.3.8 . xvii 1 Basic Real-Time Concepts 1 1 .1 Terminology / 1 1 .1. 1 Systems Concepts / 2 1. 1.2 Real-Time Definitions / 4 1. 1.3 Events and Determinism / 7 1. 1.4 CPU Utilization / 10 1. 2 Real-Time System Design. Issues / 12 1. 3 Example Real-Time Systems / 13 1. 4 Common Misconceptions / 15 1. 5 Brief History / 16 1. 5 .1 Theoretical Advances / 17 1. 5.2 Early Systems / 17 1. 5.3 Hardware Developments / 18 1. 5.4. Management / 12 9 3.4.9 Replacement Algorithms / 13 1 3.4 .10 Memory Locking / 13 2 3.4 .11 Working Sets / 13 2 3.4 .12 Real-Time Garbage Collection / 13 2 3.4 .13 Contiguous File Systems / 13 3 3.4 .14 Building