《2023年计算机操作系统储存管理实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机操作系统储存管理实验报告.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件学院综合性、设计性实验报告专 业:j a v a 年 级/班 级:2 0 2 3级 2 0 2 3 2 0 2 3学年第一学期课程名称计算机操作系统指导教师学号-姓名-王宇菲实验地点过 街 楼B区实验时间2023-1 2-2 3项目名称储存管理实验类型综合性/设计性一、实验目的通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、实验仪器或设备实 验 机 房Pc电脑三、总体设计(设计原理、设计方案及流程等)1 .通过随机数产生一个指令序列,共3 2 0条指令,指令的地址按下述原则生产:5 0%的指令是顺序执行的;2 5%的指令是均匀分布
2、在前地址部分;2 5%的指令是均匀分布在后地址部分。2.将指令序列变换成为页地址流设页面大小为1 K;用户内存容量为4页到3 2页;用户虚存容量为3 2 K。在用户虚存中,按每K存 放1 0条指令排列虚存地址,即3 2 0条指令在虚存中的存放方式为:第0条至第9条指令为第0页;第1 0条 至1 9条指令为第1页;第3 1 0条至3 1 9条指令为第3 1页。3 .计算并输出下述各种算法在不同内存容量下的命中率。(1)先进先出算法(F I F O)(2)最近最少使用算法(L R U)(3)最佳使用算(O P T)命中率=1一页面失效次数/页地址流长度本实验中,页地址流长度为3 2 0,页面失效次
3、数为每次访问相应指令时,该指令所相应的页不在内存的次数。关于随机数的产生办法。一方面要初始化设立随机数,产生序列的开始点,例如,通过下列语句实现:s r a n d(4 0 0 );(1)计算随机数,产 生 3 2 0条指令序列m=1 6 0;f o r(i=0;i 8 0;i+=(j=i *4;a j =m;a j+l =m+l;a|j+2 =a j *1 .0 *ra n d()/3 2 7 6 7;a j +3 =a E j+2 +lm=a j+3 +(3 1 9-a j +3 )*1.0 *ra n d()/3 2 7 6 7;(2)将指令序列变换成为页地址流f o r(k=0;k 3
4、 2 0;k+)p t =a E k/1 0;p d=a k%1 0;)(3)计算不同算法的命中率ra t e=l-1.0*U/3 2 0 ;其中U为缺页中断次数,3 2 0是页地址流长度。(4)输出格式k f i f o I ru4 0.2 3 0.2 53 2 1 .0 1 .0四、实验环节(涉及重要环节、代码分析等)1.代码如下#i n c l u d e#in c l u d e ttin c l u d e#in c l u d e#d e f i n e M y pr in t f p r in tf (|-+-1-1-+-+H-+-+-+-+-+-+-|n)/*表格控制*/d e
5、 f in e b s i z e 4 物理块大小#d e f in e p s iz e 16 进程大小ty pe d e f s t r u c t p a g e(i n t n u m;/*记录页面号*/in t tim e ;/*记录调入内存时间*/P a g e;/*页面逻辑结构,结构为方便算法实现设计*/P a g e b b s iz e ;/*内存单元数*/in t c b s i z e p s iz e ;/*暂保存内存当前的状态:缓冲区*/in t q u e u e 100 ;/*记录调入队列*/in t K;/*调入队列计数变量*/in t p h b b s iz
6、 e =0;/物理块标号in t p r o p s iz e =0;进程序列号in t f l a g E b s iz e =0;/进程等待次数(存放最久未被使用的进程标志)i nt i=0,j=0,k =0;/i表达进程序列号,j表达物理块号in t m =-1,n =-1;物理块空闲和进程是否相同判断标志i n t m a x =-1,ma x f l a g =0;/标记替换物理块进程下标in t c o u n t=0;/记录页面缺页次数!/*火 *火 *,/V */*大 *随机产生序列号函数/*TV *in t*b u iId ()(p r i n tf (随机产生一个进程序列号
7、为:n);i n t i =0;f o r(i=0;i p s iz e;i+)(pr o i =1 0*r a n d ()/(R A N D _M A X+1)+1;pr i n tf C%d ,pr o i );pr in tf ;r e t u r n (p r o);)/*查找空闲物理块|/*int sea r chpb()(ofor(j=0;jb s i z e;j+)(g i f(p h b j=0)(m =j;3 retu r n m;b r e ak;。)o r et u rn 1;)/,/*查找相同进程/*int searchp r o()(f o r(j=0;j b s
8、i ze;j+)if(p h b j =pro i)(n=j;。return j;)re t u r n-1;)/*初始化内存/*不 不 不 *不*voi d emp t y()(ofor(i=0;i b size;i+)op h b i=0;count=0;/计数器置零)Z /*火 *先进先出页面置换算法/*夫 *void FIF00f o r (i =0;i p s iz e;i +)(s e a r c h p b();n =s e a r c h p r o ();/找f 1 a g值最大的f o r (j=0;j ma x f 1 a g)m a x f l a gf l a g j
9、 ;if(n =1)不存在相同进程if(m!=-1)/存在空闲物理块ph b m=pr o i;/进程号填入该空闲物理块8 c o u n t+;f l a g m =0;f o r(j=0;j=m;j+)(f l a g j+;m =-1;e l s e不存在空闲物理块p h b ma x =p r o i;f l a g ma x =0;f o r(j=0;j b s iz e;j+)(f 1 a g j +;)ma x =-1;ma x f l a g =0;c o u n t+;)e l s e /存在相同的进程(p h b n =p r o i ;f o r(j=0;j b s iz
10、 e;j+)(g flag j +;)n =-1;)f o r(j=0;j b s iz e;j+)p r in tf (z/%d ”,p h b j);pr in tf (n );)p r in t f (缺页次数为:d n ,c o u n t);o pr i n t f C n );/次初始化内存单元、缓冲区*/v o i d I n it(P a g e *b,i n t c b s iz e p s iz e )(i n t i,j;f o r (i =0;i p s i z e;i +)(b i .n u m=-l;b i,t i m e =ps i z e -i 1;)f o r
11、 (i=0;i b s iz e;i+)f o r(j=0;j ps i z e ;j+)c i j=1;/*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/in t G e tM a x (P a g e *b)(i nt i;i n t m a x=-1;in t t a g=0;f o r (i =0;i ma x )m a x =b i.t i m e;ta g=i;)r e tu r n ta g;/*判断页面是否已在内存中*/i n t E qu a t i o n (in t f o Id,P a g e *b )(i n t i;f o r (i=0;i=0)b v
12、a 1 .t i m e =0;f o r (i =0;i b s iz e;i +)if (i!=v a l)b i.time+;)e 1 s e(q ueue +K =f o Id;/*记录调入页面*/v a l=G e t M a x(b );b v a l .n u m=f o l d;b v a 1 .tim e =0;f o r (i=0;i V b s iz e;i+)if (i!=v a 1 )b i.tim e +;)v o id L R U()(in t i ,j;K=-l;I n i t(b ,c);f o r (i=0;i p s i z e;i+)(L r u u (
13、p r o i ,b);c 0 i=p r o i;/*记录当前的内存单元中的页面*/f o r (j=0;j b s iz e;j+)c j i =b j n u m;)/*结果输出*/p r i n tf (内存状态为:n);M y p r i n tf;f o r(j=0;j p s iz e;j+)p r i n t f C I%2 d ,p r o j );pr i n tf C I n);M y pr in tf;f o r (i=0;i b s i z e;i+)f o r(j=0;j p s i z e;j+)(if (c i j=-1)pr i n t f (I%2 c ”,
14、3 2);e l s ep r in t f (I%2d,z,c i j );)pr in tf(,z I n);)M y p r in tf;pr i n tf (n调入队列为:);f o r (i=0;i K+1;i +)pr in t f qu e u e i);pr in tf(n 缺页次数为:%6 d n 缺页率:16.6 f,K+l,(f 1 o a t)(K+l)/ps iZ e);/*主 函数voi d ma in ()(in t s e 1E o 。e pr in t f (t t t-t t t);叩 r in t f (n t t t、八 欢迎进入操作系统界面八-八 t
15、t t);t t n H);P r i n tf (7 让 t t t);p r in t f C t t ti 虚拟内存 t t t);g pr i n tf (t t t-t t t);叩 r in t f (t t t 1、产生随机序列 t t t,z);pr in t f (t t-、t t t);pr in tf (z,t t !2、最久未使用(L R U)t t t);w pr in tf (t t t-t t t);p r in t f(t t t+3 先进先出(F IF O)t t t );r i n tf (t t t-t t t);o pr in tf (t t !.4、最
16、佳置换算法(。P T )t t t);o p r i n t f (t t t-t t t,z);。pr in tf(,z t t t 5、三种算法的比较()t t t);o pr in tf (t t t-t t”);o pr i n t f (t t t 0、退 出(E x i t)t t t );叩r in tf (t t t t t nz/);叩r in t f(请选择所要执行的操作(0/1/2/3/4/5):”);s c a n f (%d ,&s e 1 );。s w i t c h (s e i)g b c a s e 0:p r in t f (t t t 八一人再见!人 t
17、t t n *);s y s t e m(*p a u s e);b r e a k;a c a s e 1:b u i 1 d ();b r e a k ;c a s e 2:pr in t f (最久未使用算 n );L R U();e mpt y ();p r i n tf (n );b r e a k;c a s e 3 :pr in tf (先进先出算 n);F IF O ();e mpty ();pr in t f (n );b r e a k;。c a s e 5:pr in t f (先进先出算法 n );F IF O ();e mpty ();pr in tf (最久未使用算
18、法 法);L R U ();e mp t y ();b r e a k;d e f a u l t:p r in tf (“请输入对的的选项号!);p r i n t f(n n);b r e a k;whi 1 e(se l!=0);五、结果分析与总结产生的随机序列:随机产生二个进程序冽号为:1629654998298641最近最少使用算法执行结果如下:先进先出F I F0算法执行结果:总结体会请求页式管理的基本原理是将逻辑地址空间提成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量。页表涉及页号和块号数据项,它们一一相应.根据逻辑
19、空间的页号,查找页表相应项找到相应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。对不同算法的性能进行评价。FIFO算法较易实现,对具有线性顺序特性的程序比较合用,而对具有其他特性的程序则效率不高,此算法还也许出现抖动现象(Bela dy)异常。L R U 算法基于程序的局部性原理,所以合用用大多数程序,此算实现必须维护一个特殊的队列一一页面淘汰队列。OPT算法虽然产生的缺页数最少,然而,却需要预测程序的页面引用串,这是无法预知的,不也许对程序的运营过程做出精确的断言,但是此理论算法可用做衡量各种具体算法的标准。教师署名:年 月