1、设:页面大小为 1K;用户内存容量为4 页到32 页 ;用户虚存容量为 32K。在用户虚存中,按每 存放 1 条指令排列虚存地址,即320 条指令在虚存中的存放方式为:第 条 第 9 条指令为第 0 页 ( 对应虚存地址为 0,9);第0 条 第 19 条指令为第 1页( 对应虚存地址为 0,19 ) ;第 310条 第319 条指令为第 31 页 ( 对应虚存地址为 30,319) 。按以上方式,用户指令可组成 32 页。计算并输出下述各种算法在不同内存容量下的命中率。先进先出的算法(FIFO);最近最少使用算法 ();最少访问页面算法 (LFR);最近最不经常使用算法 (NUR)。3实验环
2、境每个学生一台微机,需要安装widw98或winows000操作系统,配备V、VB、a或编程语言,每个学生上机时间不少于2个小时。(1)、分页请求系统 为了能实现请求调页和置换功能,系统必须提供必要的硬件支持,其中,最重要的是:()请求分页的页表机制。它是在分页的页表机制上增加若干个项而形成的,作为请求分页的数据结构;()缺页中断机构。每当用户程序要访问的页面尚未调入内存时,便产生一缺页中断,以请求O将所缺的页面调入内存;(3)地址变换机构。它同样是在分页的地址变换机构的基础上发展形成的。为了实现请求调页还须得到的支持,在实现请求调页功能时,石油OS将所需的页从外存调入内存;在实现置换功能时,
3、也是由OS将内存的某些页调至外存。4.实验提示提示:A.命中率=1-页面失效次数页地址流长度 B.本实验中,页地址流长度为20,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。 C.关于随机数产生方法,采用TC系统提供函数AN()和RANDOMIZE()来产生。5.自己对算法的理解 FFO页面置换算法原理简述在分配内存页面数(AP)小于进程页面数(P)时,当然是最先运行的AP个页面放入内存。这时有需要处理新的页面,则将原来内存中的个页面最先进入的调出(是以称为FIFO),然后将新页面放入。以后如果再有新页面需要调入,则都按的规则进行。算法特点:所使用的内存页面构成一个队列。
4、LRU页面置换算法原理算述当分配内存页面数(AP)小于进程页面数(P)时,当然是把最先执行的A个页面放入内存。当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LR)。算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。FU即最不经常使用页置换算法1原理简述要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。LRU算法的硬件支持 把R
5、算法作为页面置换算法是比较好的,它对于各种类型的程序都能适用,但实现起来有相当大的难度,因为它要求系统具有较多的支持硬件。所要解决的问题有: 1.一个进程在内存中的各个页面各有多久时间未被进程访问;2.如何快速地知道哪一页最近最久未使用的页面。为此,须利用以下两类支持硬件:(1)寄存器用于记录某进程在内存中各页的使用情况。实页/RRR6R5R43R2R1012O56178(2)栈 可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。LFU算法并不能真正反映出页面的使用情况,因为在每一时间间隔内,只是用寄存器的一位来记录页的使用情
6、况,因此,访问一次和访问1000次是等效的。 NUR页面置换算法所谓“最近未使用”,首先是要对“近”作一个界定,比如CLE_PERIOD=50,便是指在CPU最近的50次进程页面处理工作中,都没有处理到的页面。那么可能会有以下几种情况:如果这样的页面只有一个,就将其换出,放入需要处理的新页面。如果有这样的页面不止一个,就在这些页面中任取一个换出(可以是下标最小的,或者是下标最大的),放入需要处理的页面。如果没有一个这样的页面,就随意换出一个页面(可以是下标最小的,或者是下标最大的)。有一个循环周期,每到达这个周期,所有页面存放是否被PU处理的信息的属性均被置于初始态(没有被访问)。实验流程图
7、7. 实验运行结果等等。8 实验源程序#includetmusng naesae st;cotnt aNu=20;/指令数constit M=5;/内存容量it aeOrdrMam;/页面请求intSuteMaxNumM;/页面访问过程int geountM,LcNu;/eCont用来记录LRU算法中最久未使用时间,acNum记录缺页数float PageRate;/命中率itPgeCon132;ool sxit(int i)/FIF算法中判断新的页面请求是否在内存中 bool f=se; r(in =0;j;j+) if(ulti-j=PgeOrderi)/在前一次页面请求过程中寻找是否存在
8、新的页面请求 =ue; rturn f;ItLU(int)/LRU算法中判断新的页面请求是否在内存中int f=-; fr(in j0;M; if(Smulatei-1j=Pagrdri) f=j; rn ;int opare()/LR算法找出内存中需要置换出来的页面nt ,q;pPageCout; q=; fo(i i=1;iM;+) i(pagouni) PgeCnti;q=; reurn ;vo Init() /初始化页框 r(i k=;kMNum;k+) nn=rand()%30;/随机数产生30次指令 PaeOrdrkn/0;/根据指令产生320次页面请求 for(in =0;MNu
9、;i+)/初始化页面访问过程 r(i j=0;jj+) imulaeij=-1; for(nt q=0;qM;+)/初始化最久未使用数组 agCq=;voi ut()/输出nt i,j;cot页面访问序列:enl;for(j=0;axNum; otPageOrdej ; cotcut页面访问过程(只显示前0个):l;for(i=;i10;i+) f(=0; i(mlatj=-) co e ouSmulaij; outd; cout缺页数 LacNuend;命中率= Pageteendl; ou-vod IFO()/FIO算法it j,=0,y=0;acum=0, nit(); or(j=0;j+)/将前五个页面请求直接放入内存中 or(ink=0;k=;k+) f(j=k) Simulte=Pagrderj; es iutejk=Siulatej-k; /Lacku+; for(x=;axNu;x) for(n ;;t+)/先将前一次页面访问过程赋值给新的页面访问过程 imulextSmulaex1t;if(!IsExit(x)/根据新访问页面是否存在内存中来更新页面访问过程Lackum+; Simulatexy%M=aeOrex; y+; Pgeate=1-(foat)LackNum(la)MxNum);/算出命中率OutPut();odLU()/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1