预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共41页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模仿虚拟存储器管理 姓名:杜志豪.学号:1798 班级:053班. 同组姓名:孙嘉轶 课程设计时间:.6.30——.7.4 评语: 成绩: 目录 设计内容及规定………………………………………………4 1.1设计题目……………………………………………………4 1.2使用算法分析:……………………………………………4 1.2.1FIFO算法(先进先出裁减算法)………………4 1.2.2LRU算法(最久未使用裁减算法)………………5 1.2.3OPT算法(最佳裁减算法)………………………5 1.3分工状况……………………………………………………5 详细设计…………………………………………………………6 2.1原理概述……………………………………………………6 2.2重要数据构造(重要代码)……………………………………6 2.3算法流程图…………………………………………………9 2.3.1主流程图………………………………………………9 2.3.2Optimal算法流程图…………………………………10 2.3.3FIFO算法流程图……………………………………10 2.3.4LRU算法流程图……………………………………11 2.4.1源程序文献名……………………………………………11 2.4.2执行文献名……………………………………………11 三、实验成果与分析……………………………………………………11 3.1Optimal页面置换算法成果与分析……………………11 3.2FIFO页面置换算法成果与分析………………………16 3.3LRU页面置换算法成果与分析………………………20 四、设计创新点………………………………………………………24 五、设计与总结………………………………………………………27 六、代码附录…………………………………………………………27 课程设计题目 设计内容及规定 1.1编写程序模仿虚拟存储器管理。假设以M页进程分派了N块内存(N<M)。 输入:设定系统分派块数,以及进程页面引用序列(也可随后产生)。 输出:显示每一次页面引用内存状态,最后显示产生缺页中断次数及页面置换次数(假设初始状态内存没有装入任何页面)。 必要分别使用如下置换算法完毕模仿: FIFO页面置换算法; LRU页面置换算法; 最佳(Optimal)页面置换算法。 1.2使用算法分析: 1.2.1FIFO页面置换算法: 该算法总是裁减最先进入内存页面,即选取在内存中驻留时间最久页面以裁减。该算法实现简朴,只需把一种进程已调入内存页面,按照先后顺序链接成一种队列,并设立一种指针,称为替代指针,使它总是指向最老页面。但该算法并不是都适合实际状况,由于在进程中,有些页面经常被访问,例如,具有全局变量、惯用函数,例程等得页面,FIFO算法并不能保证这些页面不被裁减。 LRU页面置换算法: 近来最久未使用(LRU)页面置换算法是依照页面调入内存后使用状况进行决策。由于无法预测各页面将来使用状况,只能运用“近来过去”作为“近来将来”近似,因而,LRU置换算法是选取近来最久未使用页面予以裁减。该算法赋予每个页面一种访问字段,用来记录一种页面自上次被访问以来所经历时间t,当须裁减一种页面时,选取有页面中t值最大,即近来最久为使用页面以裁减。 最佳(Optimal)页面置换算法: Optimal算法是一种理论算法,其所选取被裁减页面将是后来永久不使用,或许是在最长(将来)时间内不再被访问页面。采用最佳置换算法,普通可保证获得最低缺页率。但由于人当前还无法预知一种进程在内存若干个页面中,哪一种页面是将来最长时间内不再被访问,因而该算法是无法实现,便可以运用此算法来评价其她算法。 1.3分工状况:共同讨论并构思,杜志豪负责FIFO和LRU算法编程,孙嘉轶负责窗体界面和OPT算法编写。编程中遇到困难共同讨论并解决。 详细设计 原理概述 定义一种整型变量intbuffer=0来记录内存分块数,定义一种string类型算法stringsuanfa来选取详细算法;用一种数组int[]xulie来存储页面序列,长度为20;用一种数组int[]kuai来存储内存分派物理块个数,长度为5;用ints来记录详细环节数,用intnum来记录页面中断次数。空白表达物理块没有被使用。 重要数据构造(代码)构造体: 输入页面序列号: publicForm1()//输入页面序列号 { InitializeComponent(); for(inti=0;i<xulie.Length;i++) { xulie[i]=-1; } for(inti=0;i<kuai.Length