Presentation is loading. Please wait.

Presentation is loading. Please wait.

Semaphores The producer-consumer problem using semaphores.

Similar presentations


Presentation on theme: "Semaphores The producer-consumer problem using semaphores."— Presentation transcript:

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


Download ppt "Semaphores The producer-consumer problem using semaphores."

Similar presentations


Ads by Google