操作系统课程设计报告--页面置换算法模拟程序设计.docx
《操作系统课程设计报告--页面置换算法模拟程序设计.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告--页面置换算法模拟程序设计.docx(23页珍藏版)》请在三一办公上搜索。
1、操作系统课程设计报告题目:页面置换算法模拟程序设计专 业:院系:目录第一部分概述第二部分设计的基本概念和原理第三部分总体设计3.1算法流程图3.2算法的简要实现方法3.2.1 OPT页面置换算法3.2.2 FIFO页面置换算法3.2.3 LRU页面置换算法3.2.4 LFU页面置换算法第四部分详细设计4.1 main 函数4.2 OPT函数4.2 FIFO 函数4.3 LRU函数4.5 LFU函数4.6辅助函数4.6.1 Designer 函数4.6.2 mDelay 函数4.6.3 Download 函数4.6.4 Compute 函数4.6.5 showTable 函数第五部分实现源代码第
2、六部分简要的使用说明及主要运行界面第七部分总结第八部分参考文献第一部分概述设计任务:页面置换算法是虚拟存储管理实现的关键,通过本次课程设计理解内存页面 调度的机制,在模拟实现OPT、FIFO、LRU和LFU几种经典页面置换算法的基 础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。第二部分设计的基本概念和原理(1) .页面淘汰机制页面淘汰又称为页面置换。若请求调页程序要调进一个页面,而此时该作业 所分得的主存块已全部用完,则必须淘汰该作业已在主存中的一个页。这时,就 产生了在诸页面中淘汰哪个页面的问题,这就是淘汰算法(或称为置换算法)。置换算法可描述为,当要索取一个页面并送入主
3、存时,必须将该作业已在主存中 的某一页面淘汰掉,用来选择淘汰哪一页的规则就叫做置换算法。(2) .各种页面置换算法的实现思想OPT算法是当要调入一新页而必须先淘汰一旧业时,所淘汰的那一页应是以 后不要再用的或是以后很长时间才会用到的页。FIFO算法的实质是,总是选择在主存中居留时间最长(即最老)的一页淘 汰。其理由是最先调入主存的页面,其不再被使用的可能性比最近调入主存的页 的可能性大。LRU算法的实质是,当需要置换一页时,选择最长时间未被使用的那一页淘 汰。如果某一页被访问了,它很可能马上还要被访问;相反,如果它很长时间未 曾用过,看起来在最近的未来是不大需要的。LFU即最不经常使用页置换算
4、法,要求在页置换时置换在一定时期内引用计 数最小的页,因为经常使用的页应该有一个较大的引用次数。本次设计取整个页 面访问时期为计算周期,实际问题中应根据页面数量多少来确定周期。第三部分总体设计3.1算法流程图输入页面访问序列是否是否缺页按算法不同淘汰一页面置缺页标志flag为*调入所访问的页面 取访问的页号 );getchar();system(cls);/DOS命令,清除屏幕上的所有文字system(color 0B); /改变控制台的前景和背景色printf(请输入物理块的个数mSize = 10:);scanf(d, &mSize);printf( 请输入页面数pSize = 50:);
5、scanf(d, &pSize);printf(请输入页面序列110之间:n);for (i = 0; i pSize; i +)scanf(d,&pagei);Download(pSize, mSize);system(cls);system(color 0E);do(printf(即将进入物理块的页面序列为:n);for (i = 0; i );getchar();system(pause); /冻结屏幕system(cls); while (code != 5);getchar ();OPT函数:void OPT(int page, int pSize, int mSize) (int
6、i, j, k;int count = 0; /计数器int memeryMSIZE = 0;/存储装入物理块中的页面int nextMSIZE = 0;/记录物理块中对应页面的最后访问时间sum = 0;for (i = 0; i pSize; i +)j = 0;while (j mSize) & (pagei != memeryj) /查页表,看是否 缺页j +;if (j = mSize)flag = *;缺页,则置标志flag为*sum += 1;/记录缺页次数if (sum = mSize)/如果物理块中有空余,则将当前页面直接放入for (j = 0; j mSize; j +)
7、if (memeryj = 0)memeryj = pagei;break;else/物理块已满的情况下for (j = i + 1; j pSize; j +) /查找以后不再使用或在 最长时间以后才会用到的页for (k = 0; k mSize; k +)if (pagej = memeryk)nextk += 1;/记录将被使用的次数,可以不用累加count +;记录物理块中以后将即被使用的页面个数break;if (count = mSize - 1) break; /如果已有 mSize-1 个页面即将被使用,则剩下最后一个页面一定是最长时间后才会用到的页if (count = 0
8、)memery0 = pagei;else(count = 0;for (k = 0; k mSize; k +)(if (nextk = 0)总是置换出第一个可以换出的页memeryk = pagei;nextk = 0;/初始化 next 口数组else flag =;pflagi = flag;/记录当前页的缺页情况for (k = 0; k mSize; k +) /记录每一次的置换情况 tableki = memeryk;Compute();showTable(page, pSize, mSize);FIFO函数:void FIFO(int page, int pSize, int
9、mSize)int i, j;int memeryMSIZE = 0;存储装入物理块中的页面sum = 0;for(i = 0; i pSize; i+) 查页表,看是否缺页j = 0;while (j 0; j -) 淘汰最先调入的页面,并调入当前页面 memeryj = memeryj-1;memery0 = pagei;else flag =;pflagi = flag;for (j = 0; j mSize; j+) tableji = memeryj;Compute();showTable(page, pSize, mSize);LRU函数:void LRU(int page, in
10、t pSize, int mSize)int i, j, k;int memeryMSIZE = 0;存储装入物理块中的页面sum = 0;for (i = 0; i pSize; i +)j = 0;while (j 0) 总是把最长时间内未被使用的页放在最后一页memeryk = memeryk-1;k -;memery0 = pagei; 调入当前页面for (k = 0; k mSize; k +) 记录每一次的置换情况 tableki = memeryk;Compute();showTable(page, pSize, mSize);LFU函数:void LFU(int page,
11、int pSize, int mSize)一int i, j, replace; /replace标记使用次数最少的页int useMSIZE = 0; /记录当前各页已使用次数,其中use0中存放使用次 数最少的页的次数int memeryMSIZE = 0;存储装入物理块中的页面sum = 0;for (i = 0; i pSize; i +)usepagei += 1; /下标即为页号j = 0;while (j mSize) & (pagei != memeryj)查页表,看是否缺页j +;if (j = mSize)flag = *; 缺页,则置标志flag为*sum += 1;if
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告 页面 置换 算法 模拟 程序设计
链接地址:https://www.31ppt.com/p-5304510.html