操作系统-请求式存储管理试验报告_第1页
操作系统-请求式存储管理试验报告_第2页
操作系统-请求式存储管理试验报告_第3页
操作系统-请求式存储管理试验报告_第4页
操作系统-请求式存储管理试验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验三存储管理实验班级:学号:姓名:1. 实验目的22. 实验内容2.通过随机数产生一个指令序列,共320条指令2.(2) 将指令序列变换成为页地址流 2.(3) 计算并输出下述各种算法在不同内存容量下的命中率 23. 随机数产生办法 3.环境说明3.4. 程序设计说明 3.4.1. 全局变量3.4.2. 随机指令序列的产生 4.4.3. FIFO算法4.4.4. LRU算法4.4.5. OPT算法5.5. 编程实现(源程序):5.6. 运行结果及分析 .1.1.6.1. 运行(以某两次运行结果为例,列表如下:)1.16.2. Belady s anomaly 111. 实验目的存储管

2、理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。掌握请求页式本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,存储管理的页面置换算法。2. 实验内容(1)通过随机数产生一个指令序列,共 320条指令指令的地址按下述原则生成:a)50%的指令是顺序执行的;b)25%的指令是均匀分布在前地址部分;c)25%的指令是均匀分布在后地址部分; 具体的实施方法是:a)在0,319的指令地址之间随机选取一起点m;b)顺序执行一条指令,即执行地址为m+1的指令;c)在前地址0, m+1 中随机选取一条指令并执行,该指令的地址为m;d)顺序执行一条指令

3、,其地址为m+1;e)在后地址m +2,319中随机选取一条指令并执行;f)重复上述步骤a)f),直到执行320次指令。(2)将指令序列变换成为页地址流设:a)页面大小为1K ;b)用户内存容量为4页到32页;c)用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条第9条指令为第0页(对应虚存地址为0,9);第10条第19条指令为第1页(对应虚存地址为10,19);第310条第319条指令为第31页(对应虚存地址为310,319)。 按以上方式,用户指令可以组成32页。(3)计算并输出下述各种算法在不同内存容量下的命中率a)先进先出的

4、算法(FIFO);b)最近最少使用算法(LRU);c)最佳淘汰算法(OPT);命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。3. 随机数产生办法关于随机数产生办法,可以采用操作系统提供的函数,如Linux或UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如:sran d();语句可以初始化一个随机数;a0=10*ra nd()/32767*319+1;a1=10*ra nd()/32767*a0;语句可以用来产生a0与a1 中的随机数。环境说明此实验采用的是 Win7下C

5、ode:blocks 10.05编译器编程。此word实验文档中采用 notepad+的语法高亮。4. 程序设计说明4.1. 全局变量con stintmax n=320; /序列个数con stintmax=max n+ 20 ; /数组大小con stintmaxp=max/ 10 ; /最大页数intin stmax;/指令序列intpagemax;/页地址流intsize;/内存能容纳的页数bool in maxp ;/该页是否在内存里,提高效率int pin maxp ;/现在在内存里的页其中in数组是为了方便直接判断该页是否在内存里,而不用遍历内存里所有页来判断。 fault n用

6、来记录缺页次数。42 随机指令序列的产生按照实验要求的写了,但是由于没有考虑细节,开始时出了点问题。(1) 当m=319时,我们顺序执行 m+1会产生第32页的页地址,从而使页地址没能按要求限制在0, 31之间。解决方法:采用循环模加来避免超出范围。(2) 但是这样之后有可能出现模0的问题。所以我索性将等于0的模数都赋值为160.最后的程序如下。void produce, inst()intm , n ;intnum = 0;while(num maxn )m=rand () %maxn ;instnum+= ( m+1)% maxnif ( num = maxn ) breakm = ( m

7、+2) % maxn ;if (m = 0) m = 160 ;n = rand () %m ;instnum+ = (n +1)% maxn;if (num = maxn ) break ;n = ( n + 2) % maxn ;m = maxn - n ;if (m = 0) m = 160 ;m = rand () %m + n ;inst num+= m ;4.3. FIFO 算法定义变量ptr。一开始先预调页填满内存。在这一部分,ptr指向下一个要存放的位置。之后继续执行剩下的指令。此时, ptr表示队列最前面的位置,即最先进来的位置,也就是下一个要被替换 的位置。ptr用循环加,

8、即模拟循环队列。4.4. LRU算法定义数组ltu, 即last_time_use 来记录该页最近被使用的时间。定义变量ti模拟时间的变化,每执行一次加一。这个算法,我没有预调页,而是直接执行所有指令。若当前需要的页没在内存里,就寻找最近最少使用的页,也就是ltu最小的页,即最近一次使用时间离现在最久的页,然后替换掉它。或者在内存还未满时,直接写入,这个我以初始化内存里所有页为-1来实现。若已经在内存里了,则只遍历内存内的页,把当前页的最近使用时间改一下即可。4.5. OPT算法定义数组ntu,即next_time_use来记录下一次被使用的时间,即将来最快使用时间。初始化为-1.开始时预调页

