当前位置:首页 » 操作系统 » 淘汰算法

淘汰算法

发布时间: 2022-01-25 08:05:35

⑴ LRU页面淘汰算法

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

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

E

⑶ 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

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

⑷ 先进先出页面淘汰算法

#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");
}

⑸ 关于先进先出(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次

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

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

⑺ 先进先出(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 最近最久未使用算法

当前页面内容:
页面一 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 .............
缺 缺 缺 缺 缺 不缺 缺
注意这步 和下面那步

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

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

热点内容
删数据库事件 发布:2024-11-15 12:10:54 浏览:455
数据库选课管理系统 发布:2024-11-15 12:10:15 浏览:126
android音乐波形图 发布:2024-11-15 11:57:12 浏览:378
福建社保银行卡初始密码是多少 发布:2024-11-15 11:47:40 浏览:911
游戏多开用什么配置 发布:2024-11-15 11:46:51 浏览:729
管理java版本 发布:2024-11-15 11:44:03 浏览:629
ndk编译的程序如何执行 发布:2024-11-15 11:43:18 浏览:626
轻应用服务器适合搭建网站吗 发布:2024-11-15 11:36:08 浏览:246
c语言的百分号 发布:2024-11-15 11:34:24 浏览:31
一加五安卓8什么时候推送 发布:2024-11-15 11:19:40 浏览:854