Computer systems are with full of different types of resourc

Computer systems are with full of different types of resources that can only be used by one process at a time. For many applications, most of the processes need exclusive access to not one, but several resources. So, chances of deadlocks are more in such situations. Write a program in C to implement the deadlock detection algorithm with single resource of each type. The output of the program should indicate that whether there is a deadlock or not. In case there is a deadlock in the system, the program should identify all processes which are deadlocked.

Thank You

Solution

For deadlock detection banker\'s algorithm is best example.So here we implementing banker;s algorithm.

/* Banker\'s Algorithm*/

#include<stdio.h>

int main()
{
   int fnd,flag,L,pro[4][5],np,nr,res[4][5],i,j,k=1,x[5],rs[5],av[5],t[5];
   int sum=0;
   printf(\"Please enter total number of processes : \");
   scanf(\"%d\",&np);
   printf(\"Please enter total number of resources : \");
   scanf(\"%d\",&nr);
   printf(\"Please enter claim Matrix\ \");
   for(i=1 ; i<=np; i++){
       printf(\"Process %d :\ \",i);
       for(j=1 ; j<=nr ; j++){
       scanf(\"%d\",&res[i][j]);
       }
   }
   printf(\"Please Enter allocation Matrix\ \");

   for(i=1 ; i<=np; i++){
       printf(\"Process %d :\ \",i);
       for(j=1 ; j<=nr ; j++){
       scanf(\"%d\",&pro[i][j]);
       }
   }
   printf(\"Please Enter total resources : \");
   for(i=1 ; i<=nr ; i++){
       scanf(\"%d\",&rs[i]);}
   printf(\"Please Enter available resources : \");
   for(i=1 ; i<=nr ; i++){
       scanf(\"%d\",&av[i]);
       t[i] = av[i];
   }
   for(i=1 ; i<=np; i++){
       sum=0;
       for(j=1 ; j<=nr ; j++){
       sum = sum + pro[i][j];
       }
       if(sum == 0){
       x[k] = i;
       k++;
       }
   }
   for(i=1 ; i<=np; i++){
       for(L=1 ; L<k ; L++){
       if(i!=x[L])
       {
       flag =1 ;
       for(j=1 ; j<=nr; j++){
       if(res[i][j]<t[j])
       {
           flag = 0;
           break;
       }
       }}
       if(flag == 1){
       x[k] = i;
       k++;
       for(j=1 ; j<=nr ; j++){
           t[j] = t[j] + pro[i][j];
       }
       }
   }}
   printf(\"Processes that occuring Deadlock : \");
   for(j=1 ; j<=np; j++){
       fnd=0;
       for(i=1; i<k; i++){
       if(j==x[i])
       fnd=1;
       }
       if(fnd == 0)
       printf(\"%d\\t\",j);
   }
   getch();
return 0 ;
}

Output :
Enter total number of processes : 2
Enter total number of resources : 2
Please Enter claim Matrix :

Process 1 : 1 0

Process 2 : 0 1
Please enter allocation Matrix :

Process 1 : 1 0

Process 2 : 0 0
Enter total number of resources :
1 1

Enter available resources :
1 0
Processes causing deadlocks : 1

Computer systems are with full of different types of resources that can only be used by one process at a time. For many applications, most of the processes need
Computer systems are with full of different types of resources that can only be used by one process at a time. For many applications, most of the processes need

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site