#include<stdio.h>
int main( )
{
int i, j, k, p, r, flag= 1 , c, c1= 0 ;
int alloc[ 10 ] [ 10 ] , max[ 10 ] [ 10 ] , avail[ 10 ] , need[ 10 ] [ 10 ] , finish[ 10 ] ;
printf ( "\n Enter the number of processes" ) ; printf ( "\n Enter the number of resources" ) ; printf ( "\n Enter the allocation matrix" ) ; for ( i= 0 ; i< p; i++ )
{
for ( j= 0 ; j< r; j++ )
{
scanf ( "%d" ,& alloc
[ i
] [ j
] ) ;
}
}
printf ( "\n Enter the max matrix" ) ; for ( i= 0 ; i< p; i++ )
{
for ( j= 0 ; j< r; j++ )
{
}
}
printf ( "\n Enter the available matrix" ) ; for ( i= 0 ; i< r; i++ )
{
}
printf ( "\n the need matrix is:" ) ; for ( i= 0 ; i< p; i++ )
{
for ( j= 0 ; j< r; j++ )
{
need[ i] [ j] = max[ i] [ j] - alloc[ i] [ j] ;
}
}
for ( i= 0 ; i< p; i++ )
{
finish[ i] = 0 ;
}
while ( flag)
{
flag= 0 ;
for ( i= 0 ; i< p; i++ )
{
c= 0 ;
for ( j= 0 ; j< r; j++ )
{
if ( finish[ i] == 0 && need[ i] [ j] <= avail[ j] )
{
c++;
if ( c== r)
{
for ( k= 0 ; k< r; k++ )
{
avail[ k] = avail[ k] + alloc[ i] [ k] ;
}
flag= 1 ;
finish[ i] = 1 ;
i= p;
}
}
}
}
}
for ( i= 0 ; i< p; i++ )
{
if ( finish[ i] == 1 )
{
c1++;
}
else
{
}
}
if ( c1== p)
{
printf ( "\n system is in safe state" ) ; }
else
{
printf ( "\n system is not in safe state" ) ; }
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IG1haW4oKQp7CglpbnQgaSxqLGsscCxyLGZsYWc9MSxjLGMxPTA7CglpbnQgYWxsb2NbMTBdWzEwXSxtYXhbMTBdWzEwXSxhdmFpbFsxMF0sbmVlZFsxMF1bMTBdLGZpbmlzaFsxMF07CglwcmludGYoIlxuRW50ZXIgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMiKTsKCXNjYW5mKCIlZCIsJnApOwoJcHJpbnRmKCJcbkVudGVyIHRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIik7CglzY2FuZigiJWQiLCZyKTsKCXByaW50ZigiXG5FbnRlciB0aGUgYWxsb2NhdGlvbiBtYXRyaXgiKTsKCWZvcihpPTA7aTxwO2krKykKCXsKCQlmb3Ioaj0wO2o8cjtqKyspCgkJewoJCQlzY2FuZigiJWQiLCZhbGxvY1tpXVtqXSk7CgkJCQoJCX0KCX0KCXByaW50ZigiXG5FbnRlciB0aGUgbWF4IG1hdHJpeCIpOwoJZm9yKGk9MDtpPHA7aSsrKQoJewoJCWZvcihqPTA7ajxyO2orKykKCQl7CgkJCXNjYW5mKCIlZCIsJm1heFtpXVtqXSk7CgkJfQoJfQoJcHJpbnRmKCJcbkVudGVyIHRoZSBhdmFpbGFibGUgbWF0cml4Iik7Cglmb3IoaT0wO2k8cjtpKyspCgl7CgkJc2NhbmYoIiVkIiwmYXZhaWxbaV0pOwoJfQoJcHJpbnRmKCJcbnRoZSBuZWVkIG1hdHJpeCBpczoiKTsKCWZvcihpPTA7aTxwO2krKykKCXsKCQlwcmludGYoIlxuIik7CgkJZm9yKGo9MDtqPHI7aisrKQoJCXsKCQkJbmVlZFtpXVtqXT1tYXhbaV1bal0tYWxsb2NbaV1bal07CgkJCXByaW50ZigiJWQgIixuZWVkW2ldW2pdKTsKCQl9Cgl9Cglmb3IoaT0wO2k8cDtpKyspCgl7CgkJZmluaXNoW2ldPTA7Cgl9Cgl3aGlsZShmbGFnKQoJewoJCWZsYWc9MDsKCQlmb3IoaT0wO2k8cDtpKyspCgkJewoJCQljPTA7CgkJCWZvcihqPTA7ajxyO2orKykKCQkJewoJCQkJaWYoZmluaXNoW2ldPT0wICYmIG5lZWRbaV1bal08PWF2YWlsW2pdKQoJCQkJewoJCQkJCWMrKzsKCQkJCQlpZihjPT1yKQoJCQkJCXsKCQkJCQkJZm9yKGs9MDtrPHI7aysrKQoJCQkJCQl7CgkJCQkJCQlhdmFpbFtrXT1hdmFpbFtrXSthbGxvY1tpXVtrXTsKCQkJCQkJfQoJCQkJCQlmbGFnPTE7CgkJCQkJCWZpbmlzaFtpXT0xOwoJCQkJCQlwcmludGYoIlAlZC0+IixpKTsKCQkJCQkJaT1wOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWZvcihpPTA7aTxwO2krKykKCXsKCQlpZihmaW5pc2hbaV09PTEpCgkJewoJCQljMSsrOwoJCX0KCQllbHNlCgkJewoJCQlwcmludGYoIlAlZC0+IixpKTsKCQl9Cgl9CglpZihjMT09cCkKCXsKCQlwcmludGYoIlxuc3lzdGVtIGlzIGluIHNhZmUgc3RhdGUiKTsKCX0KCWVsc2UKCXsKCQlwcmludGYoIlxuc3lzdGVtIGlzIG5vdCBpbiBzYWZlIHN0YXRlIik7Cgl9CglyZXR1cm4gMDsKCQoJCgkKfQ==