Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int current[5][5], maximum_claim[5][5], available[5],need[50][50];
- int allocation[5] = {0, 0, 0, 0, 0};
- int maxres[5], running[5], safe = 0;
- int counter = 0, i, j, exec, resources, processes, k = 1;
- int main()
- {
- printf("\nEnter number of processes: ");
- scanf("%d", &processes);
- for (i = 0; i < processes; i++)
- {
- running[i] = 1;
- counter++;
- }
- printf("\nEnter number of resources: ");
- scanf("%d", &resources);
- printf("\nEnter resource instances:");
- for (i = 0; i < resources; i++)
- {
- scanf("%d", &maxres[i]);
- }
- printf("\nEnter Allocated Resource Table:\n");
- for (i = 0; i < processes; i++)
- {
- for(j = 0; j < resources; j++)
- {
- scanf("%d", ¤t[i][j]);
- }
- }
- printf("\nEnter Maximum Claim Table:\n");
- for (i = 0; i < processes; i++)
- {
- for(j = 0; j < resources; j++)
- {
- scanf("%d", &maximum_claim[i][j]);
- }
- }
- for (i = 0; i < processes; i++)
- {
- for (j = 0; j < resources; j++)
- {
- allocation[j] += current[i][j];
- }
- }
- printf("\nAllocated resources:");
- for (i = 0; i < resources; i++)
- {
- printf("\t%d", allocation[i]);
- }
- for (i = 0; i < resources; i++)
- {
- available[i] = maxres[i] - allocation[i];
- }
- printf("\nAvailable resources:");
- for (i = 0; i < resources; i++)
- {
- printf("\t%d", available[i]);
- }
- printf("\n");
- printf("\nNeeded resources:\n");
- for(i=0;i<processes;i++)
- {
- for(j=0;j<resources;j++)
- {
- need[i][j]=maximum_claim[i][j]-current[i][j];
- printf("\t%d",need[i][j]);
- }
- printf("\n");
- }
- while (counter != 0)
- {
- safe = 0;
- for (i = 0; i < processes; i++)
- {
- if (running[i])
- {
- exec = 1;
- for (j = 0; j < resources; j++)
- {
- if (need[i][j]< available[j])
- {
- exec=0;
- break;
- }
- }
- if (exec)
- {
- printf("\nprocess%d is eexecuting\n", i+1);
- running[i]=0;
- counter--;
- safe=1;
- for(j=0;j<resources;j++)
- {
- available[j]+=current[i][j];
- }
- break;
- }
- }
- }
- if (!safe)
- {
- printf("\nThe processes are in unsafe state.\n");
- break;
- }
- else
- {
- printf("\nThe process is in safe state");
- printf("\nAvailable vector:");
- for (i = 0; i < resources; i++)
- {
- printf("\t%d", available[i]);
- }
- printf("\n");
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment