问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个程序的页面走向,FIFO和LRU页面置换算法

发布网友 发布时间:2022-05-05 15:32

我来回答

4个回答

热心网友 时间:2022-06-27 16:51

#include"stdio.h"
#include"stdlib.h"
#include"time.h"

void FIFO(void);
void LRU(void);

char a;
int m=4,n=12,i,y[12]={1,2,3,4,1,2,5,1,2,3,4,5}; /*m为物理块数,n为要访问的页面数*/
typedef struct page{
int num;
int time;
}Page;
Page x[10];

int GetMax(page *x) /*求出那个物理块中的页面呆的时间最长,返回物理块号*/
{
int i;
int max=-1;
int tag=0;
for(i=0;i<m;i++)
{
if(x[i].time>max)
{ max=x[i].time;
tag=i;
}
}
return tag;
}

void Xunhuan()
{
printf("Please select 1:FIFO算法\n 2:LRU算法\n");
scanf("%s",&a);
printf("物理块数:4\n");
//scanf("%d",&m);
for(i=0;i<m;i++) /*将空的物理块中数据置为-1*/
{
x[i].num=-1;
}
printf("所要访问的页面数:12\n");
//scanf("%d",&n);
//srand(time(NULL));

printf("所要访问的页面号序列为:");
for(i=0;i<n;i++)
printf("%d ",y[i]);
printf("\n");
printf("页面置换步骤如下:\n");
switch(a)
{
case '1':FIFO();break;
case '2':LRU(); break;
}
}

void main()
{
char a;
Xunhuan();
while(1)
{
printf("Continue or Exit:C/Anykey:\n");
scanf("%s",&a);
if(a=='c'||a=='C')
Xunhuan();
else break;
}
exit(0);
}

void FIFO(void)
{
int i,j,u;
for(i=0;i<m;i++)
x[i].time=0;
x[0].num=y[0];
x[0].time=1;
printf(" %d \n",x[0].num);
for(i=1;i<n;i++)
{ u=0;
for(j=0;j<m;j++)
if(x[j].num==y[i])
{
u=1;
break;
}
if(u!=1&&x[m-1].num!=-1)
{
j=GetMax(x);
x[j].num=y[i];
x[j].time=0;
}
if(u!=1&&x[m-1].num==-1)
{
for(j=0;j<m;j++)
{
if(x[j].num==-1)
{x[j].num=y[i];
break;}
}
}
for(j=0;j<m;j++)
if(x[j].num!=-1)
x[j].time++;

for(j=0;j<m;j++)
if(x[j].num==-1)
printf("%2c ",32);
else
printf("%2d ",x[j].num);
printf("\n");
}
}

void LRU()
{
int i,j,u;
for(i=0;i<m;i++)
x[i].time=0;
x[0].num=y[0];
x[0].time=1;
printf(" %d \n",x[0].num);
for(i=1;i<n;i++)
{ u=0;
for(j=0;j<m;j++)
if(x[j].num==y[i]) /*物理块中存在相同页面*/
{
x[j].time=0; /*将相同的物理块的time置为0*/
u=1;
break;
}
if(u!=1&&x[m-1].num!=-1) /*物理块中无相同页面且物理块已填满*/
{
j=GetMax(x);
x[j].num=y[i];
x[j].time=0; /*将刚替换的页面所在的物理块time置为0*/
}
if(u!=1&&x[m-1].num==-1) /*物理块中无相同页面且物理块未填满*/
{
for(j=0;j<m;j++)
{
if(x[j].num==-1)
{x[j].num=y[i];
break;}
}
}
for(j=0;j<m;j++)
if(x[j].num!=-1)
x[j].time++; /*每执行完一次time加1*/

for(j=0;j<m;j++)
if(x[j].num==-1)
printf("%2c ",32);
else
printf("%2d ",x[j].num);
printf("\n"); /*格式化输出*/
}
}

热心网友 时间:2022-06-27 16:51

