Monday 13 May 2013

6. BANKER'S ALGORITHM


Code:
import java.util.*;
class Bankers
{
    int claim[][],alloc[][],av[],need[],p,r,alsum[],sum,temp[][];
    int a=0,b=0,c;
    boolean flag;
    Scanner src = new Scanner(System.in);
    Bankers(int p,int r)
    {
          this.p=p;
          this.r=r;
          claim=new int[p][r];
          alloc=new int[p][r];
          av=new int [r];
          need=new int [r];
          alsum=new int[r];
          temp=new int[p][r];
          System.out.println("ENTER THE "+r+" VALUES IN AVAILABLE VECTOR");
          for(int i=0;i<r;i++)
          {
              av[i]=src.nextInt();
          }
          System.out.println("ENTER THE CLAIM MATRIX OF"+p+" X "+r);
          for(int i=0;i<p;i++)
                 for(int j=0;j<r;j++)
                         claim[i][j]=src.nextInt();
          System.out.println("ENTER THE ALLOCATION MATRIX OF "+p+" X "+r);
          for(int i=0;i<p;i++)
                   for(int j=0;j<r;j++)
          alloc[i][j]=src.nextInt();               
     }
     public void calNeed()
     {
         for(int i=0;i<r;i++)
         {
                 for(int j=0;j<p;j++)
                 {
                     sum=sum+alloc[j][i];                  
                 }
                 alsum[i]=sum;
                 sum=0;
          }
          for(int i=0;i<r;i++)
          {
              need[i]=av[i]-alsum[i];
              System.out.print("Initial Need Vector ");
              System.out.print(need[i]);
              System.out.println();
              System.out.println(); 
          }      }
      public void checkNeed()
      { 
          for( int i=0;i<p;i++)
                 for(int j=0;j<r;j++)
                 {
                          temp[i][j]=claim[i][j]-alloc[i][j];
                 }    }
      public void compareNeed()
      {
       while(b<p)
       {
         flag=false;
         for(int i=0;i<p;i++)
        {
           for(int j=0;j<r;j++)
           { 
              if(temp[i][0]==89)
                     break;
              if(temp[i][j]<=need[j])
                 a++ ;
              else break;
           }
           if(a==r)
           {
              System.out.println("Process P"+(i+1)+" is Completed");
              addtoNeed(i);
              temp[i][0]=89;
              a=0;
              c++;
              flag=true;
           }
          if(flag==true)
              break;
        }
        b++;
       }
      }
      public void addtoNeed(int k)
      {
            int n=k;
            for(int j=0;j<r;j++)
            {
               need[j]=need[j]+alloc[n][j];
            }  
             if(c==p)
                     System.out.println("SYSTEM IS IN SAFE STATE");           
            else
System.out.println("SYSTEM IS NOT IN SAFE STATE");           
      }
 }
class BankerExp1
{
       public static void main(String args[])
       {  
           Scanner src = new Scanner(System.in);
           System.out.println("ENTER THE NO. OF PROCESS");
           int p= src.nextInt();
           System.out.println("ENTER THE NO. OF RESOURCES");
           int r = src.nextInt();
           Bankers obj = new Bankers(p,r);                                
           obj.calNeed();
           obj.checkNeed();
           obj.compareNeed(); 
        }
}                 

OUTPUT:-
ENTER THE NO. OF PROCESS
4
ENTER THE NO. OF RESOURCES
3
ENTER THE 3 VALUES IN AVAILABLE VECTOR
9 3 6
ENTER THE CLAIM MATRIX OF 4 X 3
3 2 2
6 1 3
3 1 4
4 2 2
ENTER THE ALLOCATION MATRIX OF 4 X 3
1 0 0
5 1 1
2 1 1
0 0 2
Initial Need Vector 1
Initial Need Vector 1
Initial Need Vector 2
Process P2 is Completed
Process P1 is Completed
Process P3 is Completed
Process P4 is Completed
SYSTEM IS IN SAFE STATE
        
     

No comments:

Post a Comment