实验三内存管理

实验三内存管理

ID:45585466

大小:256.18 KB

页数:10页

时间:2019-11-15

实验三内存管理_第1页
实验三内存管理_第2页
实验三内存管理_第3页
实验三内存管理_第4页
实验三内存管理_第5页
资源描述:

《实验三内存管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三内存管理一、实验目的■理解内存页面调度的机理。■拿握几种理论页面值换算法的实现方法■通过实验比较各种调度算法的优劣。二、实验内容随机给出一个页面执行序列,如:1,5,3,4,2,1,3,4,5,7,9,要求让算以下几种置换算法的缺页数、缺页率和命中率。♦最佳置换算法OPT(Optimal)♦先进先Ill算法FIFO(FirstInFirstOut)♦最近最少使用算法LRU(LeastRecentlyUsed)三、实验环境■PC+LinuxRedHat操作系统+GCC■或Windowsxp+VC四、实验中遇

2、到的主要问题及其解决方式这次实验其实不一定耍在linux操作系统下做,在windows操作系统一样町以实现,只耍把头文件稍作修改即可。一开始做这个实验时,首先是看书,先把书上的替换算法知识点弄明白,要明白各种算法的优缺点和相互之间衍生互补关系。这四个算法中,难以实现的是LRU算法,因为它涉及到访问时间的计算,而且它的开销也比较人。OPT算法次难,它需要计算最近访问时间,并替换最近访问吋间最大的页。而FIFO和CLOCK实现起来比较容易,FIFO算法的实现和CLOCK算法的实现很相似,FIFOnJ'视为CLOCK

3、的退化版。我先写了CLOCK算法,再删去一些约束条件就退化为FTFO算法。这就是两者的相同Z处。理论上,CLOCK算法需要维持一个循环的主存缓冲区,需要一个循环队列去实现,并且,FIFO算法保持先进先出,因此需要一个先进先岀队列。五.源代码///Hwindow操作系统卜•要屏蔽此条指令^include^include^include^include〈string.h>#ifndef.UN1STDJ1^define.UN1STDJ1^include<10.

4、ll>^include〈PROCESS』〉#endif^defineTRUE1^defineFALSE0〃指令流长//虚页长//清周期^defineINVALID-1#definetotal^instruction320^definetotal^vp32#defineclear_period50沟数组沟的空闲页面头指针沟的忙页面头指针//页错误计数器,初次把页面载入主存时也当做页错误〃随即指令流数组//指令对应的页面号//指令所在页而中的偏移量tvpedefstruct{intpn,pfn,counter,ti

5、me;IpLtvpe;pl^typepl[total.vp]:structpfc^struct{intpn,pfn;structpfc.struct*next;};tvpedefstructpfc^structpfcotype;pfc^typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect;inta[total_instruction];intpage[total_instruction]:intoffset[total_ins

6、truction];〃页面结构//页而序号//页面所在内存区的帧号//单位时间内访问次数//上次访问的时间〃页面结构数组〃页面控制结构//页面号//内存区页面的帧号//页面指针,用于维护内存缓冲区的链式结构〃主存区页面控制结构别名//主存区页面控制结7〃主存//主存//主存区页面控制结构的忙页面尾指针intinitialize(int);intElEO(int);intLRU(int);intOPT(int);intCLOCK(int);//初始化页面结构数组和页面控制结构数组//先进先出算法//最近最久未使用

7、算法〃最佳置换算法//简单时钟(钟表)算法intmain()//随机数aaaaints;inti;srand(10*getpid());/*每次运行时进程号不同,用來作为初始化随机数队列的〃种了•〃*/s=(int)((float)(totalinstructional)*(rand()/(1UND_MAX+1.0)));printf(^甌机产生指令流,z);for(i=0;i

8、序IM亍一条指令_i+2]=(int)((float)a[i]*(rand0/(1UND_MAX+1.0)));//执彳亍前地址指■令m'[i+3]=a[i+2]+l;//顺序执行一条指令printf(z/%6d%6d%6d%6d,a[i],a[i+l],a[i+2],a[i+3]);s=(int)((float)((total_instruction-l)-a[i+2])*(ra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。