导航:首页 > 源码编译 > 淘汰算法

淘汰算法

发布时间:2022-01-22 12:19:31

Ⅰ 最佳页面淘汰算法是怎样计算的

1; 50%指令顺序执行
2;25%指令均匀散步在前地址部分
3;25%指令均匀散步在后地址部分
题目中选用:命中率=1-页面失败次数(只选用2的幂次)/叶地址流长度
算法:opt fifo rlu(定义)(至少用两个算法)程序流程图开始:产生给定长度符合假定的指令地址流->为每一个指令地址的成对应的访问页号->置初算size=1~8(1,2,4,8)(页面大上)实存
=4~32(4,8,16,32)->输入淘汰算法->A->ALG=FIFO(OR)(LRU)->FIFO->用FIFO计算命中率->用LRU计算命中率->输出结果->结束算法定义:理想淘汰算法--最佳页面算法(OPT)
淘汰以后不再需要的或最远的将来才会用到的页面
先进先出页面淘汰算法(FIFO)
选择在内存中驻留时间最长的页并淘汰之
最近最少使用页面淘汰算法(LRU)
选择最后一次访问时间距离当前时间最长的一页并淘汰之即淘汰没有使用的时间最长的页.

Ⅱ 在淘汰策略的先进先出淘汰算法来说,下列说法正确的是()

E

Ⅲ 数据库LRU 页面淘汰算法

饿,LRU 最近最久未使用算法

当前页面内容:
页面一 2 2 2 1 1 1 4

页面二 3 3 3 5 5 5

页面三 2 2 2 2 2

页面访问顺序 2 3 2 1 5 2 4 .............
缺 缺 缺 缺 缺 不缺 缺
注意这步 和下面那步

这只是个算法,和数据库之类的没关系

我晕 ,几行内容咋对不上,我编辑时是正常的

Ⅳ 分页虚拟存储管理中有哪几种常见的页面淘汰算法

理想置换算法
最近最久未使用(LRU)
最少使用
先进先出
clock置换算法

Ⅳ 先进先出页面淘汰算法

#include<stdio.h>
#include<stdlib.h>
#define max 30
typedef struct{
int visit_number;//要访问的页面号
}nu,number[max];
int *memoryblock;//主存中有三个主存块,可装三个页面
void init_memoryblock(int n)//初始化主存块
{
int i=1;
memoryblock=(int*)malloc(sizeof(int));//分配空间
for(i=1;i<=n;i++)
{
memoryblock[i]=-1;//开始时候没有页面进入,初始为-1
}
}
void init_visitpage(number num,int n)//n表示要访问的页面的个数
{
int i=0;
int j=3;
printf("输入要访问的页面号: ");
for(i=1;i<=n;i++)
{
scanf("%d",&num[i].visit_number);
}
printf("\n");
}
void FIFO_page_dispatch(number num,int n)//FIFO页面调度算法
{
int i,j=3,temp,counter=0;
for(i=1;i<=n;i++)
{
//----------------------------页面在主存中-------------------------------
for(j=3;j>=1;j--)
{
if(num[i].visit_number==memoryblock[j])//////要访问的页面在主存中
{
printf("(%d)页面在主存块中,换出和换进都是%d号页面:\n",i,memoryblock[j]);
}
break;
}
//-----------------------------------------------------------------------
//----------------------------页面不在主存中-----------------------------
if(num[i].visit_number!=memoryblock[1]&&num[i].visit_number!=memoryblock[2]&&
num[i].visit_number!=memoryblock[3])/////////////[ 1 ]
/*内存中没有要访问的页面,中断*/
{
if(memoryblock[1]!=-1&&memoryblock[2]!=-1&&memoryblock[3]!=-1)
{
temp=memoryblock[3];
memoryblock[3]=memoryblock[2];
memoryblock[2]=memoryblock[1];
memoryblock[1]=num[i].visit_number;
//---------------------------------
printf("(%d)——页面发生置换:",i);
printf("换出(%d号)页面—",temp);
printf("换进(%d)号页面\n",num[i].visit_number);
counter++;
}
for(j=3;j>=1;j--)//////////////[ 2 ]
{
if(memoryblock[j]==-1)//还有空闲主存块
{
printf("(%d)有空闲主存块,%d号页面直接调入:\n",i,i);
memoryblock[j]=num[i].visit_number;
break;
}

}
//-----------------------------移动主存块-------------------
}
//------------------------------------------------------------------------
}
printf("\n共产生 %d 次页面置换:",counter);
}
void main()
{
number num;
int m,n;
printf("输入要访问页面串的个数(<30)和内存块个数:");
{
scanf("%d%d",&n,&m);
getchar();
}
init_memoryblock(m);//初始化主存块
init_visitpage(num,n);//输入要访问的页面号顺序
FIFO_page_dispatch(num,n);//FIFO调度
printf("\n");
}

