Skip to main content

Modify above program so as to include the following: a) Accept Request for a process b) Resource request algorithm c) Safety algorithm

  

#include<stdio.h>
#include<string.h>

int n,m,i,j,k,flag,safe;
int a[50][50],av[15],max[50][50],finish[10],need[50][50],req[10];
char s[50],str[5];

void get_data()
{
     printf("\nEnter number of processes : ");
     scanf("%d",&n);
     printf("\nEnter number of resources : ");
     scanf("%d",&m);
     printf("\nEnter allocation matrix : \n");
     for (i=0;i<n;i++)
     {
         for (j=0;j<m;j++)
         {
              scanf("%d",&a[i][j]);
         }
     }
     printf("\nEnter MAX matrix : \n");
     for (i=0;i<n;i++)
     {
          for (j=0;j<m;j++)
          {
               scanf("%d",&max[i][j]);
          }
     }
     
     printf("\nEnter Available Array : \n");
     for (i=0;i<m;i++)
          scanf("%d",&av[i]);
     for (i=0;i<n;i++)
          finish[i]=0;
}

void put_data()
{
     printf("\n\nAllocation matrix is : \n");
     for (i=0;i<n;i++)
     {
          for (j=0;j<m;j++)
          {
               printf("%d\t",a[i][j]);
          }
          printf("\n");
     }
     printf("\n\nMax Matrix is : \n");
     for (i=0;i<n;i++)
     {
          for (j=0;j<m;j++)
          {
               printf("%d\t",max[i][j]);
          }
          printf("\n");
     }
     printf("\n\nAvailable Array is : \n");
     for (i=0;i<m;i++)
          printf("%d\t",av[i]);
     
}

void calc_need()
{
     for (i=0;i<n;i++)
     {
          for (j=0;j<m;j++)
          {
               need[i][j] = max[i][j] - a[i][j];
          }
     }
     printf("\n\nNeed Array is : \n");
     for (i=0;i<n;i++)
     {
          for (j=0;j<m;j++)
          {
               printf("%d\t",need[i][j]);
          }
          printf("\n");
     }
}

int check_need(int i)
{
    flag=0;
    for (j=0;j<m;j++)
    {
         if (need[i][j]>av[j])
         {
             flag = 1;
             break;
         }
    }
    return flag;
}

void safe_state()
{
     printf("\n\n");
     for (i=0;i<n;i++)
          finish[i]=0;
     strcpy (s,"\0");
     for (i=0;i<n;i++)
     {
          if (check_need(i)==0)
          {
              for (k=0;k<m;k++)
                   av[k]=av[k]+a[i][k];
              sprintf(str,"%d",i);
              strcat(s,"P");
              strcat(s,str);
              strcat(s," ");
              puts(s);
          }
          else
              finish[i]=1;
     }
}

void res_req()
{
     safe = 0;
     printf("Enter the process number : ");
     scanf("%d",&i);
     printf("\nEnter the request : ");
     for (k=0;k<m;k++)
          scanf("%d",&req[k]);
     printf("\nEnter available array : ");
     for (j=0;j<m;j++)
          scanf("%d",&av[j]);
     for (k=0;k<m;k++)
     {
          if (req[k]>need[i][k] || req[k]>av[k])
          {
              safe = 1;
              break;
          }
     }
     
     if (safe == 0)
     {
         for (k=0;k<m;k++)
         {
              av[k] = av[k] - req[k];
              a[i][k] = a[i][k] + req[k];
              need[i][k] = need[i][k] - req[k];
         }
         printf("\nNeed array is : \n");
         for (i=0;i<n;i++)
         {
              for (j=0;j<m;j++)
              {
                   printf("%d\t",need[i][j]);
              }
              printf("\n");
         }
         put_data();
         printf("The request can be granted.....\n");
     }
     else
         printf("\nThe request can not be granted....\n");
}

void main()
{
     int p,f;
     f=0;
     get_data();
     put_data();
     calc_need();
     safe_state();
     
     for (k=0;k<m;k++)
     {
          if (finish[k]==1)
          {
              if (check_need(k)==0)
              {
                  for (p=0;p<m;p++)
                       av[p] = av[p] + a[k][p];
                  sprintf(str,"%d",k);
                  strcat(s,"P");
                  strcat(s,str);
                  strcat(s," ");
                  finish[k]=0;
              }
              else
                  f=1;
          }
     }
     if (f==0)
     {
         printf("System is in safe state.....\n");
         printf("\nSafe Sequence\n");
         puts(s);
     }
     else
         print("System is not in safe state\n");
     res_req();
}

Comments

Popular posts from this blog

Write a program to read book information (bookid, bookname, bookprice, bookqty) in file “book.dat”. Write a menu driven program to perform the following operations using Random access file: i. Search for a specific book by name. ii. Display all book and total cost

  import java . io .*; import java . util .*; class Book {       String name , id ;       int qty ;       double price , total ;       Book ( String i , String n , String p , String q )      {               name = n ;               id = i ;               qty = Integer . parseInt ( q );               price = Double . parseDouble ( p );               total = qty * price ;      }       public String toString ()      {               System . out . println ( "name\t id\t qty\t price\t total" );               String s = name + "\t" + id + "\t" + qty + "\t" + price + "\t" + total ;           ...

Define a class MyDate (day, month, year) with methods to accept and display a MyDate object. Accept date as dd, mm, yyyy. Throw user defined exception “InvalidDateException” if the date is invalid. Examples of invalid dates : 03 15 2019, 31 6 2000, 29 2 2021

  import java . io .*; import java . util .*; class InvalidDateException extends Exception {       InvalidDateException ()       {               System . out . println ( "Invalid Date" );       } } class MyDate {       int day , mon , yr ;       void accept ( int d , int m , int y )       {             day = d ;             mon = m ;             yr = y ;       }       void display ()       {             System . out . println ( "Date is valid : " + day + "/" + mon + "/" + yr );       } } class Date {       public static void main ( String args []) throws Exception       {             Scanner sc = new Sca...

Write a Java program to design a screen using Awt that will take a user name and password. If the user name and password are not same, raise an Exception with appropriate message. User can have 3 login chances only. Use clear button to clear the TextFields.

  import java . awt .*; import java . awt . event .*; import javax . swing .*; class InvalidPasswordException extends Exception {       InvalidPasswordException ()       {             System . out . println ( "Username and password is not same" );       } } public class Password extends Frame implements ActionListener {       Label uname , upass ;       TextField nametext ;       TextField passtext , msg ;       Button login , Clear ;       Panel p ;       int attempt = 0 ;       char c = '*' ;             public void login ()       {             p = new Panel ();             uname = new Label ( "Username : " , Label . CENTER );             upass = n...