Details

Real-Time Systems Design and Analysis


Real-Time Systems Design and Analysis

Tools for the Practitioner
4. Aufl.

von: Phillip A. Laplante, Seppo J. Ovaska

136,99 €

Verlag: Wiley
Format: EPUB
Veröffentl.: 24.10.2011
ISBN/EAN: 9781118136591
Sprache: englisch
Anzahl Seiten: 584

DRM-geschütztes eBook, Sie benötigen z.B. Adobe Digital Editions und eine Adobe ID zum Lesen.

Beschreibungen

<b>The leading text in the field explains step by step how to write software that responds in real time</b> <p>From power plants to medicine to avionics, the world increasingly depends on computer systems that can compute and respond to various excitations in real time. The <i>Fourth Edition of Real-Time Systems Design and Analysis</i> gives software designers the knowledge and the tools needed to create real-time software using a holistic, systems-based approach. The text covers computer architecture and organization, operating systems, software engineering, programming languages, and compiler theory, all from the perspective of real-time systems design.</p> <p>The <i>Fourth Edition</i> of this renowned text brings it thoroughly up to date with the latest technological advances and applications. This fully updated edition includes coverage of the following concepts:</p> <ul> <li> <p>Multidisciplinary design challenges</p> </li> <li> <p>Time-triggered architectures</p> </li> <li> <p>Architectural advancements</p> </li> <li> <p>Automatic code generation</p> </li> <li> <p>Peripheral interfacing</p> </li> <li> <p>Life-cycle processes</p> </li> </ul> <p>The final chapter of the text offers an expert perspective on the future of real-time systems and their applications.</p> <p>The text is self-contained, enabling instructors and readers to focus on the material that is most important to their needs and interests. Suggestions for additional readings guide readers to more in-depth discussions on each individual topic. In addition, each chapter features exercises ranging from simple to challenging to help readers progressively build and fine-tune their ability to design their own real-time software programs.</p> <p>Now fully up to date with the latest technological advances and applications in the field, <i>Real-Time Systems Design and Analysis</i> remains the top choice for students and software engineers who want to design better and faster real-time systems at minimum cost.</p>
<b>Preface xv</b> <p><b>Acknowledgments xxi</b></p> <p><b>1 Fundamentals of Real-Time Systems 1</b></p> <p>1.1 Concepts and Misconceptions, 2</p> <p>1.1.1 Definitions for Real-Time Systems, 2</p> <p>1.1.2 Usual Misconceptions, 14</p> <p>1.2 Multidisciplinary Design Challenges, 15</p> <p>1.2.1 Influencing Disciplines, 16</p> <p>1.3 Birth and Evolution of Real-Time Systems, 16</p> <p>1.3.1 Diversifying Applications, 17</p> <p>1.3.2 Advancements behind Modern Real-Time Systems, 19</p> <p>1.4 Summary, 21</p> <p>1.5 Exercises, 24</p> <p>References, 25</p> <p><b>2 Hardware for Real-Time Systems 27</b></p> <p>2.1 Basic Processor Architecture, 28</p> <p>2.1.1 Von Neumann Architecture, 29</p> <p>2.1.2 Instruction Processing, 30</p> <p>2.1.3 Input/Output and Interrupt Considerations, 33</p> <p>2.2 Memory Technologies, 36</p> <p>2.2.1 Different Classes of Memory, 36</p> <p>2.2.2 Memory Access and Layout Issues, 38</p> <p>2.2.3 Hierarchical Memory Organization, 41</p> <p>2.3 Architectural Advancements, 43</p> <p>2.3.1 Pipelined Instruction Processing, 45</p> <p>2.3.2 Superscalar and Very Long Instruction Word Architectures, 46</p> <p>2.3.3 Multi-Core Processors, 48</p> <p>2.3.4 Complex Instruction Set versus Reduced Instruction Set, 50</p> <p>2.4 Peripheral Interfacing, 52</p> <p>2.4.1 Interrupt-Driven Input/Output, 53</p> <p>2.4.2 Direct Memory Access, 56</p> <p>2.4.3 Analog and Digital Input/Output, 58</p> <p>2.5 Microprocessor versus Microcontroller, 62</p> <p>2.5.1 Microprocessors, 62</p> <p>2.5.2 Standard Microcontrollers, 64</p> <p>2.5.3 Custom Microcontrollers, 66</p> <p>2.6 Distributed Real-Time Architectures, 68</p> <p>2.6.1 Fieldbus Networks, 68</p> <p>2.6.2 Time-Triggered Architectures, 71</p> <p>2.7 Summary, 73</p> <p>2.8 Exercises, 74</p> <p>References, 76</p> <p><b>3 Real-Time Operating Systems 79</b></p> <p>3.1 From Pseudokernels to Operating Systems, 80</p> <p>3.1.1 Miscellaneous Pseudokernels, 82</p> <p>3.1.2 Interrupt-Only Systems, 87</p> <p>3.1.3 Preemptive Priority Systems, 90</p> <p>3.1.4 Hybrid Scheduling Systems, 90</p> <p>3.1.5 The Task Control Block Model, 95</p> <p>3.2 Theoretical Foundations of Scheduling, 97</p> <p>3.2.1 Scheduling Framework, 98</p> <p>3.2.2 Round-Robin Scheduling, 99</p> <p>3.2.3 Cyclic Code Scheduling, 100</p> <p>3.2.4 Fixed-Priority Scheduling: Rate-Monotonic Approach, 102</p> <p>3.2.5 Dynamic Priority Scheduling: Earliest Deadline First Approach, 104</p> <p>3.3 System Services for Application Programs, 106</p> <p>3.3.1 Linear Buffers, 107</p> <p>3.3.2 Ring Buffers, 109</p> <p>3.3.3 Mailboxes, 110</p> <p>3.3.4 Semaphores, 112</p> <p>3.3.5 Deadlock and Starvation Problems, 114</p> <p>3.3.6 Priority Inversion Problem, 118</p> <p>3.3.7 Timer and Clock Services, 122</p> <p>3.3.8 Application Study: A Real-Time Structure, 123</p> <p>3.4 Memory Management Issues, 127</p> <p>3.4.1 Stack and Task Control Block Management, 127</p> <p>3.4.2 Multiple-Stack Arrangement, 128</p> <p>3.4.3 Memory Management in the Task Control Block Model, 129</p> <p>3.4.4 Swapping, Overlaying, and Paging, 130</p> <p>3.5 Selecting Real-Time Operating Systems, 133</p> <p>3.5.1 Buying versus Building, 134</p> <p>3.5.2 Selection Criteria and a Metric for Commercial Real-Time Operating Systems, 135</p> <p>3.5.3 Case Study: Selecting a Commercial Real-Time Operating System, 138</p> <p>3.5.4 Supplementary Criteria for Multi-Core and Energy-Aware Support, 140</p> <p>3.6 Summary, 142</p> <p>3.7 Exercises, 143</p> <p>References, 146</p> <p><b>4 Programming Languages for Real-Time Systems 149</b></p> <p>4.1 Coding of Real-Time Software, 150</p> <p>4.1.1 Fitness of a Programming Language for Real-Time Applications, 151</p> <p>4.1.2 Coding Standards for Real-Time Software, 152</p> <p>4.2 Assembly Language, 154</p> <p>4.3 Procedural Languages, 156</p> <p>4.3.1 Modularity and Typing Issues, 156</p> <p>4.3.2 Parameter Passing and Dynamic Memory Allocation, 157</p> <p>4.3.3 Exception Handling, 159</p> <p>4.3.4 Cardelli’s Metrics and Procedural Languages, 161</p> <p>4.4 Object-Oriented Languages, 162</p> <p>4.4.1 Synchronizing Objects and Garbage Collection, 162</p> <p>4.4.2 Cardelli’s Metrics and Object-Oriented Languages, 164</p> <p>4.4.3 Object-Oriented versus Procedural Languages, 165</p> <p>4.5 Overview of Programming Languages, 167</p> <p>4.5.1 Ada, 167</p> <p>4.5.2 C, 169</p> <p>4.5.3 C++, 170</p> <p>4.5.4 C#, 171</p> <p>4.5.5 Java, 172</p> <p>4.5.6 Real-Time Java, 174</p> <p>4.5.7 Special Real-Time Languages, 177</p> <p>4.6 Automatic Code Generation, 178</p> <p>4.6.1 Toward Production-Quality Code, 178</p> <p>4.6.2 Remaining Challenges, 180</p> <p>4.7 Compiler Optimizations of Code, 181</p> <p>4.7.1 Standard Optimization Techniques, 182</p> <p>4.7.2 Additional Optimization Considerations, 188</p> <p>4.8 Summary, 192</p> <p>4.9 Exercises, 193</p> <p>References, 195</p> <p><b>5 Requirements Engineering Methodologies 197</b></p> <p>5.1 Requirements Engineering for Real-Time Systems, 198</p> <p>5.1.1 Requirements Engineering as a Process, 198</p> <p>5.1.2 Standard Requirement Classes, 199</p> <p>5.1.3 Specifi cation of Real-Time Software, 201</p> <p>5.2 Formal Methods in System Specification, 202</p> <p>5.2.1 Limitations of Formal Methods, 205</p> <p>5.2.2 Finite State Machines, 205</p> <p>5.2.3 Statecharts, 210</p> <p>5.2.4 Petri Nets, 213</p> <p>5.3 Semiformal Methods in System Specification, 217</p> <p>5.3.1 Structured Analysis and Structured Design, 218</p> <p>5.3.2 Object-Oriented Analysis and the Unified Modeling Language, 221</p> <p>5.3.3 Recommendations on Specification Approach, 224</p> <p>5.4 The Requirements Document, 225</p> <p>5.4.1 Structuring and Composing Requirements, 226</p> <p>5.4.2 Requirements Validation, 228</p> <p>5.5 Summary, 232</p> <p>5.6 Exercises, 233</p> <p>5.7 Appendix 1: Case Study in Software Requirements Specification, 235</p> <p>5.7.1 Introduction, 235</p> <p>5.7.2 Overall Description, 238</p> <p>5.7.3 Specific Requirements, 245</p> <p>References, 265</p> <p><b>6 Software Design Approaches 267</b></p> <p>6.1 Qualities of Real-Time Software, 268</p> <p>6.1.1 Eight Qualities from Reliability to Verifiability, 269</p> <p>6.2 Software Engineering Principles, 275</p> <p>6.2.1 Seven Principles from Rigor and Formality to Traceability, 275</p> <p>6.2.2 The Design Activity, 281</p> <p>6.3 Procedural Design Approach, 284</p> <p>6.3.1 Parnas Partitioning, 284</p> <p>6.3.2 Structured Design, 286</p> <p>6.3.3 Design in Procedural Form Using Finite State Machines, 292</p> <p>6.4 Object-Oriented Design Approach, 293</p> <p>6.4.1 Advantages of Object Orientation, 293</p> <p>6.4.2 Design Patterns, 295</p> <p>6.4.3 Design Using the Unified Modeling Language, 298</p> <p>6.4.4 Object-Oriented versus Procedural Approaches, 301</p> <p>6.5 Life Cycle Models, 302</p> <p>6.5.1 Waterfall Model, 303</p> <p>6.5.2 V-Model, 305</p> <p>6.5.3 Spiral Model, 306</p> <p>6.5.4 Agile Methodologies, 307</p> <p>6.6 Summary, 311</p> <p>6.7 Exercises, 312</p> <p>6.8 Appendix 1: Case Study in Designing Real-Time Software, 314</p> <p>6.8.1 Introduction, 314</p> <p>6.8.2 Overall Description, 315</p> <p>6.8.3 Design Decomposition, 316</p> <p>6.8.4 Requirements Traceability, 371</p> <p>References, 375</p> <p><b>7 Performance Analysis Techniques 379</b></p> <p>7.1 Real-Time Performance Analysis, 380</p> <p>7.1.1 Theoretical Preliminaries, 380</p> <p>7.1.2 Arguments Related to Parallelization, 382</p> <p>7.1.3 Execution Time Estimation from Program Code, 385</p> <p>7.1.4 Analysis of Polled-Loop and Coroutine Systems, 391</p> <p>7.1.5 Analysis of Round-Robin Systems, 392</p> <p>7.1.6 Analysis of Fixed-Period Systems, 394</p> <p>7.1.7 Analysis of Nonperiodic Systems, 396</p> <p>7.2 Applications of Queuing Theory, 398</p> <p>7.2.1 Single-Server Queue Model, 398</p> <p>7.2.2 Arrival and Processing Rates, 400</p> <p>7.2.3 Buffer Size Calculation, 401</p> <p>7.2.4 Response Time Modeling, 402</p> <p>7.2.5 Other Results from Queuing Theory, 403</p> <p>7.3 Input/Output Performance, 405</p> <p>7.3.1 Buffer Size Calculation for Time-Invariant Bursts, 405</p> <p>7.3.2 Buffer Size Calculation for Time-Variant Bursts, 406</p> <p>7.4 Analysis of Memory Requirements, 408</p> <p>7.4.1 Memory Utilization Analysis, 408</p> <p>7.4.2 Optimizing Memory Usage, 410</p> <p>7.5 Summary, 411</p> <p>7.6 Exercises, 413</p> <p>References, 415</p> <p><b>8 Additional Considerations for the Practitioner 417</b></p> <p>8.1 Metrics in Software Engineering, 418</p> <p>8.1.1 Lines of Source Code, 419</p> <p>8.1.2 Cyclomatic Complexity, 420</p> <p>8.1.3 Halstead’s Metrics, 421</p> <p>8.1.4 Function Points, 423</p> <p>8.1.5 Feature Points, 427</p> <p>8.1.6 Metrics for Object-Oriented Software, 428</p> <p>8.1.7 Criticism against Software Metrics, 428</p> <p>8.2 Predictive Cost Modeling, 429</p> <p>8.2.1 Basic COCOMO 81, 429</p> <p>8.2.2 Intermediate and Detailed COCOMO 81, 431</p> <p>8.2.3 COCOMO II, 433</p> <p>8.3 Uncertainty in Real-Time Systems, 433</p> <p>8.3.1 The Three Dimensions of Uncertainty, 434</p> <p>8.3.2 Sources of Uncertainty, 435</p> <p>8.3.3 Identifying Uncertainty, 437</p> <p>8.3.4 Dealing with Uncertainty, 438</p> <p>8.4 Design for Fault Tolerance, 438</p> <p>8.4.1 Spatial Fault-Tolerance, 440</p> <p>8.4.2 Software Black Boxes, 443</p> <p>8.4.3 <i>N</i>-Version Programming, 443</p> <p>8.4.4 Built-in-Test Software, 444</p> <p>8.4.5 Spurious and Missed Interrupts, 447</p> <p>8.5 Software Testing and Systems Integration, 447</p> <p>8.5.1 Testing Techniques, 448</p> <p>8.5.2 Debugging Approaches, 454</p> <p>8.5.3 System-Level Testing, 456</p> <p>8.5.4 Systems Integration, 458</p> <p>8.5.5 Testing Patterns and Exploratory Testing, 462</p> <p>8.6 Performance Optimization Techniques, 465</p> <p>8.6.1 Scaled Numbers for Faster Execution, 465</p> <p>8.6.2 Look-Up Tables for Functions, 467</p> <p>8.6.3 Real-Time Device Drivers, 468</p> <p>8.7 Summary, 470</p> <p>8.8 Exercises, 471</p> <p>References, 473</p> <p><b>9 Future Visions on Real-Time Systems 477</b></p> <p>9.1 Vision: Real-Time Hardware, 479</p> <p>9.1.1 Heterogeneous Soft Multi-Cores, 481</p> <p>9.1.2 Architectural Issues with Individual Soft Cores, 483</p> <p>9.1.3 More Advanced Fieldbus Networks and Simpler Distributed Nodes, 484</p> <p>9.2 Vision: Real-Time Operating Systems, 485</p> <p>9.2.1 One Coordinating System Task and Multiple Isolated Application Tasks, 486</p> <p>9.2.2 Small, Platform Independent Virtual Machines, 487</p> <p>9.3 Vision: Real-Time Programming Languages, 488</p> <p>9.3.1 The UML++ as a Future “Programming Language”, 489</p> <p>9.4 Vision: Real-Time Systems Engineering, 491</p> <p>9.4.1 Automatic Verification of Software, 491</p> <p>9.4.2 Conservative Requirements Engineering, 492</p> <p>9.4.3 Distance Collaboration in Software Projects, 492</p> <p>9.4.4 Drag-and-Drop Systems, 493</p> <p>9.5 Vision: Real-Time Applications, 493</p> <p>9.5.1 Local Networks of Collaborating Real-Time Systems, 494</p> <p>9.5.2 Wide Networks of Collaborating Real-Time Systems, 495</p> <p>9.5.3 Biometric Identification Device with Remote Access, 495</p> <p>9.5.4 Are There Any Threats behind High-Speed Wireless Communications?, 497</p> <p>9.6 Summary, 497</p> <p>9.7 Exercises, 499</p> <p>References, 500</p> <p><b>Glossary 503</b></p> <p><b>About the Authors 535</b></p> <p><b>Index 537</b></p>
<b>PHILLIP A. LAPLANTE, PhD, PE</b>, is Professor of Software Engineering at Penn State, where he specializes in software and systems engineering, project management, and software testing and security. Dr. Laplante spent several years as a software engineer and project manager working on avionics, computer-aided design, and software test systems. He has authored or edited twenty-seven books and has published more than 200 scholarly articles. <p><b>SEPPO J. OVASKA, DSc,</b> is Professor of Industrial Electronics at Aalto University, Finland. He has served as a visiting scholar at Utah State University, Virginia Tech, and the University of Passau, Germany, and has published more than 100 articles in peer-reviewed journals. Prior to his academic career, Dr. Ovaska developed control systems for high-rise elevators; those contributions led to nine international patents.</p>
<b>The leading text in the field explains step by step how to write software that responds in real time</b> <p>From power plants to medicine to avionics, the world increasingly depends on computer systems that can compute and respond to various excitations in real time. The <i>Fourth Edition of Real-Time Systems Design and Analysis</i> gives software designers the knowledge and the tools needed to create real-time software using a holistic, systems-based approach. The text covers computer architecture and organization, operating systems, software engineering, programming languages, and compiler theory, all from the perspective of real-time systems design.</p> <p>The <i>Fourth Edition</i> of this renowned text brings it thoroughly up to date with the latest technological advances and applications. This fully updated edition includes coverage of the following concepts:</p> <ul> <li> <p>Multidisciplinary design challenges</p> </li> <li> <p>Time-triggered architectures</p> </li> <li> <p>Architectural advancements</p> </li> <li> <p>Automatic code generation</p> </li> <li> <p>Peripheral interfacing</p> </li> <li> <p>Life-cycle processes</p> </li> </ul> <p>The final chapter of the text offers an expert perspective on the future of real-time systems and their applications.</p> <p>The text is self-contained, enabling instructors and readers to focus on the material that is most important to their needs and interests. Suggestions for additional readings guide readers to more in-depth discussions on each individual topic. In addition, each chapter features exercises ranging from simple to challenging to help readers progressively build and fine-tune their ability to design their own real-time software programs.</p> <p>Now fully up to date with the latest technological advances and applications in the field, <i>Real-Time Systems Design and Analysis</i> remains the top choice for students and software engineers who want to design better and faster real-time systems at minimum cost.</p>

Diese Produkte könnten Sie auch interessieren:

Bandwidth Efficient Coding
Bandwidth Efficient Coding
von: John B. Anderson
EPUB ebook
114,99 €
Digital Communications with Emphasis on Data Modems
Digital Communications with Emphasis on Data Modems
von: Richard W. Middlestead
PDF ebook
171,99 €
Bandwidth Efficient Coding
Bandwidth Efficient Coding
von: John B. Anderson
PDF ebook
114,99 €