【应用C】C语言模拟虚拟内存基本页面置换算法FIFO、OPT和LRU并比较效率(+源代码)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【应用C】C语言模拟虚拟内存基本页面置换算法FIFO、OPT和LRU并比较效率(+源代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2129字,纯文字阅读大概需要4分钟。
内容图文
![【应用C】C语言模拟虚拟内存基本页面置换算法FIFO、OPT和LRU并比较效率(+源代码)](/upload/InfoBanner/zyjiaocheng/977/b8a7a68bd3974cb8ae5d7c79dd27d996.jpg)
文章目录
??虚拟内存的核心原理是局部原理,作业在某个时间段内只运行在某一段代码范围内,于是不必要把整个作业都调入内存运行,只需要部分即可。
??虚拟内存管理一般采用按页管理,内存和作业都以页为单位,可以先调用作业的一部分页面进入内存运行,当作业所需要的页面不存在内存的时候就请求页调入或者页置换
01 - 页面置换算法
??基本的页面置换算法为OPT、FIFO和LRU,详细介绍有更加优秀的博客和书籍,在此只作简介
1.1 - FIFO
??FIFO(先入先出置换算法)是淘宝占用内存时间最久的页面,这是一种局部策略,单纯以作业的先后次序作为置换根据,非常容易实现的算法
??FIFO算法的作业结构体以及运行流程如下
typedef struct FIFO_BLOCO_STRUCT
{
int old; //指向最先进入队列的指针
int top; //指向当前位置的指针
bool isEmpty; //物理块是否为空
int queue[BLOCO_LEN]; //物理块队列
} FIFO_blocoType;
1.2 - OPT
??OPT(最佳页面置换算法)是淘汰以后不再访问或距现在最长时间后要访问的页面,这是一种全局策略,是一种理论算法,本质上是不可能实现的,因为需要预测程序的页面引用串,这是无法预知的,但是由于算法产生的缺页次数是最少的,所以可以作为衡量其它算法的标准
??OPT算法的作业结构体以及运行流程如下
typedef struct OPT_BLOCO_STRUCT
{
int old; //指向最先进入队列的指针
int top; //指向当前位置的指针
bool isEmpty; //物理块是否为空
int queue[BLOCO_LEN]; //物理块队列
int time[BLOCO_LEN]; //未来第一次访问的时间
} OPT_blocoType;
1.3 - LRU
??LRU(最近最少使用置换算法)是淘汰占用时间最长和使用次数最少的页面,这是一种局部策略,是可以具体实现的
??LRU算法的作业结构体以及运行流程如下
typedef struct LRU_BLOCO_STRUCT
{
int old; //指向最先进入队列的指针
int top; //指向当前位置的指针
bool isEmpty; //物理块是否为空
int stack[BLOCO_LEN]; //物理块队列
} LRU_blocoType;
02 - 效率比较
??例程中有一个比较程序main.c,进行100,000次测试,得出平均命中率进行比较
??main.c运行结果如下(运行时间大概为5s)
FIFO ave 0.357536, LRU ave 0.361196,OPT ave 0.639699
03 - 源码下载
??链接:百度网盘 提取码:i0ml
04 - 总结
- OPT是一个理论算法,可以作为标准
- FIFO和LRU相差并不是太大
- 例程是一个比较简单的模拟,只是为了计算命中率
内容总结
以上是互联网集市为您收集整理的【应用C】C语言模拟虚拟内存基本页面置换算法FIFO、OPT和LRU并比较效率(+源代码)全部内容,希望文章能够帮你解决【应用C】C语言模拟虚拟内存基本页面置换算法FIFO、OPT和LRU并比较效率(+源代码)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。