Download presentation
Presentation is loading. Please wait.
1
Semaphores The producer-consumer problem using semaphores
2
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 0 Semaphore empty = N producer1consumer1 consumer2producer2 Run queue Mutex queue Full queue Empty queue Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
3
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 0 Semaphore empty = 5 producer1consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&empty) Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
4
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 5 producer1consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&mutex) Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
5
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 5 producer1consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue insert_item(item) X Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
6
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 5 producer1consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue … X Quantum ends
7
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 5 producer1 consumer1 producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&full) X Consumer down(&full); down(&mutex); consume_item(); up(&mutex); up(&empty);
8
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 5 producer1 consumer1 producer2consumer2 Run queue Mutex queue Full queue Empty queue … X
9
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&empty) X Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
10
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2 consumer2 Run queue Mutex queue Full queue Empty queue down (&mutex) X Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
11
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2 consumer2 Run queue Mutex queue Full queue Empty queue … X
12
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2 consumer2 Run queue Mutex queue Full queue Empty queue down (&full) X Consumer down(&full); down(&mutex); consume_item(); up(&mutex); up(&empty);
13
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2 consumer2 Run queue Mutex queue Full queue Empty queue … X
14
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 0 Semaphore empty = 4 producer1 consumer1 producer2 consumer2 Run queue Mutex queue Full queue Empty queue up (&mutex) X Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full);
15
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2 Run queue Mutex queue Full queue Empty queue up (&full) X Producer down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full); consumer2
16
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2 Run queue Mutex queue Full queue Empty queue … X Quantum ends consumer2
17
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2 Run queue Mutex queue Full queue Empty queue down (&mutex) X consumer2
18
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2 Run queue Mutex queue Full queue Empty queue insert_item (item) X X consumer2
19
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2 Run queue Mutex queue Full queue Empty queue up (&mutex) X X consumer2
20
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 2 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue up (&full) X X
21
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 2 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue … X X Quantum ends
22
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&full) X X
23
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue down (&mutex) X X
24
Producer/Consumer N = 6 Semaphore mutex = 0 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue consume_item() X
25
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 4 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue up(&mutex) X
26
Producer/Consumer N = 6 Semaphore mutex = 1 Semaphore full = 1 Semaphore empty = 5 producer1 consumer1producer2consumer2 Run queue Mutex queue Full queue Empty queue up(&empty) X
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.