存储管理(页面置换算法模拟)
命中率计算公式:$\boldsymbol{命中率=1-缺页次数/总访问数}$ - **FIFO先进先出**:按照页面调入内存的先后顺序,淘汰最先进入内存的页面,实现最简单。1. 性能排序:**OPT>LRU>FIFO**,OPT全程命中率最高,LRU紧随其后,FIFO整体效率最差;近期完成操作系统请求分页存储管理实验,通过C语言模拟虚拟内存,生成320条模拟指令,分别实现FIFO、LRU、OPT三
近期完成操作系统请求分页存储管理实验,通过C语言模拟虚拟内存,生成320条模拟指令,分别实现FIFO、LRU、OPT三种经典页面置换算法,统计不同内存页数下命中率,直观体会虚拟存储与页面置换原理,整理实验心得分享。
一、实验原理简述 本次实验虚拟空间32KB,页面大小1KB,每页存放10条指令,总计32页、320条指令。指令生成遵循局部性规则:50%顺序执行、25%访问低地址、25%访问高地址。 命中率计算公式:$\boldsymbol{命中率=1-缺页次数/总访问数}$ - **FIFO先进先出**:按照页面调入内存的先后顺序,淘汰最先进入内存的页面,实现最简单。 - **LRU最近最少使用**:淘汰一段时间内很久没有被访问的页面,贴合程序局部性,工程最常用。 - **OPT最优置换**:淘汰未来最长时间不再访问的页面,理论性能天花板,现实无法实现,仅用作参照。
二、实验过程 1. 采用C语言编写代码,利用随机函数生成符合访问规律的指令,转化为对应页号序列; 2. 完善FIFO算法代码,结合已有LRU、OPT源码,完成三种算法逻辑; 3. 控制内存物理页数从4页逐步增加至32页,批量运行程序,记录每组命中率; 4. 扩充逻辑地址范围二次测试,对比数据变化规律。
三、实测结果总结 随着内存可用页数增多,三种算法命中率同步上升:内存越大,可常驻页面越多,缺页概率越低。 1. 性能排序:**OPT>LRU>FIFO**,OPT全程命中率最高,LRU紧随其后,FIFO整体效率最差; 2. 内存等于总页数32时,全部页面装入内存,无缺页,三者命中率全部100%; 3. FIFO存在Belady异常隐患,内存变大命中率偶尔反向下降,是该算法固有缺陷。
四、个人收获 1. 从代码层面弄懂请求分页按需调页机制,缺页中断触发、页面调入与置换的完整流程落地; 2. 理解为什么现代操作系统普遍选用LRU系列置换算法,兼顾实现成本与运行效率; 3. 印证程序局部性原理,正是因为程序访问具有集中性,LRU才能远优于无脑先进先出的FIFO。
小结 页面置换是虚拟内存的核心,OPT是理想模型、LRU是工程落地、FIFO是入门示例,三者组合学习能快速吃透存储管理。本次实验跳出课本抽象概念,用真实数据量化算法优劣,是操作系统学习很有意义的一次实操。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)