Professional Documents
Culture Documents
Embedded Systems
Author: Qing Li with
Caroline Yao
ISBN: 1-57820-124-1
CMPBooks
Chapter 6
Semaphores
Outline
6.1 Introduction
6.2 Defining a Semaphores
6.3 Typical Semaphore Operations
6.4 Typical Semaphore Use
6.1 Introduction
Program Listing
volatile INT count;
void CountThread( INT iterations)
{
INT i;
INT x;
for (i = 0; i < iterations; i++) {
x = count;
x++;
count = x;
}
Execution Results
Semaphore
Semaphore (Cont.)
Semaphore (Cont.)
Semaphores
Binary semaphores
Counting semaphores
Mutual-exclusion (mutex) semaphores
Binary Semaphores
Counting Semaphores
Bounded count
Unbounded count
Ownership
Recursive access
Task deletion safety
One or more protocols avoiding problems inherent to
mutual exclusions
Locked and unlocked
Mutex Ownership
Recursive Locking
Implementation
Comparison
ISRs
Semaphore
Examples
Wait-and-signal synchronization
Multiple-task wait-and-signal synchronization
Credit-tracking synchronization
Single shared-resource-access synchronization
Recursive shared-resource-access synchronization
Multiple shared-resource-access synchronization
Wait-and-Signal Synchronization
Example
Wait-and-Signal Synchronization
Between Two Tasks
Multi-Task Wait-and-Signal
Synchronization
Example
Multi-Task Wait-and-Signal
Synchronization
Credit-Tracking Synchronization
Credit-Tracking Synchronization
Between Two Tasks
Example
Credit-Tracking Synchronization
(Cont.)
Single Shared-Resource-Access
Synchronization
Memory location
A data structure
An I/O devices
Example
Single Shared-Resource-Access
Synchronization
Single Shared-Resource-Access
Synchronization (Cont.)
Dangers
Solutions
Recursive Shared-Resource-Access
Synchronization
Example
Solution
Recursive Shared-Resource-Access
Synchronization
Multiple Shared-Resource-Access
Synchronization
Multiple Shared-Resource-Access
Synchronization
Multiple Shared-Resource-Access
Synchronization (Cont.)
Solution