欢迎访问有用文档网!

当前位置: 有用文档网 > 心得体会 >

请求页式存储管理模拟实验源代码及实验报告.doc

| 浏览次数:

 请求页式存储管理模拟实验源代码及实验报告

 //请求页式存储管理模拟实验源代码及实验报告

 //自己写的,程序写得比较简单,只为方便学弟学妹们 呵呵^ ^

 //dlnu.

 #include<iostream>

 #include<process.h>

 #include<stdlib.h>

 #include <ctime>

 #include <cstdlib>

 using namespace std; int yemianliu[32]={0};//全局变量数组,地址流 int p; //全局变量 p 是一共有多少地址流

 void chushihua()//初始化函数

 {

 int t;

 srand(time(0));//随机产生指令序列

 p=12+rand()%32;

 cout<<"地址流序列:";

 for(int i=0;i<p;i++)

 {

 t=1+rand()%9;

 yemianliu[i]=t;//将随机产生的指令数存入页面流

 cout<<t<<" ";

 }

 cout<<endl;

 }

 void FIFO(int n) //FIFO 算法,n 是 M 的值 {

 int i;

 int q=p;

 int e;

 int queye=0;

 int flag;

 int fifo[32]={0};

 while(q--)

 {

 flag=0;

 e=q;

 for(i=0;i<n;i++)

 {

 if(fifo[i]==yemianliu[q])

 {

 flag=1;

 break;

 1

 }

 }

 if(flag==0)

 {

 int m=n-1;

 int k=m;

 while(m--)

 {

 fifo[k]=fifo[k-1];

 k--;

 }

 fifo[0]=yemianliu[e];

 queye++;

 }

 }

 cout<<"M="<<n<<"时 FIFO 的命中率为:"<<(1-((double)queye/p))*100<<"%"<<" ";

 }

 void LRU(int n)//LRU 算法 {

 int i;

 int q=p;

 int e;

 int queye=0;

 int flag;

 int flag1,;

 int y;

 int lru[32]={0};

 while(q--)

 {

 flag=0;

 e=q;

 for(i=0;i<n;i++)

 {

 if(lru[i]==yemianliu[q])

 {

 flag=1;

 flag1=i;

 break;

 }

 }

 if(flag==0)

 {

 int m=n-1;

 2

 int k=m;

 while(m--)

 {

 lru[k]=lru[k-1];

 k--;

 }

 lru[0]=yemianliu[e];

 queye++;

 }

 else if(flag==1)

 {

 y=flag1;

 while(y--)

 {

 lru[flag1]=lru[flag1-1];

 flag1--;

 }

 lru[0]=yemianliu[e];

 }

 }

 cout<<"M="<<n<<"时 LRU 的命中率为:"<<(1-((double)queye/p))*100<<"%"<<endl;

 }

 void main()

 {

 chushihua();

 for(int i=3;i<33;i++)

 {

 FIFO(i);

 LRU(i);

 }

 }

 3

 报告,

 ××××大学

 计算机科学与工程学院实验报告 实验题目: 请求页式存储管理模拟

 课程名称: 计算机操作系统

 实验类型:?演示性 ?验证性 ?操作性 ?设计性 ?综合性 专业: 班级: 姓名: 学号: 实验日期:2012 年 5 月 24 日 实验地点: 实验学时: 实验成绩:

 指导教师签字: 年 月 日

 4

 实验题目: ........................................................................................ 错误~未定义书签。

 实验要求: ........................................................................................ 错误~未定义书签。

 一、方案设计..................................................................................... 错误~未定义书签。

 1.技术方案: .............................................................................. 错误~未定义书签。

 (1)先进先出法(First In First Out): ....................... 错误~未定义书签。

 (2)最近最久未使用(Least Recently Used): .............. 错误~未定义书签。

 2.功能设计: .............................................................................. 错误~未定义书签。

 (1)chushihua()函数的功能: ....................................... 错误~未定义书签。

 (2)FIFO()的功能:....................................................... 错误~未定义书签。

 (3)LRU()的功能: ........................................................ 错误~未定义书签。

 二、结构设计..................................................................................... 错误~未定义书签。

 1、数据结构设计 ........................................................................ 错误~未定义书签。

 2、程序结构设计 ........................................................................ 错误~未定义书签。

 三、程序设计..................................................................................... 错误~未定义书签。

 1.FIFO()函数流程图; .............................................................. 错误~未定义书签。

 2.LRU()函数流程图: ............................................................ 错误~未定义书签。

 四、编码调试..................................................................................... 错误~未定义书签。

 主要问题及解决方法: ............................................................... 错误~未定义书签。

 五、实验总结..................................................................................... 错误~未定义书签。

 六、程序清单..................................................................................... 错误~未定义书签。

 源代码:..................................................................................... 错误~未定义书签。

 运行结果: ................................................................................. 错误~未定义书签。

 5

 实验题目:

 请求页式存储管理模拟

 实验要求:

 设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。

 (1) 先进先出的算法(FIFO)

 (2) 最近最久未用算法(LRU)

 (3) 最近最不经常使用算法(NUR)*(选做) (4) 最佳淘汰算法(OPT)*(选做)

 (5) 最少访问页面算法(LFU)*(选做)

 命中率=1-页面失效次数/页面地址流长度

 程序设计中,首先用 Srand()和 Rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,针对不同的算法计算出相应的命中率。

 6

 一、方案设计

 1.技术方案:

 (1)先进先出法(First In First Out):

 该算法总是淘汰最先进入内存的页面,既选择在内存中驻留时间最久的页面予以淘汰。

 在该算法的模拟过程中,每当页面需要被置换进入内存时,最先进入内存的内容们都依次向底移一位,需要访问的内容存入数组 0 号单元,即最顶部,这时缺页数加 1;当不需要进行页面置换,即所需访问的内容在内存中时,不需要操作,继续读下一条指令。这样就实现了总是淘汰最先进入内存的页面,选择了在内存中驻留时间最久的页面予以淘汰。

 (2)最近最久未使用(Least Recently Used):

 该算法将过去最长一段时间里不曾被使用的页面置换掉。

 在该算法的模拟过程中,每当页面需要被置换进入内存时,最先进入内存的内容们都依次向底移一位,需要访问的内容存入数组 0 号单元,即最顶部,这时缺页数加 1;当不需要进行页面置换,即所需访问的内容在内存中时,将要访问的指令移到内存顶部,其他指令依次向下移一位,这样就把最久不用的指令沉到了底部,有必要时淘汰,即实现了总是淘汰最近最久未使用的指令。

 2.功能设计:

 (1)chushihua()函数的功能:

 先由 Srand()和 Rand()函数定义和随机产生指令序列,然后将指令序列变换成相 应的页地址流存入地址流数组里。

 (2)FIFO()的功能:

 实现 FIFO 算法,淘汰最先进入内存的页面并根据缺页数算出命中率。

 (3)LRU()的功能:

 实现 LRU 算法,淘汰最近最久未使用的页面并根据缺页数算出命中率。

 二、结构设计

 1、数据结构设计

 本程序使用了三个一维数组:

 yemianliu[]存放地址指令流序列;

 fifo[]存放 FIFO 算法时的内存指令;

 lru[]存放 LRU 算法时的内存指令。

 2、程序结构设计

 7

 开始

 主函数

 Chushihua() FIFO() LRU()

 结束

 三、程序设计

 1.FIFO()函数流程图;

 开始

 得到执行的指令

 指令是否 在内存中 否

 queye 加 1,指令 是 存入内存,最先 存入指令被淘汰

 是 下面是否 还有指令

 否

 得出命中率

 结束

 8

 2.LRU()函数流程图:

 开始

 得到执行的指令

 指令是否 在内存中

 否

 是

 queye 加 1,指令 将指令移到数存入内存,淘汰 数组底部指令 组顶部,其他 依次下移一位

 是 下面是否

 还有指令

 否

 得出命中率

 结束

 9

 四、编码调试

 主要问题及解决方法:

 刚开始老师的例题看不懂,虽然知道 FIFO 和 LRU 的原理,但不知道从何下手。我觉得老师的那个例题太复杂了,如果我也写那么复杂程序肯定崩溃得一塌糊涂,所以我觉 ,老师的例题和网上定按自己的理解写。我也搜了很多例题,但都和题目要求不太一样 的例题都用到了结构体数组,在内存的指令旁都附加了一个累加器,以访问次数和时间决定要淘汰的指令,而我是每访问一次后,按访问次数冒泡排序一次,这样最近被访问的就在数组的最顶上,最远被访问的在内存数组的最底部,没有用到循环队列,但也能实现功能。这次我没有用到结构体数组,也没有用到指针(有点遗憾),不过测试了好几组数据,结果都和我用笔算的一样。在编程中,因为定义的变量太多了,取名也有点混乱,弄得我很晕,刚开始一直崩溃,后来我把程序的运行过程一步步的 cout 出来和调试,终于发现了错误的地方。开始我一直用 for()语句来控制循环,但是都找不到适合的让它结束循环的方法,后来才想到了可以用while(n--)来控制,效果还不错。还有就是第一次使用随机函数,有点陌生,上网查了些资料,终于会应用它了。这次试验大概就遇到了以上问题,都一一解决了,当然程序还是存在一些问题的,但是收获很多~

 五、实验总结

 通过本次实验,我对操作系统这门课程有了更进一步的认识和了解,通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟储技术的特点。通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解,也知道了几种算法的效率,也验证了 LRU 算法的命中率平均的比FIFO 算法的高。

 过程中,用到了许多 C++的基本知识和操作系统的基本原理,是对平时所学在本次设计 知识的一次考验,尽管这些知识都学过,但运用到实际时,却不知从何下手,而且错误不断,往往为了找一个错误而花了大量的时间,这是专业知识掌握不够,缺乏实践动手能力的表现。在设计的过程中我们发现了许多自己的不足之处。

 通过该实验,我收获了很多。我了解到编写程序不是首要任务,而是一种实现手段。我们最重要的是如何做好需求分析和理清思路,做出正确、简洁的流程设计,这样可以达到事半功倍的效果。

 10

 六、程序清单

 源代码:

 #inclu#include<iostream> de<process.h>

 #include<stdlib.h>

 #include <ctime>

 #include <cstdlib>

 using namespace std; int yemianliu[32]={0};//全局变量组数,地址流 int p; //全局变量 p 是一共有多少地址流

 void chushihua()//初始化函数

 {

 int t;

 srand(time(0));//随机产生指令序列

 p=12+rand()%32; cout<<"地址流序列,";

 for(int i=0;i<p;i++) {

 t=1+rand()%9;

 yemianliu[i]=t;//将随机产生的指令数存入页面流

 cout<<t<<" ";

 }

 cout<<endl;

 }

 void FIFO(int n) //FIFO 算法,n 是 M 的值 {

 int i;

 int q=p;

 int e;

 int queye=0;

 int flag;

 int fifo[32]={0}; while(q--)

 {

 flag=0;

 e=q;

 for(i=0;i<n;i++)

 {

 if(fifo[i]==yemianliu[q])

 {

 flag=1;

 11

 break;

 }

 }

 if(flag==0)

 {

 int m=n-1;

 int k=m;

 while(m--)

 {

 fifo[k]=fifo[k-1];

 k--;

 }

 fifo[0]=yemianliu[e];

 queye++;

 }

 }

 cout<<"M="<<n<<"时 FIFO 的命中率为,"<<(1-((double)queye/p))*100<<"%"<<" ";

 }

 void LRU(int n)//LRU 算法 {

 int i;

 int q=p;

 int e;

 int queye=0;

 int flag;

 int flag1,;

 int y;

 int lru[32]={0};

 while(q--)

 {

 flag=0;

 e=q;

 for(i=0;i<n;i++)

 {

 if(lru[i]==yemianliu[q])

 {

 flag=1;

 flag1=i;

 break;

 }

 }

 if(flag==0)

 {

 12

 int m=n-1;

 int k=m;

 while(m--)

 {

 lru[k]=lru[k-1];

 k--;

 }

 lru[0]=yemianliu[e];

 queye++;

 }

 else if(flag==1)

 {

 y=flag1;

 while(y--)

 {

 lru[flag1]=lru[flag1-1];

 flag1--;

 }

 lru[0]=yemianliu[e];

 }

 }

 cout<<"M="<<n<<"时 LRU 的命中率为,"<<(1-((double)queye/p))*100<<"%"<<endl;

 }

 void main()

 {

 chushihua();

 for(int i=3;i<33;i++)

 {

 FIFO(i);

 LRU(i);

 }

 }

 13

 运行结果:

  14