Ⅵ lru 淘汰算法

最佳算法(OPT算法)

当需要淘汰一个内存页面时,这种算法力图选择该进程内存各个页面中永远不再需要的页,若找不到,则选择最久以后才会用到的页。这种算法有最小的缺页率。问题是它需要知道运行进程今后的整个访问踪迹,这往往难以做到,因而它只有理论上的意义。

先进先出算法(FIFO算法)

FIFO算法维护一个先进先出队列,队列长度为分配给这个进程的页面数M。开始时队列是空的,装入进程的第一页即可启动运行,当访问到某个不在内存的页面时,把它从辅存调入,加入FIFO队列的尾部。

最久未使用淘汰算法(LRU算法)

LRU(least recently used)算法维护一个后进先出栈,栈大小为分配给这个进程的页面数M。开始时栈是空的,装入进程的第一页即可启动运行,当访问到某个不在内存的页面时,把它从辅存调入,加入栈顶。

FIFO和LRU算法的例子:http://osjx.8100988.net/LWR/RAM/HLM/FIFOsf.HTM

CLOCK算法

又叫NRU(Not Recently Used)算法,NRU又名近似的LRU置换算法。
当一存储块中的页面访问时,其相应的“页面访问”位由硬件自动置“1”,而由页面管理体制软件周期性地(设周期为T,其值通常为几百毫秒),把所有的页面访问位重新置为“0”。这样,在时间T内,某些被访问的页面,其对应的访问位为“1”而未访问的页面,其对应的访问位为“0”。查寻页面访问位为“0”的页面。在查找过程中,那些被访问的页所对应的访问位被重新置为“0”。由此可见,实际上这种近似LRU算法,已经退化成一种“最近不用”的算法NRU(Not Recently Used)。

CLOCK算法的例子:http://www.cskaoyan.com/thread-4898-1-1.html

其实这个问题我也不太会,去临时查的资料,第一个例子是我自己算的,不知道我理解得对不对;如果有错误的地方还请指正,共同进步~其他的算法的例子我都给了链接,你自己去看吧。

Ⅶ 关于先进先出(FIFO)页面淘汰算法

输入:1,2,3,4,1,2,5,1,2,3,4,5

先进先出,就是保存最近3个访问的记录在内存中
, , <—1 中断1次
, ,1<—2 中断1次
, 1,2<—3 中断1次
1,2,3 <—4 中断1次
2,3,4 <—1 中断1次
3,4 ,1<—2 中断1次
4,1,2<—5 中断1次
1,2,5<—1 命中,不中断
2,5,1 <—2 命中,不中断
5,1,2<—3 中断1次
1,2,3 <—4 中断1次
2,3,4 <—5 中断1次
3,4,5

累计中断12次

Ⅷ 先进先出(FIFO)淘汰算法怎么算

输入:123412512345 先进先保存近3访问记录内存 , , <—1 断1 , ,1<—2 断1 , 1,2<—3 断1 1,2,3 <—4 断1 2,3,4 <—1 断1 3,4 ,1<—2 断1 4,1,2<—5 断1 1,2,5<—1 命断 2,5,1 <—2 命断 5,1,2<—3 断1 1,2,3 <—4 断1 2,3,4 <—5 断1 3,4,5 累计断12

Ⅸ LRU页面淘汰算法

LRU算法
最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
LRU的实现(需要“堆栈”支持)
可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。

阅读全文

与淘汰算法相关的资料

热点内容
单片机下载口叫什么 浏览:186
程序员的道 浏览:924
云服务器不实名违法吗 浏览:556
怎样查看文件夹图片是否重复 浏览:993
文件怎么导成pdf文件 浏览:805
打开sql表的命令 浏览:101
安卓手机如何面部支付 浏览:37
天元数学app为什么登录不上去 浏览:822
明日之后为什么有些服务器是四个字 浏览:102
安卓系统l1是什么意思 浏览:24
服务器一直崩应该用什么指令 浏览:922
cm202贴片机编程 浏览:729
php构造函数带参数 浏览:178
解压电波歌曲大全 浏览:345
为啥文件夹移到桌面成word了 浏览:859
命令符的安全模式是哪个键 浏览:760
编程中学 浏览:957
单片机求助 浏览:995
ug加工侧面排铣毛坯怎么编程 浏览:273
程序员有关的介绍 浏览:738