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