LRU   最近最少使用页面置换算法

思路:

代码:

#include<stdio.h>
#include<string.h>void Change(int P[],int x,int y){//将p数组中x位置的元素挪到y位置 //我们默认传参进来的 x大于 y  也就是默认往前挪  故不用判断x y大小关系了 int temp= P[x];while(x!=y){  //依次后移 P[x]=P[x-1];x--;} P[y]=temp;
} int main(){int PageNum[100];int Count[100];int Sum,MaxNum;memset(Count,0,sizeof(Count));scanf("%d",&Sum);//总数 scanf("%d",&MaxNum);//内存可存放页框数量 for(int i=1;i<=17;i++)  //初始化 scanf("%d",&PageNum[i]); //页面调度int LackPage=0;int q=1,w=1;int flag=0;for(int i=1;i<=Sum;i++){if(i==1){  //第一个必然要直接加入 Count[ PageNum[i] ]++;w++; //此时为第一个 无需考虑内存已满情况 LackPage++;//缺页次数加1 }else{flag=0;for(int j=q;j<w;j++){ if(PageNum[j]==PageNum[i]){//如果内存中已存在该页面flag=j;//记录该页面位置 }}if(flag!=0){ //内存中已存在该页面,需要把该页面挪到第一个位置 //ps://若flag-q=0 说明已经是第一个位置了 就不用挪 //所以 小于0  需要挪 if( (flag-q) > 0){  Change(PageNum,flag,q);}q++;//挪完了,直接给他移出去 w++;//把新的加进来 (注意:这里不用判断内存满不满,因为根本没增加数量 Count[ PageNum[i] ]++; //该页面使用次数 +1 }else{//否则就是内存中没有该页面 LackPage++;//先把缺页次数+1//下面开始调页 if(flag==0 && (w-q) < MaxNum){//内存中没有该页面且内存未满 Count[ PageNum[w] ]++;//使用次数加1 w++; //直接加入内存}else{//内存中没有该页面且内存已经满了 //注意:这里才是这个算法的核心,我们要比较使用次数 flag=q;//flga用于记录使用次数最少的页面位置 //这里flag初试指向q是有意义的,不能乱改 //如果大家使用次数都一样,那么q刚好是先进来的那个 for(int j=q+1;j<w;j++){//比较次数 if(Count[ PageNum[j] ] < Count[ PageNum[flag] ] ) flag=j;//记录最小的 }if(flag==q){//说明使用次数都一样,那就选最先进来的 q++;w++;Count[ PageNum[i] ]++; //该页面使用次数 +1 }else{Change(PageNum,flag,q);//将使用次数最少的挪到最前面 q++;//淘汰使用次数最少的 w++;//加入新的Count[ PageNum[i] ]++; //该页面使用次数 +1 }} }}} printf("一共执行了 %d 个页面\n",Sum);printf("内存可以存放 %d 个页面\n",MaxNum);printf("一共缺页 %d 次\n",LackPage);printf("缺页率 %.3f \n",LackPage*1.0/Sum);return 0;
}

LRU页面置换算法C语言实现相关推荐

  1. OPT和LRU页面置换算法C语言代码,页面置换算法模拟——OPT、FIFO和LRU算法.doc

    实用标准文案 精彩文档 操作系统实验报告 页面置换算法模拟 --OFT.FIFO和LRU算法 班级:2013级软件工程1班 学号:X X X 姓名:萧氏一郎 数据结构说明: Memery[10]物理块 ...

  2. 最近最久未使用页面置换算法C语言,LRU页面置换算法模拟-最近最久未使用置换算法...

    LRU页面置换算法模拟-最近最久未使用置换算法 LRU页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计 一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了 ...

  3. 虚拟存储页面置换算法c语言,虚拟存储器管理页面置换算法模拟实验.doc

    虚拟存储器管理页面置换算法模拟实验 淮海工学院计算机工程学院 实验报告书 课程名:< 操作系统原理A > 题 目: 虚拟存储器管理 页面置换算法模拟实验 班 级: 软件*** 学 号: 2 ...

  4. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)

    Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...

  5. LRU页面置换算法模拟

    一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了解内存分页管理策略 3.掌握调页策略 4.掌握一般常用的调度算法 5.选取调度算法中的典型算法,模拟实现 二.设计任务 在Win ...

  6. lru页面置换算法_C|内存管理|从LRU王国到NRU王国

    缓存机制中,当发生页冲突时,操作系统将会调用页面置换算法进行淘汰,而我们这篇文章中重点介绍随机访问情况下效率较高的两种算法. LRU:Least Recently Used NRU:Not Recen ...

  7. 先进先出(FIFO)页面置换算法 C语言实现

    广东工业大学 操作系统实验 实验内容 假设每个页面中可存放10条指令,分配给作业的内存块数为4.用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入 ...

  8. 7-2 页面置换算法--LRU (50 分)

    一:题目(思路+详解+运行时错误解决) 先初始化页面大小,和物理块数.连续输入页面的逻辑地址,以"-1"作为结束标志,采用LRU页面置换算法.固定分配局部置换分配策略.输出该页面的 ...

  9. 操作系统页面置换算法(opt,lru,fifo,clock)实现

    选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...

  10. 操作系统实验(五):c实现几种页面置换算法

    1.[实验目的] 加深对页面置换算法的理解. 掌握几种页面置换算法的实现方法. 通过实验比较各种置换算法的优劣. 2.[实验内容] 1.参考用C语言实现的先进先出算法FIFO的代码,实现最佳置换算法O ...

最新文章

  1. docker容器互联实战
  2. Java多线程两种实现方式的对比
  3. 最近关于less sass的新手总结
  4. js对象数组(JSON) 根据某个共同字段分组
  5. ccxprocess启动项可以禁用么_Mac怎么禁用Adobe无用自启项?
  6. 基于Smadja算法的搭配词自动提取实践
  7. (转)Django ==== 实战学习篇九 在session中保存购物车
  8. 1.FreeRTOS学习笔记-入门概述
  9. linux xwindow 权限,普通用户如何启动XWindow的问题
  10. 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
  11. JavaScript网页特效
  12. php油酸诱导剂,油酸诱导建鲤(Cyprinus carpio var. Jian)肝细胞脂肪变性模型的建立
  13. 传奇手游漏洞获取gm权限_传奇私服漏洞获取gm权限
  14. kali linux CC搭建教程,kali linux初次安装配置
  15. matlab将空间描述转变为约当阵,matlab求约当标准型
  16. Java多态性:Java什么是多态?
  17. (Python)正则表达式(二)
  18. android animator 动画
  19. orientdb 学习
  20. 【每天学一点系列~】还在困惑数据结构(尤其是链表)里指针的看这里!!!

热门文章

  1. 媒体查询@media scree
  2. UIView属性clipsTobounds的应用
  3. JavaScript中清空数组的三种方式
  4. iOS开发网络篇—GET请求和POST请求(转)
  5. Spark技术互动问答分享
  6. 新浪微博开放平台链接耗尽的情况分析
  7. Linux 下DNS服务配置
  8. RocketMq最佳实践
  9. Swift 4.2进入最后开发阶段,为Swift 5铺平道路
  10. angularjs外部文件中的控制器使用