请求页式存储管理中常用页面置换算法.docxVIP

  • 6
  • 0
  • 约6.59千字
  • 约 15页
  • 2020-02-07 发布于江西
  • 举报

请求页式存储管理中常用页面置换算法.docx

课程名称 计算机操作系统 实验项目名称 请求页式存储管理中常用页面置换算法模拟 学号 20111214034 班级 计?1103 姓名 韩瑶 专业 计算机科学与技术 实验地点 12J-661?实验室 计算机操作系统 实 验 报 告 济南大学 信息科学与技术学院 2013?年?xx?月?xx?日 一、实验概述 1.?实验名称 请求页式存储管理中常用页面置换算法管理 2.?实验目的 (1)了解内存分页管理策略 (2)掌握调页策略 (3)掌握一般常用的调度算法 (4)学会各种存储分配算法的实现方法。 (5)了解页面大小和内存实际容量对命中率的影响 3.?实验内容 (1)采用页式分配存储方案,通过分别计算不同算法的命中率来比较算法的优劣, 同时也考虑页面大小及内存实际容量对命中率的影响; (2)实现?OPT?算法?(最优置换算法)?、LRU?算法?(Least?Recently)?、?FIFO?算法 (First?IN?First?Out)的模拟; (3)使用某种编程语言模拟页面置换算法。 二、实验环境 C?语言 三、实验过程 1.?设计思路和流程图 选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换 1 开始 载入页号序列,从第?0?个得到页号 将页号放入物理块中,编号加?1 否 引用串编号大 于物理块数? 是 是 页号在物理块中? 是 根据选择的置换算法完成置换 是 页号序列载完? 是 结束 2.?算法实现 2 (1)OPT?基本思想: 是用一维数组?page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的 页面。数组?next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从 物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。 (2)FIFO?基本思想: 是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当 发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助辅助数组?time[mSIZE]记 录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。 (3)LRU?基本思想: 是用一维数组?page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的 页面。数组?flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时, 就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。 3.源程序并附上注释 #include?stdio.h #include?stdlib.h /*全局变量*/ int?mSIZE;?/*物理块数*/ int?pSIZE;?/*页面号引用串个数*/ static?int?memery[10]={0};?/*物理块中的页号*/ static?int?page[100]={0};?/*页面号引用串*/ static?int?temp[100][10]={0};?/*辅助数组*/ /*置换算法函数*/ void?FIFO(); void?LRU(); void?OPT(); /*辅助函数*/ void?print(unsigned?int?t); void?designBy(); void?download(); void?mDelay(unsigned?int?Delay); /*主函数*/ void?main() { int?i,k,code; system(color?0A); designBy(); printf(┃请按任意键进行初始化操作... ┃\n); 3 printf(┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n); printf(?); getch(); system(cls); system(color?0B); printf(请输入物理块的个数(M=10):); scanf(%d,mSIZE); printf(请输入页面号引用串的个数(P=100):); scanf(%d,pSIZE); puts(请依次输入页面号引用串(连续输入,无需隔开):); for(i=0;ipSIZE;i++) scanf(%1d,page[i]); download(); system(cls); system(color?0E); do{ puts(输入的页面号引用串为:); for(k=0;k=(pSIZE-1)/20;k++) { for(i=20*k;(ipSIZE)(i20*(k+1));i++) { if(((i+1)%20==0)||(((i+1)%20)(i==pSIZE-1))) printf(%d\n,page[i]); else printf(%d ,page[i]); } } printf(*?*?*?*?*?*?*?*

文档评论(0)

1亿VIP精品文档

相关文档