9、填满内存里的页。同样利用变量ptr来表示下一个要存放的位置从而控制预调页的过程。接着初始化ntu数组为-1。然后求出每一页下一次被使用的指令号,以此代替使用时间。如果所有剩下的序 列都没有用该页时,则还是-1.这种值为-1的页显然是最佳替换对象。然后执行所有剩下的指令。当该页不在内存里时,遍历ntu数组,遇到-1的直接使用该页,没有则用ntu值最大的,也就是最晚使用的。无论该页在不在内存里,因为这一次已经被使用了,所以都应该更新这个页的ntu,只需往前看要执行的页流,记录下第一个遇到的该页即可。如果没有找到同样添-1即可。5. 编程实现(源程序):#i nclude #i nclude #in

10、 clude #in clude using n amespace stdcon stintmax n=320; /序列个数con stintmax=max n+ 20 ; /数组大小con stintmaxp=max/ 10 ; /最大页数intin st max; / 指令序列int page max; / 页地址流int size/内存能容纳的页数bool in maxp ;/该页是否在内存里,提高效率int pin maxp ;/现在在内存里的页void welcomeprintf(printf(printf(printf()“*nBy sch nee On2011-12-06*n班级

11、:09211311 班内序号:*nn30*n););););void in put_h int()pri ntf32)n);pri ntfpri ntfpri ntf(n1-create new instruction sequenee 2-set memory page number(4 to(3-solve by FIFO algorithm(5-solve by OPT algorithm4-solve by LRU algorithm n0-exitn);(*please input Your choice:I!););/*通过随机数产生一个指令序列,共320条指令*/voidprod

12、uce_ inst()intm,n ;intnum = 0;while(num maxn )m=rand () %maxn ;instnum+= ( m+1)% maxnif(num = maxn ) break ;mif=(m+2) % maxn ;(m = 0) m = 160 ;n=rand () %m ;instnum+= (n +1)% maxnif(num = maxn ) break ;n=(n + 2) % maxn ;m=maxn - n ;if(m = 0) m = 160 ;m=rand () %m + n ;instnum+= m ;/*将指令序列变换成为页地址流*/v

13、oid tur n_page_address()for ( int i =0; i maxn; i +) page i = in st i / 10 ; void FIFO_solve ()false , sizeof=0; /缺页率(in );memset ( in int fault_ n intptr , i/预调页填满空间ptr =0; /下一个要放的位置for ( i=0;i maxn & ptr size ;i +)if(! inpage i )pinptr += page i ;inpage i = true ;fault_n+;/继续执行剩下的指令ptr = 0; /队列里最先

14、进来的位置,即下一个要被替换的位置for (; i maxn ; i +)if (! in page i )inpin ptr = falseinpage i = truepinptr = page i ;fault_ n+;ptr=(ptr +1) %size,fault_n);(1-( fault_n+0.0 )/ 320.0 );printf ( nBy FIFO algorithm, the fault-page number is: %dn pri ntf(”the hit ratio is : %.2lfnvoidLRUsolve()intltumaxp ;/last_time_u

15、seintti=1 ;/模拟时间intfault_ n= i0;memset(ltu ,0,sizeof (ltu );memset(in , false,sizeof(inmemset(pin , - 1,sizeof(pin )intmin , ptr , i,j ;for(i=0; i maxn; i +)if(! in pagei )/寻找lrumin=;ptr=0;for (j =0;j size ;j +);if ( ltu j min )min= Itu j ;ptr= j ;/替换或写入if ( pin ptr !=- 1)in pin ptr = false ;in page

16、 i = true ;pin ptr = page i ;fault_ n+;Itu ptr = ti +;else /已经在内存里则只需更改最近使用时间for (j =0; j vsize ; j +)if ( pin j = page i )ltu j = ti +;break ;,fault_n);(1-( fault_n+0.0 )/ 320.0 );printf( nBy LRU algorithm, the fault-page number is: %dnpri ntf(”the hit ratio is : %.2lfnvoidOPT_solve ()intntu maxp ;

17、 next_time_useintfault_ n= 0;inti , j ;memsetmemset(in , false , sizeof ( in );(ntu , - 1, sizeof ( ntu );/预调页填满int ptr=:0;for ( i =0;i maxn & fault_nsizeif (! inpage i )inpage i = trueJpinptr = page i ;fault_ n+;ptr+;i +)/初始化ntu数组ptr = 0;for (j =i ; j maxn & ptr 32; j +) if ( ntu page j = - 1)ntu p

18、age j = j ;ptr+;int max ;for (; i maxn ; i +)if (! in page i )max= 0; ptr = 0;for (j =0; j max )max= ntu pin j ;ptr= j ;in pin ptr = false ;in page i = true ;pin ptr = page i ;fault_ n+;ntu page i = - 1;for (j =i +1; j maxn ; j +) if ( page j = page i ) ntu page i = j ;break,fault_n);(1-( fault_n+0.

19、0 )/ 320.0 );printf( nBy OPT algorithm, the fault-page number is: %dnpri ntf(”the hit ratio is : %.2lfnint mai n ()sra nd(time (NULL);welcome ();int choiceJwhile (1)in put_h int();scanf(%d ,&choiceprintf(n););if (choice = 0)pri ntf(BYE-BYE!n);break ;if ( choice = 1)produce, inst();turn _page_address();printf(New page address sequenee is set O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论