实验2存储管理_第1页
实验2存储管理_第2页
实验2存储管理_第3页
实验2存储管理_第4页
实验2存储管理_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、操作系统原理上机实践报告1 西华大学计算机系上机实践报告一. 实验目的1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解;2、熟悉虚存管理的各种页面淘汰算法。3、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二. 实验内容与设计思想上机实践内容:设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地 (用人工指定地方法或用随机数产生器)生成这个序列,使得50的指令是顺序执行的。 25的指令均匀地散布在前地址部分,25的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用fi

2、fo 页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。设计思路:产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以 1k 或 2k为 1 页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存如果该页已在主存,则打印页表情况; 如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不在主存且页表已满,则按fifo页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。存储管理算法的流程图如下: 操作系统原理上机实践报告2 图

3、 1 fifo 页面置换算法流程图三. 使用环境windows 8 , vs2012 四. 核心代码及调试过程addpage函数组要完成向页表中加入页,当页表未满时,直接将该页加入页表;若页表已经装满则淘汰最先进入的页面然后加入该页void addpage(page pa) if (isfull() cout 淘汰 p0.num 页 加入 pa.num 页n; for (int i = 0; i page_table_size - 1; i+) 开始结束操作系统原理上机实践报告3 pi = pi + 1; ppage_table_size - 1 = pa; else plength = pa

4、; length+; cout 加入 pa.num 页n; 模仿 cpu 逐条访问指令流,若指令地址所在页的页号大于总页数则发生越界中断;若指令地址所在页的页号在页表中则输出页表信息;若指令地址所在页的页号不在页表中,则发生缺页中断然后向页表中加入该页再输出页表信息; for (size_t i = 0; i read_size; i+) /计算页号 n int pagenum = readi/page_size ; cout 访问 pagenum =all / page_size) cout 越界中断 n; continue; if (pt.isinpagetable(pagenum) ;

5、else cout 缺页中断 n; pt.addpage(allpagepagenum); 操作系统原理上机实践报告4 图 1:直接访问存在页表中的页和页表未满直接加入页表图 2:页表已经满淘汰旧页面加入新页五. 总结fifo算法通过维护一个页面的链表来记录它们装入内存的顺序。淘汰的是最老的页面,但是该页面可能仍在使用,因此fifo算法不是一个好的选择。fifo算法理论上很简单,但是实际实现起来还是很有难度的,如果最开始的时候没有考虑好数据结构, 要那些数据。 用什么样的方式来组织, 后来的麻烦会有很多。还有就是语言本身的的特点,如数据的初始化,内存的管理。六. 附录完整代码:#include

6、 操作系统原理上机实践报告5 using namespace std; #define all 100000 /总共有好多指令#define page_size 1024 /页面尺寸为 1k #define page_table_size 10 /页表可以装 20 个页面#define read_size 100 /访问地址流个数class page public : int num; /页号int wlnum;/ 物理块号page() page(int n, int m) num = n; wlnum = m; ; class pagetable private: int length; /

7、页表长度public: page ppage_table_size; pagetable() /p = new pagepage_table_size; length = 0; 操作系统原理上机实践报告6 void addpage(page pa) if (isfull() cout 淘汰 p0.num 页 加入 pa.num 页n; for (int i = 0; i page_table_size - 1; i+) pi = pi + 1; ppage_table_size - 1 = pa; else plength = pa; length+; cout 加入 pa.num 页n; b

8、ool isfull() if (length page_table_size) return false; else return true; bool isinpagetable(int num) for (int i = 0; i length; i+) if (pi.num = num) return true; return false; void printtable() for (int i = 0; i length; i+) 操作系统原理上机实践报告7 cout 页号: pi.num t 物理块号 pi.wlnum endl; ; void main() /外存 中 所以的页

9、面page allpageall/page_size; /初始化 所有页面for (int i = 0; i all / page_size; i+) allpagei.num = i; allpagei.wlnum = 1024 * i; pagetable pt; /*模拟 cpu 运行*/ /创建 访问指令流int readread_size; for (int i = 0; i read_size; i+) if (i read_size / 4 & i3 * read_size / 4) readi = readi - 1 + 1; else readi = rand() % 40000; /开始逐条进行访问for (size_t i = 0; i read_size; i+) 操作系统原理上机实践报告8 /计算页号 n int pagenum = readi/page_size ; cout 访问 pagenum =all / page_size) cout 越界中断 n;

温馨提示

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

最新文档

评论

0/150

提交评论