推荐访问:实验 源代码 请求

热门排行Top Ranking

新时代青年的奋斗精神心得体会5篇

新时代青年的奋斗精神心得体会5篇新时代青年的奋斗精神心得体会篇1为进一步弘扬爱国奋斗奉献精神,激励党

坚持总体国家安全观心得体会250字8篇

坚持总体国家安全观心得体会250字8篇坚持总体国家安全观心得体会250字篇1“安而不忘危,存而不忘亡

宣传部部长心得体会15篇

宣传部部长心得体会15篇宣传部部长心得体会篇1首先,感谢领导给我这次评选优秀员工的机会,也感谢您能在

管理信息系统案例

第一章 信息系统与管理 案例((或实例) 得讨论题及点评((或回答)) [实例]利润计划工作中得反复

大学生体育课心得体会1500字5篇

大学生体育课心得体会1500字5篇大学生体育课心得体会1500字篇1不知不觉,进入大学第一个学期的体

餐饮单位疫情防控工作汇报

餐饮单位疫情防控工作汇报根据省、市、区疫情防控指挥部统一部署,严格落实《省市场监督管理局关于进一步加

党支部党建工作年度台账-基层党建工作台账

党支部党建工作年度台账::基层党建工作台账 党支部党建工作年度台账说明为抓好党建工作,根据《党章》《

党员的时代楷模心得体会12篇

党员的时代楷模心得体会12篇党员的时代楷模心得体会篇1@党员干部“打工攻略”请查收一年一度的“双十一

公文格式国家标准

公文格式国家标准 1范围 本标准规定了党政机关公文通用的纸张要求、排版和印制装订要求、公文格式各要素

内勤辅警先进事迹材料

内勤辅警先进事迹材料3篇 内勤辅警先进事迹材料1 办公室工作室一项既辛苦、又清苦的脑力劳动,他没有惊

傅雷家书阅读心得及感悟10篇

傅雷家书阅读心得及感悟10篇傅雷家书阅读心得及感悟篇1一连几天,我都沉浸在《傅雷家书》这本书中,感受

学校留观室设置及工作方案

学校留观室设置及工作方案 根据省、市、区疫情防控要求,为确保开学后切实保障师生生命安全和身体健康,特