For the following problem, please do not provide me any code. I will give you my code please check it and make corrections as necessary. 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 for the above problem: #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 < n; i++) { printf("P%d->", safe_sequence[i]); } }
For the following problem, please do not provide me any code. I will give you my code please check it and make corrections as necessary.
Write a c program that will generate the safe sequence of process execution for the situation
given below:(Use Banker’s
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 for the above problem:
#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 < n; i++)
{
printf("P%d->", safe_sequence[i]);
}
}
Step by step
Solved in 5 steps with 3 images