Which of the following statements is false? This code runs without data-race or deadlock problems Removing mutex semaphore causes the data-race problem In the producer_fn, swapping sem_post(&slots_filled) and sem_post(&mutex) code lines causes deadlock. Removing slots_filled and slots_empty semaphores causes the data-race problem

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Answer the given question with a proper explanation and step-by-step solution.

#define MACHINE_CAPACITY 64

sem_t mutex, slots_filled, slots_empty;

struct machine{ int nitems; };

double _sleep_time() { return 2 * ((double) rand() / (double) RAND_MA

X); }

void *producer_fn(void *args) {

int cokes;

struct machine *cur_machine = (struct machine *) args;

while (1) {

sem_wait(&slots_empty);

sem_wait(&mutex);

 

cokes = cur_machine->nitems;

cur_machine->nitems += 1;

printf("[Producer] enqueue cokes %d -> %d\n", cokes, cur_machin

e->nitems);

 

sem_post(&mutex);

sem_post(&slots_filled);

sleep(_sleep_time());

}

}

void *consumer_fn(void *args) {

int cokes;

struct machine *cur_machine = (struct machine *) args;

 

while (1) {

sem_wait(&slots_filled);

sem_wait(&mutex);

 

cokes = cur_machine->nitems;

cur_machine->nitems -= 1;

printf("[Consumer] dequeue cokes %d -> %d\n", cokes, cur_machin

e->nitems);

 

sem_post(&mutex);

sem_post(&slots_empty);

sleep(_sleep_time());

}

}

int main(void) {

struct machine coke_machine = { .nitems = 0 };

srand (time(NULL));

sem_init(&mutex, 0, 1);

sem_init(&slots_empty, 0, MACHINE_CAPACITY);

sem_init(&slots_filled, 0, 0);

 

pthread_t producer, consumer;

pthread_create(&producer, NULL, producer_fn, (void *)&coke_machin

e);

pthread_create(&consumer, NULL, consumer_fn, (void *)&coke_machin

e);

 

pthread_join(producer, NULL);

pthread_join(consumer, NULL);

return 0; // code only reaches here if the machine is broken

}

Which of the following statements is false?
This code runs without data-race or deadlock problems
Removing mutex semaphore causes the data-race problem
In the producer_fn, swapping sem_post(&slots_filled) and
sem_post(&mutex) code lines causes deadlock.
Removing slots_filled and slots_empty semaphores causes the data-race
problem
Transcribed Image Text:Which of the following statements is false? This code runs without data-race or deadlock problems Removing mutex semaphore causes the data-race problem In the producer_fn, swapping sem_post(&slots_filled) and sem_post(&mutex) code lines causes deadlock. Removing slots_filled and slots_empty semaphores causes the data-race problem
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps

Blurred answer
Knowledge Booster
Linux
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education