Convert this code to  bash script to simulate producer-consumer problem using semaphores. #include int mutex=1,full=0,empty=3,x=0; main() {    int n;    void producer();    void consumer();    int wait(int);    int signal(int);    printf(“\n 1.Producer \n 2.Consumer \n 3.Exit”);    while(1)    {       printf(“\n Enter your choice:”);       scanf(“%d”,&n);       switch(n)       {          case 1:                  if((mutex==1)&&(empty!=0))                     producer();                  else                     printf(“Buffer is full”);      break;          case 2:              if((mutex==1)&&(full!=0))     consumer();     else         printf(“Buffer is empty”);        break;          case 3:     exit(0);     break;       }    } } int wait(int s) {    return (--s); } int signal(int s) {    return(++s); } void producer() {    mutex=wait(mutex);    full=signal(full);    empty=wait(empty);    x++;    printf(“\n Producer produces the item %d”,x);    mutex=signal(mutex); } void consumer() {    mutex=wait(mutex);    full=wait(full);    empty=signal(empty);    printf(“\n Consumer consumes item %d”,x);    x--;    mutex=signal(mutex);

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

Convert this code to  bash script to simulate producer-consumer problem using semaphores.

#include<stdio.h>
int mutex=1,full=0,empty=3,x=0;
main()
{
   int n;
   void producer();
   void consumer();
   int wait(int);
   int signal(int);
   printf(“\n 1.Producer \n 2.Consumer \n 3.Exit”);
   while(1)
   {
      printf(“\n Enter your choice:”);
      scanf(“%d”,&n);
      switch(n)
      {
         case 1:
                 if((mutex==1)&&(empty!=0))
                    producer();
                 else
                    printf(“Buffer is full”);
     break;
         case 2:
             if((mutex==1)&&(full!=0))
    consumer();
    else
        printf(“Buffer is empty”);
       break;
         case 3:
    exit(0);
    break;
      }
   }
}
int wait(int s)
{
   return (--s);
}
int signal(int s)
{
   return(++s);
}
void producer()
{
   mutex=wait(mutex);
   full=signal(full);
   empty=wait(empty);
   x++;
   printf(“\n Producer produces the item %d”,x);
   mutex=signal(mutex);
}
void consumer()
{
   mutex=wait(mutex);
   full=wait(full);
   empty=signal(empty);
   printf(“\n Consumer consumes item %d”,x);
   x--;
   mutex=signal(mutex);
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY