***I am posting this for the second time, because last time my issue was not resolved. There was no update in the code and it gave the same output as before. So please make sure to actually make corrections in the code I provided.***   The output of the following problem should be: P1 -> P3 -> P4 -> P5 -> P0 -> P2  but the output I get when I run my code is: P1 -> P3 -> P4 -> P5   Note: I am sharing my code below. Please tell me what to fix in my code to get the desired output. P   Problem: Write a c program that will generate the safe sequence of process execution for the situation given below:(Use Banker’s Algorithm). Note: The code can be implemented in several different ways, but make sure the parameter remains the same as shown below. n = 6; // Number of processes m = 4; // Number of resources int alloc[6][4] = { { 0, 1, 0, 3 }, // P0// Allocation Matrix { 2, 0, 0, 3 }, // P1 { 3, 0, 2, 0 }, // P2 { 2, 1, 1, 5 }, // P3 { 0, 0, 2, 2 }, // P4 {1, 2 , 3, 1 } }; //P5 int max[6][4] = { { 6, 4, 3, 4 }, // P0 // MAX Matrix { 3, 2, 2, 4 }, // P1 { 9, 1, 2, 6 }, // P2 { 2, 2, 2, 8 }, // P3 { 4, 3, 3, 7 }, // P4 { 6, 2, 6, 5 } }; //P5 int avail[4] = { 2, 2, 2, 1 }; //Available resources   My code:  #include int main() {          int n, m;     n = 6; // Number of processes     m = 4; // Number of resources          // Allocation Matrix     int allocation[6][4] =  { { 0, 1, 0, 3 }, // P0                             { 2, 0, 0, 3 }, // P1                             { 3, 0, 2, 0 }, // P2                             { 2, 1, 1, 5 }, // P3                             { 0, 0, 2, 2 }, // P4                             {1, 2 , 3, 1 } }; //P5                                  // MAX Matrix     int max[6][4] = { { 6, 4, 3, 4 }, // P0                      { 3, 2, 2, 4 }, // P1                     { 9, 1, 2, 6 }, // P2                     { 2, 2, 2, 8 }, // P3                     { 4, 3, 3, 7 }, // P4                     { 6, 2 , 6, 5 } }; //P5          //Available resources     int avail[4] = { 2, 2, 2, 1 };          //calculating Need Matrix     int need[n][m];          for(int i = 0; i < n; i++){         for(int j = 0; j < m; j++)             need[i][j] = max[i][j]-allocation[i][j];     }          //Banker's Algorithm     int k, flag;     k = 0; //the variable k is the index of the safe sequence array          int completion[20], safe_sequence[20]; /* The completion array stores the processes' completion status.                                         It will store value 0 for an incomplete process and 1 for a                                          complete process */                                              // Initally all processes are incomplete     for(int i = 0; i < n; i++) {         completion[i] = 0;     }          for(int i = 0; i < n; i++) {         flag = 0;         if(completion[i] == 0)          {             //Process is incomplete. So execute the Process             for(int j = 0; j < m; j++) {                 if(need[i][j] > avail[j]) //If need is greater than available break out of the loop                  {                     flag = 1;                     break;                 }             }             if(flag==0) // Need is less than available             {                 completion[i] = 1;                 safe_sequence[k] = i;                 k++;                 //Calculate new available                 for(int j = 0; j < m; j++)                 {                     avail[j] += allocation[i][j];                 }                 i = i - 1; //loop from the first process                              }         }     }                         printf("Safe Sequence:\n");     for(int i = 0; i < k; i++)     {         printf("P%d", safe_sequence[i]);         if(i < k-1)         {             printf(" -> ");         }              }     return 0;       }

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

***I am posting this for the second time, because last time my issue was not resolved. There was no update in the code and it gave the same output as before. So please make sure to actually make corrections in the code I provided.***

 

The output of the following problem should be: P1 -> P3 -> P4 -> P5 -> P0 -> P2 

but the output I get when I run my code is: P1 -> P3 -> P4 -> P5

 

Note: I am sharing my code below. Please tell me what to fix in my code to get the desired output. P

 

Problem:

Write a c program that will generate the safe sequence of process execution for the situation
given below:(Use Banker’s Algorithm).
Note: The code can be implemented in several different ways, but make sure the parameter
remains the same as shown below.
n = 6; // Number of processes
m = 4; // Number of resources
int alloc[6][4] = { { 0, 1, 0, 3 }, // P0// Allocation Matrix
{ 2, 0, 0, 3 }, // P1
{ 3, 0, 2, 0 }, // P2
{ 2, 1, 1, 5 }, // P3
{ 0, 0, 2, 2 }, // P4
{1, 2 , 3, 1 } }; //P5
int max[6][4] = { { 6, 4, 3, 4 }, // P0 // MAX Matrix
{ 3, 2, 2, 4 }, // P1
{ 9, 1, 2, 6 }, // P2
{ 2, 2, 2, 8 }, // P3
{ 4, 3, 3, 7 }, // P4
{ 6, 2, 6, 5 } }; //P5
int avail[4] = { 2, 2, 2, 1 }; //Available resources

 

My code: 

#include <stdio.h>

int main() {
    
    int n, m;
    n = 6; // Number of processes
    m = 4; // Number of resources
    
    // Allocation Matrix
    int allocation[6][4] =  { { 0, 1, 0, 3 }, // P0
                            { 2, 0, 0, 3 }, // P1
                            { 3, 0, 2, 0 }, // P2
                            { 2, 1, 1, 5 }, // P3
                            { 0, 0, 2, 2 }, // P4
                            {1, 2 , 3, 1 } }; //P5
                            
    // MAX Matrix
    int max[6][4] = { { 6, 4, 3, 4 }, // P0 
                    { 3, 2, 2, 4 }, // P1
                    { 9, 1, 2, 6 }, // P2
                    { 2, 2, 2, 8 }, // P3
                    { 4, 3, 3, 7 }, // P4
                    { 6, 2 , 6, 5 } }; //P5
    
    //Available resources
    int avail[4] = { 2, 2, 2, 1 };
    
    //calculating Need Matrix
    int need[n][m];
    
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++)
            need[i][j] = max[i][j]-allocation[i][j];
    }
    
    //Banker's Algorithm
    int k, flag;
    k = 0; //the variable k is the index of the safe sequence array
    
    int completion[20], safe_sequence[20]; /* The completion array stores the processes' completion status.
                                        It will store value 0 for an incomplete process and 1 for a 
                                        complete process */
                                        
    // Initally all processes are incomplete
    for(int i = 0; i < n; i++) {
        completion[i] = 0;
    }
    
    for(int i = 0; i < n; i++) {
        flag = 0;
        if(completion[i] == 0) 
        {
            //Process is incomplete. So execute the Process
            for(int j = 0; j < m; j++) {
                if(need[i][j] > avail[j]) //If need is greater than available break out of the loop 
                {
                    flag = 1;
                    break;
                }
            }
            if(flag==0) // Need is less than available
            {
                completion[i] = 1;
                safe_sequence[k] = i;
                k++;
                //Calculate new available
                for(int j = 0; j < m; j++)
                {
                    avail[j] += allocation[i][j];
                }
                i = i - 1; //loop from the first process
                
            }
        }
    }
     
    
    
   
    printf("Safe Sequence:\n");
    for(int i = 0; i < k; i++)
    {
        printf("P%d", safe_sequence[i]);
        if(i < k-1)
        {
            printf(" -> ");
        }
        
    }
    return 0; 
    
}

Expert Solution
steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Basics of loop
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
  • SEE MORE 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