Semaphores - PowerPoint PPT Presentation

About This Presentation
Title:

Semaphores

Description:

The producer-consumer problem using semaphores. Producer/Consumer. N = 6. Semaphore mutex = 1. Semaphore full = 0. Semaphore empty = N. producer1. consumer1. consumer2 ... – PowerPoint PPT presentation

Number of Views:964
Avg rating:3.0/5.0
Slides: 27
Provided by: witawas
Learn more at: http://cse.unl.edu
Category:

less

Transcript and Presenter's Notes

Title: Semaphores


1
Semaphores
  • The producer-consumer problem using semaphores

2
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 1 Semaphore full
0 Semaphore empty N
producer1
consumer1
consumer2
producer2
Run queue
Mutex queue
Full queue
Empty queue
3
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 1 Semaphore full
0 Semaphore empty 5
down (empty)
producer1
consumer1
producer2
consumer2
Run queue
Mutex queue
Full queue
Empty queue
4
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 5
down (mutex)
producer1
consumer1
producer2
consumer2
Run queue
Mutex queue
Full queue
Empty queue
5
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 5
insert_item(item)
producer1
consumer1
producer2
consumer2
Run queue
Mutex queue
X
Full queue
Empty queue
6
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 5

producer1
consumer1
producer2
consumer2
Run queue
Quantum ends
Mutex queue
X
Full queue
Empty queue
7
Producer/Consumer
Consumer down(full) down(mutex) consume_item()
up(mutex) up(empty)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 5
down (full)
producer2
consumer2
producer1
Run queue
Mutex queue
X
consumer1
Full queue
Empty queue
8
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 5

producer2
consumer2
producer1
Run queue
Mutex queue
X
consumer1
Full queue
Empty queue
9
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 4
down (empty)
producer2
consumer2
producer1
Run queue
Mutex queue
X
consumer1
Full queue
Empty queue
10
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 4
down (mutex)
consumer2
producer1
Run queue
producer2
Mutex queue
X
consumer1
Full queue
Empty queue
11
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 4

consumer2
producer1
Run queue
producer2
Mutex queue
X
consumer1
Full queue
Empty queue
12
Producer/Consumer
Consumer down(full) down(mutex) consume_item()
up(mutex) up(empty)
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 4
down (full)
producer1
Run queue
producer2
Mutex queue
X
consumer1
consumer2
Full queue
Empty queue
13
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
0 Semaphore empty 4

producer1
Run queue
producer2
Mutex queue
X
consumer1
consumer2
Full queue
Empty queue
14
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 1 Semaphore full
0 Semaphore empty 4
up (mutex)
producer2
producer1
Run queue
Mutex queue
X
consumer1
consumer2
Full queue
Empty queue
15
Producer/Consumer
Producer down(empty) down(mutex) insert_item(i
tem) up(mutex) up(full)
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 4
up (full)
consumer1
producer2
producer1
Run queue
Mutex queue
X
Full queue
consumer2
Empty queue
16
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 4

consumer1
producer2
producer1
Run queue
Quantum ends
Mutex queue
X
Full queue
consumer2
Empty queue
17
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
1 Semaphore empty 4
down (mutex)
consumer1
producer2
producer1
Run queue
Mutex queue
X
Full queue
consumer2
Empty queue
18
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
1 Semaphore empty 4
insert_item (item)
consumer1
producer2
producer1
Run queue
Mutex queue
X
Full queue
consumer2
X
Empty queue
19
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 4
up (mutex)
consumer1
producer2
producer1
Run queue
Mutex queue
X
Full queue
consumer2
X
Empty queue
20
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
2 Semaphore empty 4
up (full)
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
X
Empty queue
21
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
2 Semaphore empty 4

consumer1
producer2
consumer2
producer1
Run queue
Quantum ends
Mutex queue
X
Full queue
X
Empty queue
22
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 4
down (full)
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
X
Empty queue
23
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
1 Semaphore empty 4
down (mutex)
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
X
Empty queue
24
Producer/Consumer
N 6 Semaphore mutex 0 Semaphore full
1 Semaphore empty 4
consume_item()
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
Empty queue
25
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 4
up(mutex)
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
Empty queue
26
Producer/Consumer
N 6 Semaphore mutex 1 Semaphore full
1 Semaphore empty 5
up(empty)
consumer1
producer2
consumer2
producer1
Run queue
Mutex queue
X
Full queue
Empty queue
Write a Comment
User Comments (0)
About PowerShow.com