Книга: Real-Time Concepts for Embedded Systems
16.1 Introduction
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.
- Introduction to Microprocessors and Microcontrollers
- Introduction
- 5.1 Introduction
- Introduction to Serial Devices
- 14.1 Introduction
- Introduction to PHP
- 3.4.1. Introduction to Atomic Transactions
- 11.1. Introduction to BusyBox
- 1.1 Introduction
- 2.5.1. Introduction to Group Communication
- 4.1.1. Introduction to Threads
- 6.1. INTRODUCTION