FIFO(先进先出页面置换算法):
1 2 3 4 1 2 5 1 2 3 4 5
————————————
1 1 1 1 1 1 2 3 4 5 1 2
2 2 2 2 2 3 4 5 1 2 3
3 3 3 3 4 5 1 2 3 4
4 4 4 5 1 2 3 4 5
X X X X X X X X X X
共10次缺页中断

LRU(最近最少使用页面置换算法):
1 2 3 4 1 2 5 1 2 3 4 5
————————————
1 1 1 1 2 3 4 4 4 5 1 2
2 2 2 3 4 1 2 5 1 2 3
3 3 4 1 2 5 1 2 3 4
4 1 2 5 1 2 3 4 5
X X X X X X X X

共八次缺页中断

热心网友 时间:2022-06-27 16:52

FIFO:
1
12
123
1234
1234 命中
1234 命中
5234
5134
5134 命中
5134 命中
5134 命中

缺页7次

LRU
1
12
123
1234
1234 命中
1234 命中
1254
1254 命中
1254 命中
1253
1453
1453 命中

缺页为7次

热心网友 时间:2022-06-27 16:52

上面那个是我回答的,刚才忘了登陆...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
门?049期父母欲其改娶五字金口决,开是什么特号生肖 支付宝怎么把银行卡的钱转到余额里呢? 下载wampserver5,安装并启动后不能启用apache、mysql的功能,请问这是怎... wampserver安装多个版本phpmysqlapache 四季豆有哪些吃法值得推荐? 四季豆牛肉馅饼的家常做法是什么? 香煎四季豆豆腐饼怎么做好吃 腾讯会议没声音怎么修复-腾讯会议没有声音修复办法 西安市高新区所有幼儿园 西安高新第二初级中学学区有哪些小区 这个FIFO算法求帮忙。 页面置换算法 流程图 关于梦幻跑商的问题!! fifo算法怎么写 谁能详细介绍下fifo???谢谢!!! 操作系统题LRU,FIFO算法怎么做? FIFO算法(假定开始时先把1,2,3,4号页面装入内存) 我己开通农行掌上银行业务,怎么登录不上农行掌上银行客户端呢? 先进先出页面置换算法的实现过程 急急急!中国农业银行网上银行登录不了!高分! 草莓已经开花结果了 叶子为什么慢慢枯萎了 草莓精灵dj 中国农业银行在电脑上登录不上去,验证码老是变,是怎么回事啊? 听说现在有很多草莓是激素草莓,买草莓的时候怎么辨别呢? dota caomei是男是女 求2011年 6月/9月/12月 三份入党积极分子思想汇报。 求LOL WE战队队员若风和卷毛在国服IONIA区的ID! 求草莓100%动画片全集下载+OVA 怎样使用泡打粉效果发泡效果更好,是先把泡打粉在水里融化后加入面粉里搅拌好,还是直接添加进面粉里搅拌 联通电话卡不用了 话费怎么办? fifo算法使用普遍吗 为什么我的网络上网不卡玩游戏卡 电脑配置没问题的 我的电脑能吃鸡,玩一些大型游戏,打英雄联盟却会掉帧,卡顿。网络是绝对没问题的,用笔记本连接打不卡? 电脑玩游戏卡,但网速没问题怎么办 玩游戏卡顿 配置网络没问题 数学手抄报怎么做。要图。 数学手抄报怎么画!??!! 数学手抄报图片小小数学家四年级 数学手抄报图片怎么又漂亮 数学手抄报的插图。急急急!!! 电表分表用电量怎么计算, 我心中的数学手抄报图片 怎样整理数学手抄报图片 电表是是多少度,怎么计算电费。 为什么信封后面的ZL是什么意思 做一个ZL信封(不计粘贴处)至少需要多少平方分米的材料? 信封的规格型号 求助,ZL信封打印! 华为c8812E下载什么视频播放器比较好? 什么是NVIDIA显卡??什么是 ATI显卡??