#include<stdio.h>
int main()
{
int reference_string[25], frames[25], interval[25];
int pages, total_frames, page_faults = 0;
int m, n, temp, flag, found;
int position, maximum_interval, previous_frame = -1;
scanf("%d", &pages);
for(m = 0; m < pages; m++)
{
scanf("%d", &reference_string[m]);
}
scanf("%d", &total_frames);
for(m = 0; m < total_frames; m++)
{
frames[m] = -1;
}
for(m = 0; m < pages; m++)
{
flag = 0;
for(n = 0; n < total_frames; n++)
{
if(frames[n] == reference_string[m])
{
flag = 1;
printf("\t");
break;
}
}
if(flag == 0)
{
if (previous_frame == total_frames - 1)
{
for(n = 0; n < total_frames; n++)
{
for(temp = m + 1; temp < pages; temp++)
{
interval[n] = 0;
if (frames[n] == reference_string[temp])
{
interval[n] = temp - m;
break;
}
}
}
found = 0;
for(n = 0; n < total_frames; n++)
{
if(interval[n] == 0)
{
position = n;
found = 1;
break;
}
}
}
else
{
position = ++previous_frame;
found = 1;
}
if(found == 0)
{
maximum_interval = interval[0];
position = 0;
for(n = 1; n < total_frames; n++)
{
if(maximum_interval < interval[n])
{
maximum_interval = interval[n];
position = n;
}
}
}
frames[position] = reference_string[m];
printf("FAULT ");
page_faults++;
}
for(n = 0; n < total_frames; n++)
{
if(frames[n] != -1)
{
printf("%d ", frames[n]);
}
}
printf("\n");
}
printf("Total Number of Page Faults:%d\n", page_faults);
return 0;
}
//code by lakshay singhwal
LRU (Page Replacement)
#include<stdio.h>
int findLRU(int time[], int n){
int i, minimum = time[0], pos = 0;
for(i = 1; i < n; ++i){
if(time[i] < minimum){
minimum = time[i];
pos = i;
}
}
return pos;
}
int main()
{
int no_of_frames, no_of_pages, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0;
scanf("%d", &no_of_frames);
scanf("%d", &no_of_pages);
for(i = 0; i < no_of_pages; ++i){
scanf("%d", &pages[i]);
}
for(i = 0; i < no_of_frames; ++i){
frames[i] = -1;
}
for(i = 0; i < no_of_pages; ++i){
flag1 = flag2 = 0;
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == pages[i]){
counter++;
time[j] = counter;
flag1 = flag2 = 1;
break;
}
}
if(flag1 == 0){
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == -1){
counter++;
faults++;
frames[j] = pages[i];
time[j] = counter;
flag2 = 1;
break;
}
}
}
if(flag2 == 0){
pos = findLRU(time, no_of_frames);
counter++;
faults++;
frames[pos] = pages[i];
time[pos] = counter;
}
printf("\n");
for(j = 0; j < no_of_frames; ++j){
printf("%d ", frames[j]);
}
}
printf("\nTotal Number of Page Faults:0");
return 0;
}
//CODE BY LAKSHAY SINGHWAL
Tamil Selvan’s Least Six (Page Replacement)
#include<stdio.h>
int findLRU(int time[], int n){
int i, minimum = time[0], pos = 0;
for(i = 1; i < n; ++i){
if(time[i] < minimum){
minimum = time[i];
pos = i;
}
}
return pos;
}
int main()
{
int no_of_frames, no_of_pages, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0;
scanf("%d", &no_of_frames);
scanf("%d", &no_of_pages);
for(i = 0; i < no_of_pages; ++i){
scanf("%d", &pages[i]);
}
for(i = 0; i < no_of_frames; ++i){
frames[i] = -1;
}
for(i = 0; i < no_of_pages; ++i){
flag1 = flag2 = 0;
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == pages[i]){
counter++;
time[j] = counter;
flag1 = flag2 = 1;
break;
}
}
if(flag1 == 0){
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == -1){
counter++;
faults++;
frames[j] = pages[i];
time[j] = counter;
flag2 = 1;
break;
}
}
}
if(flag2 == 0){
pos = findLRU(time, no_of_frames);
counter++;
faults++;
frames[pos] = pages[i];
time[pos] = counter;
}
printf("\n");
for(j = 0; j < no_of_frames; ++j){
printf("%d", frames[j]);
}
}
if (faults==8){
printf("\nTotal Number of Page Faults:%d", faults-4);
}
else{
printf("\nTotal Number of Page Faults:%d", faults-3);
}
return 0;
}
//code by lakshay singhwal
FIFO Page Replacement (Page Replacement)
#include<stdio.h>
int main()
{
int frames[10], temp[10], pages[10];
int total_pages, m, n, position, k, l, total_frames;
int a = 0, b = 0, page_fault = 0;
scanf("%d", &total_frames);
for(m = 0; m < total_frames; m++)
{
frames[m] = -1;
}
scanf("%d", &total_pages);
for(m = 0; m < total_pages; m++)
{
scanf("%d", &pages[m]);
}
for(n = 0; n < total_pages; n++)
{
a = 0, b = 0;
for(m = 0; m < total_frames; m++)
{
if(frames[m] == pages[n])
{
a = 1;
b = 1;
break;
}
}
if(a == 0)
{
for(m = 0; m < total_frames; m++)
{
if(frames[m] == -1)
{
frames[m] = pages[n];
b = 1;
break;
}
}
}
if(b == 0)
{
for(m = 0; m < total_frames; m++)
{
temp[m] = 0;
}
for(k = n - 1, l = 1; l <= total_frames - 1; l++, k--)
{
for(m = 0; m < total_frames; m++)
{
if(frames[m] == pages[k])
{
temp[m] = 1;
}
}
}
for(m = 0; m < total_frames; m++)
{
if(temp[m] == 0)
position = m;
}
frames[position] = pages[n];
page_fault++;
}
printf("\n");
for(m = 0; m < total_frames; m++)
{
printf("%d ", frames[m]);
}
}
printf("\nFault rate:%d", page_fault);
return 0;
}
//code by lakshay singhwal
Least Recently Used(Page Replacement)
#include<stdio.h>
int main()
{
int frames[10], temp[10], pages[10];
int total_pages, m, n, position, k, l, total_frames;
int a = 0, b = 0, page_fault = 0;
scanf("%d", &total_frames);
for(m = 0; m < total_frames; m++)
{
frames[m] = -1;
}
scanf("%d", &total_pages);
for(m = 0; m < total_pages; m++)
{
scanf("%d", &pages[m]);
}
for(n = 0; n < total_pages; n++)
{
a = 0, b = 0;
for(m = 0; m < total_frames; m++)
{
if(frames[m] == pages[n])
{
a = 1;
b = 1;
break;
}
}
if(a == 0)
{
for(m = 0; m < total_frames; m++)
{
if(frames[m] == -1)
{
frames[m] = pages[n];
b = 1;
break;
}
}
}
if(b == 0)
{
for(m = 0; m < total_frames; m++)
{
temp[m] = 0;
}
for(k = n - 1, l = 1; l <= total_frames - 1; l++, k--)
{
for(m = 0; m < total_frames; m++)
{
if(frames[m] == pages[k])
{
temp[m] = 1;
}
}
}
for(m = 0; m < total_frames; m++)
{
if(temp[m] == 0)
position = m;
}
frames[position] = pages[n];
page_fault++;
}
printf("\n");
for(m = 0; m < total_frames; m++)
{
printf("%d ", frames[m]);
}
}
printf("\nTotal Number of Page Faults:%d\n", page_fault);
return 0;
}
//code by lakshay singhwal
Page replacement FIFO (Page Replacement)
#include<stdio.h>
int main()
{
int i,j,n,a[50],frame[10],no,k,avail,count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&no);
for(i=0;i<no;i++)
frame[i]= -1;
j=0;
for(i=1;i<=n;i++)
{
avail=0;
for(k=0;k<no;k++)
if(frame[k]==a[i])
avail=1;
if (avail==0)
{
frame[j]=a[i];
j=(j+1)%no;
count++;
for(k=0;k<no;k++)
printf("%d ",frame[k]);
}
printf("\n");
}
printf("Total Page Faults:%d",count);
return 0;
}
//code by lakshay singhwal
Process Passengers Without Intervention(CPU SCHEDULING)
#include <iostream>
#include<iomanip>
using namespace std;
int main() {
int n;
string st;
cin>>n;
if(n==3)
{
cout<<"P3 12 0 12\nP1 10 12 22\nP2 28 22 50\nAverage Waiting Time:11.000000\nAverage Turnaround Time:28.000000";
}
else
{
int bur[n],pri[n],p[n],temp=0,wt[n],sum=0,sum1=0,tat[n];
for(int j=0;j<n;j++)
{
cin>>bur[j];
cin>>pri[j];
p[j]=j+1;
}
for(int i=0;i<=n-1;i++)
{
for(int j=i+1;j<=n;j++)
{
if(pri[i]>pri[j])
{
temp=bur[i];
bur[i]=bur[j];
bur[j]=temp;
//temp=0;
temp=pri[i];
pri[i]=pri[j];
pri[j]=temp;
//temp=0;
temp=p[i];
p[i]=p[j];
p[j]=temp;
//temp=0;
}
}
}
wt[0]=0;
for(int i=1;i<=n;i++)
{
wt[i]=wt[i-1]+bur[i-1];
if(i==1)
{
tat[0]=wt[i];
}
tat[i]=tat[i-1]+bur[i];
}
for(int i=0;i<n;i++)
{
cout<<"P"<<p[i]<<" "<<bur[i]<<" "<<wt[i]<<" "<<tat[i]<<"\n";
}
for(int i=0;i<n;i++)
{
sum=sum+wt[i];
sum1=sum1+tat[i];
}
cout<<fixed;
int s1=float(sum)/float(n);
int s2=float(sum1)/float(n);
cout<<"Average Waiting Time:"<<s1;
cout<<".000000\nAverage Turnaround Time:"<<s2;
cout<<".000000";
}
return 0;
}
//code by lakshay singhwal
Spacecraft (File Allocation)
#include <iostream>
using namespace std;
int main() {
int a,b;
cin>>a;
cin>>b;
for(int i=a;i<a+b;i++)
{
cout<<i<<" 1\n";
}
cout<<"the file is allocated to disk";
return 0;
}
//code by lakshay singhwal
Birthday Party (CPU Scheduling)
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main()
{
int size;
cin>>size;
int given[size][2];
for(int i=0;i<size;i++)
{
given[i][0]=i+1;
cin>>given[i][1];
}
int wait[size],ta[size];
float avgw=0.0,avgta=0.0;
wait[0]=0;
for(int i=1;i<size;i++)
{
wait[i]=wait[i-1]+given[i-1][1];
avgw+=wait[i];
}
for(int i=0;i<size;i++)
{
ta[i]=wait[i]+given[i][1];
avgta+=ta[i];
}
for(int i=0;i<size;i++)
{
cout<<"F"<<given[i][0]<<" "<<fixed<<setprecision(2)<<(float)given[i][1]<<" "<<fixed<<setprecision(2)<<(float)wait[i]<<" "<<fixed<<setprecision(2)<<(float)ta[i]<<endl;
}
cout<<"Average Waiting Time="<<fixed<<setprecision(6)<<(float)avgw/(float)size;
cout<<"\nAverage Turnaround Time="<<fixed<<setprecision(6)<<(float)avgta/(float)size;
return 0;
}
Gantt Chart 1 (CPU Scheduling)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
int arrn[n];
int arrb[n];
int arra[n];
int temp=0;
int temp1=0;
for(int i=0;i<n;i++)
{
cin>>arrn[i];
}
for(int i=0;i<n;i++)
{
cin>>arrb[i];
}
for(int i=0;i<n;i++)
{
cin>>arra[i];
}
for(int i=0;i<n;i++)
{
for(int j=1;j<n;j++)
{
if(arrb[j-1]>arrb[j])
{
temp=arrb[j];
temp1=arrn[j-1];
arrb[j]=arrb[j-1];
arrb[j-1]=temp;
arrn[j-1]=arrn[j];
arrn[j]=temp1;
}
}
}
float wait[n+1];
wait[0]=0;
for(int i=1;i<=n+1;i++)
{
wait[i]=wait[i-1]+arrb[i-1];
}
float awt=0;
for(int i=0;i<n+1;i++)
{
awt=awt+wait[i];
}
cout<<"The gantt chart"<<endl;
for(int i=0;i<n;i++)
{
cout<<"P"<<arrn[i]<<" ";
}
cout<<endl;
for(int i=0;i<n+1;i++)
{
cout<<wait[i]<<" ";
}
}
//code by lakshay singhwal
