《操作系统》实验三 存储管理.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统》实验三 存储管理

实验三 存贮器管理 一、实验目的 本课题实习的目的用高级语言编写一个程序,模拟实现分页式虚拟存储管理,并对几种常用的页面调度算法(、LRU、FIFO OPT等)进行分析比较,评测其性能优劣,从而加深对虚拟存储管理以及各种调度算法的了解。 二、实验要求 采用一些常用的存贮器分配算法,设计一个存贮器管理模拟系统并调试运行。模拟环境应尽量接近真实。 三、实验内容 问题描述 ⑴通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①一半的指令是顺序执行的; ②四分之一的指令是均匀分布在前地址部分; ③四分之一的指令是均匀分布在地址部分。 具体的实施办法是: ①在[0,319]之间选一起点m; ②顺序执行一条指令,即m+1条;③向前地址[0,m—1]中执行一条指令m; ④顺序执行一条指令,即m+1条; ⑤向后地址(m+2,319)执行一条指令m’’⑵将指令序列变换成为页地址流。 假设: ①页面大小为1KB; ②用户实容量为4页到32页; ③用户虚存容量为32KB。 用户虚存容量32KB,每1KB中放10条指令,共320条指令(0319)。其中09为0页,1019为1页…310319为31页。 ⑶使用不同的页面调度算法处理缺页中断,并计算不同实存容量下(432KB)的命中率。 ①先进先出算法(FIFO); ②最近最少使用算法(LRU); ③最佳淘汰算法(OPT);先淘汰最不常用的页地址; ④最少访问页面算法(LFU)。 命中率的算法为: 命中率=缺页中断次数/页地址流长度 关于随机数的产生办法。首先要初始化设置随机数,产生序列的开始点,例如,通过下列语句实现: rand(400) ⑴计算随机数,产生320条指令序列 m=160 for(i=0;i80;i++) { j=i*4; a[j]=m; a[j+1]=m+1; a[j+2]=a[j]*1.0*rand( )/32767; a[j+3]=a[j+2]+1; m=a[j+3]+(319-a[j+3]*1.0*rand( )/32767; } ⑵将指令序列变换成为页地址流 for (k=0;k320;k++) {pt=a[k]/10; … } ⑶计算不同算法的命中率 rate=1—1.0*U/320; 其中U为缺页中断次数,320是页地址流长度。 ⑷输出格式 k fifo lru 4 0.23 0.25 … … … 32 1.0 1.0 4、算法及框图 (1)先进先出算法(FIFO) 先进先出算法的出发点是先进内存者先被淘汰,即选择在内存中驻留时间最长的一页淘汰之。理由是,最早调入的页在近期不再被使用的可能性要大于最近调入的页。实现这种算法的基本方法是,为调入的每一页以递增方式标明调入次序,淘汰时选择次序值最小的那一页,或者建立一个先进先出队列,总是淘汰队首的那一页。 (2)最近最久未使用淘汰算法(Least Recently Used) 这是一种经常使用的有效算法,淘汰最近一段对间内最久未被访问的页面。它是根据程序执行时所具有局部属性(时间局部性属性)来考虑的,其思想是刚被访问过的页面,常常马上又要被访问,而那些在较长时间里未被使用的页面,一般来说可能不会马上被访问。 这种算法实现起来较困难,实际应用中往往采用LRU近似算法。如采用不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。若当前调用页已在页表内,则把它再次调整到链尾。这样就能保证最近使用的页总是靠近链尾部分,而不常使用的页就移到链尾,逐个被淘汰,页表较大时,调整页表链的代价也是不小的。 (3)算法总体框图(见后图3.1) (4)FIFO算法与LRU算法框图 四、存储管理示例 1.问题描述 该模拟系统的外部特性与真实系统基本一样。存贮分配算法采用首次适应法。用拼接和搬家技术来处理存贮器碎片。 2.数据结构 (1)自由链与区头。内存空区采用自由链结构。链首由指针freep指向,链中各空区按地址递增次序排列。初启时整个用户内存区为一个大空区。在每个空区首部设置一个区头(freearea)结构。区头信息包括: size 空区大小(以字节计),包括区头所占空间 next 前向链指针,指向下一个空区 back 反向链指针,指向上一个空区 address 本空区首地址。 (2)内存分配表MAT。 系统设置一个MAT,每个运行作业都在MAT中占有一个表目,因收分区时清除相应表目。表目信息包括 : name 用户作业名 length 作业区大小 ; addr 作业区首地址。 3.算法 存贮分配算法采用首次适应(FF)法。根据指针freep查找自由链,当找到第一块可满足分配请求的空区时便分配之。当某空区被分配后的剩余空闲空间大于规定的碎片最小容量min时,则形

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档