操作系统实验报告-存储管理的模拟实现..doc

操作系统实验报告-存储管理的模拟实现..doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验报告-存储管理的模拟实现.

南昌大学实验报告 (5)存储管理的模拟实现 学生姓名: 张虹 学 号: 6100409033 专业班级: 电Ⅲ091班 实验类型:□ 验证 ■ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 实验内容 过随机数产生一个指令序列,共320条指令。其地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分; 具体的实施方法是: 在[0,319]的指令地址之间随机选区一起点M; 顺序执行一条指令,即执行地址为M+1的指令; 在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’; 顺序执行一条指令,其地址为M’+1; 在后地址[M’+2,319]中随机选取一条指令并执行; 重复A—E,直到执行320次指令。 指令序列变换成页地址流,设: 页面大小为1K; 用户内存容量为4页到32页; 用户虚存容量为32K。 在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条—第9条指令为第0页(对应虚存地址为[0,9]); 第10条—第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。。。。。。。。。。。。。。。。 第310条—第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 计算并输出下述各种算法在不同内存容量下的命中率。 FIFO先进先出的算法 LRU最近最少使用算法 LFU最少访问页面算法 实验要求 需写出设计说明; 设计实现代码及说明 运行结果; 主要实验步骤 分析算法结构; 画出算法的流程图,即设计说明; 根据画出的流程图使用C语言编写相应的代码(代码过长,放到最后); 程序主要由main函数和以下几个函数组成: void initialization();初始化内存数据 void FIFO();FIFO先进先出算法; void LRU();LRU最久未使用算法; void LFU();LFU最近最久未使用算法; 检查代码,将编出的代码编译、链接,验证其正确性。 页面置换算法整体结构 FIFO页面置换算法 LRU页面置换算法 LFU页面置换算法 实验数据及处理结果 实验体会或对改进实验的建议 我做实验的时候,主要的难度是在几个特殊情况的处理上,如LRU内存中的页面都是之前没有调用过的,那怎么办,还有就是LFU中还没有达到“一定时间间隔”的条件时怎么办? 另外就是由于实验使用的是系统产生的随机数,所以难以验证实验结果的正确性。 参考资料 《计算机操作系统》 《计算机操作系统实验指导书》 《C程序设计》 《C语言程序设计_现代方法》 《计算机操作系统教程习题解答与实验指导(第二版)》 实验代码 #include stdio.h #include stdlib.h #include time.h int s,i; //s表示产生的随机数,i表示物理块数 int m,n,h; //循环专用 int k,g,f; int sum; //缺页次数 float r; //rate命中率 int p[320]; //page页数 int a[320]; //执行的指令 int pb[32]; //physical block用户内存容量(物理块) void initialization()void FIFO(); void LRU(); void LFU(); void line(); void start(); void end(); void main() { start(); srand((int) time (NULL)); //以计算机当前时间作为随机数种子 for (n=0;n320;n+=3) { s=rand()%320+0; //随机产生一条指令 a[n]=s+1; //顺序执行一条指令 s=rand()%(a[n]+1); //执行前地址指令M` a[n+1]=s+1; s=rand()%(319-a[n+1])+(a[n+1]+1); a[n+2]=s; } for (n=0;n320;n++) p[n]=a[n]/10; //得到指令相对的页数 printf(物理块数\t FIFO\t\t LRU\t\t LFU\n); line();

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档