
操作系统之内存管理_页面置换算法(C++实现LRU)
发布日期:2021-05-20 07:55:00
浏览次数:20
分类:精选文章
本文共 3035 字,大约阅读时间需要 10 分钟。
一、问题描述
系统为某进程分配了3个物理块,且考虑页面号引用串:{7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1}。若采用LRU算法进行页面置换,进程首次访问页面2时,将最近最久未被访问的页面7置换出去;接着访问页面3时,将最近最久未使用的页面1置换出去。
为了实现上述过程,我们需要编写C++代码模拟LRU算法。
二、C++实现LRU
1. 预备知识
(1) LRU(Least Recently Used):最近最少使用的页面置换算法。
(2) 选用数据结构:
由于需要查找物理块中是否已有要访问的页面,选择使用内置于C++标准库的map(由红黑树实现),其查找元素的复杂度为O(log₂N)。
由于需要插入和删除操作,选择使用双链表来管理结点,删除操作的时间复杂度为O(1)。
2.invovle的操作
(1)新插入的结点应放置在双链表的头部,调用setHead函数。
(2)成功访问的双链表结点需移至双链表的头部,调用remove函数后再setHead函数。
(3)若链表已满,则丢弃链表尾部的结点,调用remove函数。
3.代码实现
完整代码如下:
#include
四、运行结果
运行程序可看到具体页面命中和缺失信息,例如:
7号页面命中0号页面命中1号页面命中2号页面命中0号页面命中3号页面命中0号页面命中4号页面命中2号页面命中3号页面命中0号页面命中3号页面命中2号页面命中1号页面命中2号页面命中0号页面命中1号页面命中7号页面命中0号页面命中1号页面命中
总共缺页次数为4。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月15日 08时38分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
Form窗体属性
2019-03-12
vue 错误收集
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13
IDEA-@Slf4j和log标签&@Data(Lombok)无效
2019-03-13
Thymeleaf 生成下标,索引,使用Stat变量
2019-03-13
初始微服务---Springcloud发展【第一期】
2019-03-13
RAFT 拜占庭将军 共识算法
2019-03-13