Thursday, 1 November 2018

BANKERS ALGORITHM:DEAD LOCK AVOIDANCE

#include<stdio.h>
#define m1 100
int m,n,avail[m1],max[m1],alloc[m1][m1],need[m1][m1],safe[m1],req[m1][m1];
void result(){
int i,j,t=0,k=0,c=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
req[i][j]=need[i][j]-alloc[i][j];
while(c<n){
for(i=0;i<n;i++){
t=0;
if(safe[i]==1)continue;
for(j=0;j<m;j++){
if(req[i][j]<=avail[j]){
avail[j]=avail[j]-req[i][j];
t++;}
}
if(t==j){
printf("%d\t",i+1);
c++;
safe[i]=1;
for(k=0;k<m;k++)
avail[k]=avail[k]+need[i][k];
}}
}
}

int main(){
m=0;
n=0;
int i=0,j=0;
printf("Enter number of processes\n");
scanf("%d",&n);
printf("Enter number of resources\n");
scanf("%d",&m);
printf("Enter Resources available\n");
for(i=0;i<n;i++)
safe[i]=0;
for(i=0;i<m;i++)
scanf("%d",&avail[i]);
printf("Enter allocation matrix\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&alloc[i][j]);
printf("Enter max need matrix\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&need[i][j]);
printf("Safe Sequence is:\n");
result();
return 0;
}



FIFO Page Replacement Algorithm

#include <stdio.h>
int f,p,nop[100],nof[100],pf,fi;
void fifo_p();
int contains(int t);
int contains(int t){
int i=0;
if(nof[0]==-1)
return 0;
for ( i = 0; i < f; ++i)
{
if(t==nof[i])
return 1;
}
return 0;
}
void fifo_p(){
int i=0;
fi=0;
for (i = 0; i < p; ++i)
{
if(contains(nop[i])==1)
continue;
   if(nof[fi]==-1 || nof[fi]!=-1 &&contains(nop[i])==0){
    pf++;
    nof[fi]=nop[i];
    fi++;
   }
   if(fi==f-1){
    fi=0; 
      }
}
}
int main()
{int i=0;
pf=0;
printf("Enter Number of Frames\n");
scanf("%d",&f);
printf("Enter Number of Pages\n");
scanf("%d",&p);
printf("Enter page Numbers\n");
for ( i = 0; i < p; ++i)
{
scanf("%d",&nop[i]);
}
for ( i = 0; i < f; ++i)
{
nof[i]=-1;
}
fifo_p();
printf("Page Faults Found are:%d\n",pf);
return 0;
}

Optimal Page replacement Algorithm

#include <stdio.h>
int f,p,nop[100],nof[100],pf,fi,in;
void fifo_p();
int contains(int t);
int func(int l);
void print();
void print(){
int i=0;
for ( i = 0; i < f; ++i)
{
printf("%d\t",nof[i]);
}
}
int con(int n,int l[],int c){
int i=0;
for( i=0;i<c;i++){
if(l[i]==n){
return 1;
}
}
return 0;
}
int ind(int l){
int i=0;
for( i=0;i<f;i++){
if(nof[i]==nop[l]){
return i;}
}
}
int func(int l){
   int t=0,i=0;
   int lru[3]={0,0,0};
for ( i = l; i < p; ++i)
{

if(nop[i]==nof[0] && lru[0]==0){
lru[0]=i;
}
if(nop[i]==nof[1] && lru[1]==0){
lru[1]=i;}
if(nop[i]==nof[2]&&lru[2]==0){
lru[2]=i;}
}
  if(lru[0]==0)
  return 0;
   if(lru[1]==0)
  return 1;
if(lru[2]==0)
  return 2;
    if(lru[0]>lru[1] && lru[0]>lru[2])
    return 0;
    else if(lru[1]>lru[0] && lru[1]>lru[2])
    return 1;
    else
    return 2;
}
int contains(int t){
int i=0;
if(nof[0]==-1)
return 0;
for ( i = 0; i < f; ++i)
{
if(t==nof[i]){
return 1;
}
}
return 0;
}
void fifo_p(){
int i=0;
fi=0;
for (i = 0; i < p; ++i)
{
if(nof[fi]==-1){
nof[fi]=nop[i];
pf++;
fi++;

}
else if(contains(nop[i])==1){
continue;
}
else{
    printf("\n");
    fi=func(i);
    nof[fi]=nop[i];
    print();
    pf++;
   }
}
}
int main()
{
    int i=0;
pf=0;
in=0;
printf("Enter Number of Frames\n");
scanf("%d",&f);
printf("Enter Number of Pages\n");
scanf("%d",&p);
printf("Enter page Numbers\n");
for ( i = 0; i < p; ++i)
{
scanf("%d",&nop[i]);
}
for ( i = 0; i < f; ++i)
{
nof[i]=-1;
}
fifo_p();
printf("\nPage Faults Found are:%d\n",pf);
return 0;
}





Least Recently Used PAGE REPLACEMENT Algorithm

#include <stdio.h>
int f,p,nop[100],nof[100],pf,fi,in,ti[100];
void fifo_p();
int contains(int t);
int func(int l);
void print();
void print(){
int i=0;
for ( i = 0; i < f; ++i)
{
printf("%d\t",nof[i]);
}
}
int con(int n,int l[],int c){
int i=0;
for( i=0;i<c;i++){
if(l[i]==n){
return 1;
}
}
return 0;
}
int ind(int l){
int i=0;
for( i=0;i<f;i++){
if(nof[i]==nop[l]){
return i;}
}
}
int func(int l){
   int t=0,i=0;
   int lru[50];
   for (i=0;i<p;i++){
    lru[i]=-1;
   }
   i=0;
  do{
    if(con(nop[l],lru,i)){
    l--;
   }
else{
lru[i]=nop[l];
i++;
if(i==3)
break;
l--;

   } while(l>0);
  return ind(l);


}
int contains(int t){
int i=0;
if(nof[0]==-1)
return 0;
for ( i = 0; i < f; ++i)
{
if(t==nof[i]){
return 1;
}
}
return 0;
}
void fifo_p(){
int i=0;
fi=0;
for (i = 0; i < p; ++i)
{
if(nof[fi]==-1){
nof[fi]=nop[i];
pf++;
fi++;

}
else if(contains(nop[i])==1){
continue;
}
else{
    printf("\n");
    fi=func(i-1);
    nof[fi]=nop[i];
    print();
    pf++;
   }
}
}
int main()
{
    int i=0;
pf=0;
in=0;
printf("Enter Number of Frames\n");
scanf("%d",&f);
printf("Enter Number of Pages\n");
scanf("%d",&p);
printf("Enter page Numbers\n");
for ( i = 0; i < p; ++i)
{
scanf("%d",&nop[i]);
}
for ( i = 0; i < f; ++i)
{
nof[i]=-1;
}
fifo_p();
printf("\nPage Faults Found are:%d\n",pf);
return 0;
}

SEQUENTIAL FILE ALLOCATION

#include <stdio.h>
int main(){
int a1[50],n,i,j,k,nb,st;
for(i=0;i<50;i++)
a1[i]=0;
do{
k=0;
printf("Enter number of blocks and number of starting block\n");
scanf("%d%d",&nb,&st);
for(i=st;i<(st+nb);i++){
if(a1[i]==0)
k+=1;
}
if(k==nb){
for(i=st;i<(st+nb);i++){
     a1[i]=1;
     j+=1;
}
printf("File allocated successfully\n");
}
else{
printf("File cannot be allocated\n");
}
printf("Do you want to continue to insert another file\n1.YES\t2.NO\n");
scanf("%d",&i);
}while(i==1);
return 0;
}



LINKED FILE ALLOCATION

#include <stdio.h>
int main(){
int a1[50],i=0,j=0,k=0,nb=0,st=0,l=0,te=0;
for(i=0;i<50;i++)
a1[i]=0;
printf("Enter how many blocks already allocated\n");
scanf("%d",&l);
printf("Enter the block numbers\n");
for(i=0;i<l;i++){
scanf("%d",&j);
a1[j]=1;
}
do{
k=0;
printf("Enter start block number and length of file in blocks: \n");
scanf("%d%d",&st,&nb);
k=nb;
for(i=st;i<(st+k);i++){
if(a1[i]==0){
a1[i]=1;
printf("%d-->%d\n",i,1);
te++;}
else{
k++;
printf("%d is ALready occupied block\n",i);
}
}
if(te==0&&k==nb){
printf("File cannot be allocated\n");
}
printf("Do you want to continue to insert another file\n1.YES\t 2.NO\n");
scanf("%d",&i);
}while(i==1);
return 0;
}



Operating Systems:Indexed File Allocation

#include <stdio.h>

int main(){
int a1[50],a2[50],k=0,i,j,n,m;
for(i=0;i<50;i++)
{a1[i]=0;a2[i]=0;
}
do{
k=0;
printf("Enter indexed block number\n");
scanf("%d",&m);
if(a1[m]==0){
a1[m]=1;
do{
k=0;
printf("Enter number of blocks for file\n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("ENter block number\n");
scanf("%d",&a2[i]);
if(a1[a2[i]]==0)
k++;
}
if(k==n){
             for(i=0;i<n;i++){
              a1[a2[i]]=1;
             }
             printf("File allocated\n");
}
else{
     printf("Try another block set\n");
}
}while(k!=n);
}
else{
printf("Index is already assigned\n");
}
printf("Enter 1 if you want to insert other files else 0\n");
scanf("%d",&i);
}while(i==1);
}




FERMATS LITTLE THEOREM

import java.math.*; import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) {    Sca...