在进程运行过程中,若其存在所要访问的页面不在内存,而需要把他们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送到磁盘的兑换区中。但是哪个页面应该调出,须根据一定的算法来确定,这就是页面置换算法。
先进先出算法思想简单,即淘汰在内存中驻留时间最久的页面。
要实现这个算法,只需一个队列即可。下面是代码:
void show(){
printf("物理块
页
号\n");
for(int i = 0;i < 3;i ++){
printf("
%d
",i);
if(flag[i] == 0){
printf("空
闲\n");
}
else{
printf("
%d\n",team[i]);
}
}
}
}
void deal(int id){
int a = 0;
for(int i = 0;i < 3;i ++){
if(flag[i] == 0){
printf("存在空闲物理块!\n");
team[h] = id;
flag[i] = 1;
h++;
show();
return;
}
}
for(int j = 0;j < 3;j ++){
if(team[j] == id){
a = 1;
}
}
if(a == 0){
printf("页号 %d 替换为页号",team[e%3]);
team[h%3] = id;
printf(" %d !\n\n",team[h%3]);
h++;
e++;
show();
}
else{
printf("页号命中!\n\n");
show();
}
}
}
运行结果如图: