Contents

 

1 Introduction

I Concurrent Programming Concepts

2 A Case Study: Vision Control

2.1 Input Output on Computers

2.1.1 Accessing the I/O Registers

2.1.2 Synchronization in I/O

2.1.3 Direct Memory Access (DMA)

2.2 Input/Output Operations and the Operating System

2.2.1 User and Kernel Modes

2.2.2 Input/Output Abstraction in Linux

2.3 Acquiring Images from a Camera Device

2.3.1 Synchronous Read from a Camera Device

2.3.2 Virtual Memory

2.3.3 Handling Data Streaming from the Camera Device

2.4 Edge Detection

2.4.1 Optimizing the Code

2.5 Finding the Center Coordinates of a Circular Shape

2.6 Summary

3 Real-Time Concurrent Programming Principles

3.1 The Role of Parallelism

3.2 Definition of Process

3.3 Process State

3.4 Process Life Cycle and Process State Diagram

3.5 Multithreading

3.6 Summary

4 Deadlock

4.1 A Simple Example

4.2 Formal Definition of Deadlock

4.3 Reasoning about Deadlock: The Resource Allocation Graph

4.4 Living with Deadlock

4.5 Deadlock Prevention

4.6 Deadlock Avoidance

4.7 Deadlock Detection and Recovery

4.8 Summary

5 Interprocess Communication Based on Shared Variables

5.1 Race Conditions and Critical Regions

5.2 Hardware-Assisted Lock Variables

5.3 Software-Based Mutual Exclusion

5.4 From Active to Passive Wait

5.5 Semaphores

5.6 Monitors

5.7 Summary

6 Interprocess Communication Based on Message Passing

6.1 Basics of Message Passing

6.2 Naming Scheme

6.3 Synchronization Model

6.4 Message Buffers

6.5 Message Structure and Contents

6.6 Producer–Consumer Problem with Message Passing

6.7 Summary

7 Interprocess Communication Primitives in POSIX/Linux

7.1 Threads and Processes

7.1.1 Creating Threads

7.1.2 Creating Processes

7.2 Interprocess Communication among Threads

7.2.1 Mutexes and Condition Variables

7.3 Interprocess Communication among Processes

7.3.1 Semaphores

7.3.2 Message Queues

7.3.3 Signals

7.4 Clocks and Timers

7.5 Threads or Processes?

7.6 Summary

8 Interprocess Communication Primitives in FreeRTOS

8.1 FreeRTOS Threads and Processes

8.2 Message Queues

8.3 Counting, Binary, and Mutual Exclusion Semaphores

8.4 Clocks and Timers

8.5 Summary

9 Network Communication

9.1 The Ethernet Protocol

9.2 TCP/IP and UDP

9.3 Sockets

9.3.1 TCP/IP Sockets

9.4 UDP Sockets

9.5 Summary

10 Lock and Wait-Free Communication

10.1 Basic Principles and Definitions

10.2 Multidigit Registers

10.3 Application to the Readers/Writer Problem

10.4 Universal Constructions

10.5 Summary

II Real-Time Scheduling Analysis

11 Real-Time Scheduling Based on the Cyclic Executive

11.1 Scheduling and Process Models

11.2 The Cyclic Executive

11.3 Choice of Major and Minor Cycle Length

11.4 Tasks with Large Period or Execution Time

11.5 Summary

12 Real-Time, Task-Based Scheduling

12.1 Fixed and Variable Task Priority

12.1.1 Preemption

12.1.2 Variable Priority in General Purpose Operating Systems

12.2 Rate Monotonic

12.2.1 Proof of Rate Monotonic Optimality

12.3 The Earliest Deadline First Scheduler

12.4 Summary

13 Schedulability Analysis Based on Utilization

13.1 Processor Utilization

13.2 Sufficient Schedulability Test for Rate Monotonic

13.2.1 Ulub for Two Tasks

13.2.2 Ulub for N Tasks

13.3 Schedulability Test for EDF

13.4 Summary

14 Schedulability Analysis Based on Response Time Analysis

14.1 Response Time Analysis

14.2 Computing the Worst-Case Execution Time

14.3 Aperiodic and Sporadic Tasks

14.4 Summary

15 Task Interactions and Blocking

15.1 The Priority Inversion Problem

15.2 The Priority Inheritance Protocol

15.3 The Priority Ceiling Protocol

15.4 Schedulability Analysis and Examples

15.5 Summary

16 Self-Suspension and Schedulability Analysis

16.1 Self-Suspension and the Critical Instant Theorem

16.2 Self-Suspension and Task Interaction

16.3 Extension of the Response Time Analysis Method

16.4 Summary

III Advanced Topics

17 Internal Structure of FreeRTOS

17.1 Task Scheduler/Context Switch

17.2 Synchronization Primitives

17.3 Porting FreeRTOS to a New Architecture

17.4 Summary

18 Internal Structures and Operating Principles of Linux Real-Time Extensions

18.1 The Linux Scheduler

18.2 Kernel Preemption

18.3 The PREEMPT_RT Linux Patch

18.3.1 Practical Considerations

18.4 The Dual-Kernel Approach

18.4.1 Adeos

18.4.2 Xenomai

18.4.3 RTAI

18.5 Summary

19 OS Abstraction Layer

19.1 An Object Oriented Interface to Threads and Other IPC Mechanisms

19.1.1 Linux Implementation

19.1.2 FreeRTOS Implementation

19.2 A Sample Multiplatform Application

19.3 Summary

20 Control Theory and Digital Signal Processing Primer

20.1 Case Study 1: Controlling the Liquid Level in a Tank

20.1.1 The Use of Differential Equations to Describe the Dynamics of the System

20.1.2 Introducing an Integral Gain

20.1.3 Using Transfer Functions in the Laplace Domain

20.1.4 Deriving System Properties from Its Transfer Function

20.1.5 Implementing a Transfer Function

20.1.6 What We Have Learned

20.2 Case Study 2: Implementing a Digital low-pass Filter

20.2.1 Harmonics and the Fourier Transform

20.2.2 Low-Pass Filters

20.2.3 The Choice of the Sampling Period

20.2.4 Building the Digital Low-Pass Filter

20.2.5 Signal to Noise Ratio (SNR)

20.3 Summary

Bibliography

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.14.132