-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptimal.c
More file actions
63 lines (63 loc) · 1.21 KB
/
Copy pathoptimal.c
File metadata and controls
63 lines (63 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include<stdio.h>
int main()
{
int no_of_frames,no_of_pages,frames[10],pages[30],temp[10],flag1,flag2,flag3,i,j,k,pos,
max,faults=0;
printf("Enter number of frames:");
scanf("%d",&no_of_frames);
printf("Enter number of pages:");
scanf("%d",&no_of_pages);
printf("Enter page reference string:");
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]){
flag1=flag2=1; break;
}
}
if(flag1==0){
for(j=0;j<no_of_frames;++j){
if(frames[j]==-1){
faults++;
frames[j]=pages[i];
flag2=1; break;
}
}
}
if(flag2==0){
flag3=0;
for(j=0;j<no_of_frames;++j)
{ temp[j]=-1;
for(k=i+1;k<no_of_pages;++k){
if(frames[j]==pages[k]){
temp[j]=k; break;
}
}
}
for(j=0;j<no_of_frames;++j){
if(temp[j]==-1){
pos=j; flag3=1;
break;
}
} if(flag3==0){ max=temp[0]; pos=0; for(j=1;j<no_of_frames;++j){ if(temp[j]>max)
{ max=temp[j]; pos=j;
}
}
}
frames[pos]=pages[i]; faults++;
}
printf("\n");
for(j=0;j<no_of_frames;++j){
printf("%d\t",frames[j]);
}
}
printf("\n\nTotal Page Faults=%d",faults);
return 0;
}