存储管理之虚拟存储器实现(页面置换算法的模拟)

您所在的位置:网站首页 曲线图算法 存储管理之虚拟存储器实现(页面置换算法的模拟)

存储管理之虚拟存储器实现(页面置换算法的模拟)

2024-02-15 01:53| 来源: 网络整理| 查看: 265

页面置换算法

先进先出算法(FIFO): 先进先出算法是最简单的分页替换算法,是指每次有新的分页需要调入时,会选择调入内存时间最久的分页换出。它简单,容易实现,但这种绝对的公平方式容易导致效率的降低。 --------发生缺页中断时,即最先进来的淘汰出去 在这里插入图片描述

最近最久未使用算法(LRU)算法: 即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的。即最近最少使用的页面予以淘汰。 --------发生缺页中断时,选择未使用时间最长的页面置换出去 在这里插入图片描述 最佳置换算法(OPT): 这是一种理想情况下的页面置换算法,但实际上是不可能实现的。 --------发生缺页中断时,看后面在物理块中的页面序列,查看谁出现的最晚,谁被淘汰。

大家可以做几道例题就基本理解了。

以下是这三种算法的模拟,使用的是队列存储和set进行查询;对于效率不是特别好,只是一个基本的模拟 要求: 设计主界面以灵活选择某算法。2.用随机数方法产生页面走向。3.假定初始时页面都不在内存。

内容: 编程序实现先进先出算法(FIFO)、最近最久未使用算法(LRU)算法、最佳置换算法(OPT)的具体实现过程,并计算访问命中率。 代码如下:

#include using namespace std; vector a; //随机数产生的页面走向 queue q; //存页面--模拟 unordered_set se; //队列存在的数 int cnt; //缺页次数 int Size; //物理块数 int option; //菜单选择 int n; //页面序列的个数 void init() { cnt = 0; se.clear(); while (!q.empty()) q.pop(); } void Print(queue qq) { while (!qq.empty()) { printf("%d ", qq.front()); qq.pop(); } puts(""); } void FIFO() { init(); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3