Download Real-Time Concepts for Embedded Systems by Qing Li

Transcript
This document is created with the unregistered version of CHM2PDF Pilot
Chapter 16: Common Design
Problems
16.1 Introduction
Most embedded RTOSes facilitate a multitasking- or multithreading-capable environment. Many challenging design
problems arise when developing embedded applications in multitasking systems.
The nature of this environment is that multiple threads of execution share and contend for the same set of resources.
As such, resource sharing requires careful coordination to ensure that each task can eventually acquire the needed
resource or resources to continue execution.
In a preemptive multitasking environment, resource sharing is a function of task priority. The higher the priority of a
task, the more important the task is. Higher priority tasks have precedence over lower priority tasks when accessing
shared resources. Therefore, resource sharing cannot violate this rule. On the other hand, if higher priority tasks
always take resources from lower priority tasks, this sharing scheme is not fair and can prevent lower priority tasks
from ever completing. This condition is called starvation. Maximization of resource utilization is yet another
conflicting requirement.
Two of the most common design problems facing embedded developers are the deadlock and the priority inversion
problem.
Specifically, this chapter focuses on:
•
•
•
•
•
•
resource classification,
resource request models,
definition of deadlocks,
deadlock detection, recovery, avoidance and prevention,
definition of priority inversion, and
solutions to priority inversion.