欢迎来到天天文库
浏览记录
ID:53801559
大小:154.50 KB
页数:5页
时间:2020-04-07
《操作系统实验报告存储管理.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统上机实验报告实验名称:存储管理实验目的:通过请求页式存储管理页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理页面置换算法。实验内容:1.设计一个虚拟存储区和内存工作区;例如内存工作区大小为9个内存块,假设系统中最多可运行3个进程,每个进程分配3个内存块;2.模拟实现FIFO、LRU、OPT算法,给出页面走向,可计算缺页率;3.根据实验结果比较几种算法的差别。实验步骤及分析:(一)FIFO算法实现提示定义一个常量total_instruction来记录页面总共使用的次数;定义一个变量diseffect记录总共换入
2、页面的次数。利用公式diseffect/total_instruction*100%可以得到缺页率。(1)初始化。设置两个数组page[ap]和pagecontrol[pp]分别表示进程页面数和内存分配的页面数,并产生一个随机数序列pageorder[total_instruction](这个序列由page[]的下标随机构成)表示待处理的进程页面顺序,diseffect置0。(2)看pageorder[]中是否有下一个元素,若有,就由pageorder[]中获取该页面的下标,并转到(3);如果没有就转到(7)。(3)如果该page已在内
3、存中,就转到(2);否则就到(4),同时未命中的diseffect加1。(4)观察pagecontrol是否占满,如果占满须将使用队列中最先进入的pagecontrol单元“清干净”,同时将对应的page[]单元置为“不在内存中”。(5)将该page[]与pagecontrol[]建立关系。可以改变pagecontrol[]的标志位,也可以采用指针链接,总之至少要使对应的pagecontrol单元包含两个信息:一是它被使用了,二是哪个page[]单元使用的。Page[]单元也包含两个信息:对应的pagecontrol单元号和本page[
4、]单元已在内存中。(6)将用到的pagecontrol置入使用队列,返回(2)。(7)计算缺页率。(二)LRU算法实现提示(1)初始化。主要是进程页面page[]和分配的内存页面pagecontrol[],同时产生随机序列pageorder[],diseffect置0。(2)看pageorder[]是否有下一个元素,若有,就由pageorder[]中获取该页面的下标,并转到(3);如果没有就转到(6)。(3)如果该page已在内存中便改变页面属性,使它保留“最近使用”的信息,转到(2);否则转到(4),同时diseffect加1。(4)
5、判断是否有空闲的内存页面,若有,就返回页面指针,转到(5);否则,在内存页面中找出最长时间没有使用到的页面,将其“清干净”,并返回该页面指针。(5)在需要处理的page[]与(4)中得到的pagecontrol[]之间建立联系,同时让对应的page[]单元保存“最新使用”的信息,返回(2)。(6)如果序列处理完成,计算缺页率。(三)OPT算法实现提示为了简易实现OPT,可以为每个进程页面设一个“间隔”属性cDistance表示CPU将在第几步处理到该页面,如果页面不再被CPU处理,可以被设为某个很大的值(如32767),这样每次换出的就
6、是vDistance最大的那个页面。(1)初始化。设置两个数组page[ap]和pagecontrol[pp]分别表示进程页面数和内存分配的页面数,并产生一个随机数序列pageorder[total_instruction](这个序列由page[]的下标随机构成)表示待处理的进程页面顺序,diseffect置0。然后扫描整个页面访问序列,对vDistance[TOTAL_VP]数组进行赋值,表示该页面将在第几步被处理。(2)看pageorder[]是否有下一个元素,若有,就由pageorder[]中获取该页面的下标,如果没有就转到(6)
7、。(3)如果该页面已经在内存中了,就转到(2);否则转到(4)。(4)看是否有空闲的内存页面,如果有就直接返回该页面指针;如果没有,遍历所有未处理的进程页面序列,如果有位于内存中的页面,而以后CPU不再处理的,首先将其换出,返回页面指针;如果没有这样的页面,找出CPU最晚处理到的页面,将其换出,返回该内存页面指针。(5)在内存页面和待处理的进程页面之间建立联系,返回(2)。(6)计算缺页率。代码编写过程:创建.c文件和.h文件即代码编写:由于代码比往次实验多,所以课堂时间不够用,课下把四个文件编写完成,运行结果如下图:实验总结:在实验中
8、很多粗心造成的问题,比如指令输错字母,代码写错字母,没有注意是否需要空格等。通过课堂的理论知识学习和实验课的上机实验,让我更能理解操作系统的知识。
此文档下载收益归作者所有