




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现请求分页存储管理页面Optimal、FIFO、LRU调度算法文档1引言1.1编写的目的(1)通过编写程序实现请求分页存储管理页面Optimal、FIFO、LRU调度算法,使学生掌握虚拟存储管理中有关缺页处理方法等内容,巩固有关虚拟存储管理的教学内容。(2)了解Windows2000/XP中内存管理机制,掌握页式虚拟存储技术。(3)理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。1.2背景a. 实现请求分页存储管理页面Optimal、FIFO、LRU调度算法实验;b. 提出者:龙陈锋老师,开发者:孙敏,用户:面向所有学生;1.3定义 请求分页存储管理;Optimal调度算法;FIFO调度算法;LRU调度算法。1.4参考资料1 顾宝根,王立松,顾喜梅.操作系统实验教程核心技术与编程实例.北京:科学出版社.2003,2.2 任爱华,李鹏,刘方毅.操作系统实验指导.北京:清华大学出版社.2004,6. 3 王险峰,刘宝宏.Windows环境下的多线程编程原理与应用.北京:清华大学出版社.2002,7. 4 上课用教材2任务概述2.1目标 在Windows XP、Windows 2000等操作系统下,使用的VC、VB、java或C等编程语言,实现请求分页存储管理页面Optimal、FIFO、LRU调度算法。2.2用户的特点本专业的学生,能够对本专业的语言和运行环境有所了解。2.3问题描述 1)用随机数产生一个指令序列,共320条指令。其地址按下述原则生成: 50%的指令是顺序执行的; 25%的指令是均匀分布在前地址部分; 25%的指令是均匀分布在后地址部分;2)指令序列变换成页地址流 设:页面大小为1K; 用户虚存容量为32K。 在用户虚存中,按每1K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条第9条指令为第0页(对应虚存地址为0,9); 第10条第19条指令为第1页(对应虚存地址为10,19); 310条第319条指令为第31页(对应虚存地址为310,319); 按以上方式,用户指令可组成32页。3)计算并输出下述各种算法在不同内存容量(用户内存容量为4页到32页)下的缺页率。 A. OPT最佳淘汰算法B. FIFO先进先出的算法 C. LRU最近最少使用算法3.3输入输出要求PV原语的要求。4运行环境规定4.1设备 Windows2000/XP4.2支持软件VC、VB、java或C等编程语言。5. 具体实现及分析1 利用随机数产生一个指令序列,共320条指令。其地址按下述原则生成: 50%的指令是顺序执行的; 25%的指令是均匀分布在前地址部分; 25%的指令是均匀分布在后地址部分;2.指令序列变换成页地址流 设:页面大小为1K; 用户虚存容量为32K。 在用户虚存中,按每1K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条第9条指令为第0页(对应虚存地址为0,9); 第10条第19条指令为第1页(对应虚存地址为10,19); 310条第319条指令为第31页(对应虚存地址为310,319); 按以上方式,用户指令可组成32页。3.计算并输出下述各种算法在不同内存容量(用户内存容量为4页到32页)下的缺页率。 a) OPT最佳淘汰算法:OPT.java源代码:package instructions.algorithm;import instructions.*; /* * The implementation of Optimal algorithm. * author DigitalSonic */public class OPT extends Algorithm /* * Creates a new instance of OPT */ public OPT(int UserPagesCount,SequenceSeq, VirtualMemory VM) super(UserPagesCount, Seq, VM); = OPT; /* * Replace a page with the new one. * param NewPage The page ready to be inserted. */ public void replacePage(Page NewPage) if (VM.getCurrentEmptyIndex() != VM.UserPagesCount) VM.getUserPages()VM.getCurrentEmptyIndex()=NewPage; VM.setCurrentEmptyIndex(VM.getCurrentEmptyIndex() + 1); else VM.getUserPages()findUnusedPage(VM.getUserPages(), NewPage.getVisitTime() = NewPage; private int findUnusedPage(Page Pages, int CurrentInstruction) int Pos = new intPages.length; Page page; for (int m = 0; m Pages.length; m+) Posm = 0; page = Pagesm; for (int n = CurrentInstruction; n seq.getList().size(); n+) if (page = VM.getPages()Integer.parseInt(seq.getList().get(n).getName() / Page.PAGE_SIZE) Posm=n; break; return findMax(Pos); private int findMax(int Count) int Max = 0; int Index = 0; for (int i = 0; i Max) Max = Counti; Index = i; return Index; b) FIFO先进先出的算法:FIFO.java源代码:package instructions.algorithm;import instructions.*;/* * The implementation of First In First Out algorithm. * author DigitalSonic */public class FIFO extends Algorithm /* * Creates a new instance of FIFO */ public FIFO(int UserPagesCount, Sequence Seq, VirtualMemory VM) super(UserPagesCount, Seq, VM); = FIFO; /* * Replace a page with the new one. * param NewPage The page ready to be inserted. */ public void replacePage(Page NewPage) if(VM.getCurrentEmptyIndex()!=VM.UserPagesCount) VM.getUserPages()VM.getCurrentEmptyIndex()=NewPage; VM.setCurrentEmptyIndex(VM.getCurrentEmptyIndex() + 1); else VM.getUserPages()findFIPage(VM.getUserPages() = NewPage; private int findFIPage(Page Pages) int Index = Page.PAGE_SIZE * VirtualMemory.TOTAL_PAGE_COUNT; for (int i = 0; i Pages.length; i+) if (Pagesi.getVisitTime() Index) Index = i; return Index; c) LRU最近最少使用算法:LRU.java源代码:package instructions.algorithm;import instructions.*;/* * The implementation of Least Recently Used algorithm. * author DigitalSonic */public class LRU extends Algorithm /* * Creates a new instance of LRU */ public LRU(int UserPagesCount, Sequence Seq, VirtualMemory VM) super(UserPagesCount, Seq, VM); = LRU; /* * Replace a page with the new one. * param NewPage The page ready to be inserted.*/ public void replacePage(Page NewPage) if(VM.getCurrentEmptyIndex()!=VM.UserPagesCount) VM.getUserPages()VM.getCurrentEmptyIndex()=NewPage; VM.setCurrentEmptyIndex(VM.getCurrentEmptyIndex() + 1); else VM.getUserPages()findLRUPage(VM.getUserPages(), NewPage.getVisitTime() = NewPage; private int findLRUPage(Page Pages, int CurrentInstruction) Int Count = new intPages.length; Page page; for (int m = 0; m Pages.length; m+) Countm = 0; page = Pagesm; for (int n = 0; n CurrentInstruction & n seq.getList().size(); n+) if (page = VM.getPages()Integer.parseInt(seq.getList().get(n).getName() / Page.PAGE_SIZE) Countm+; return findMin(Count); private int findMin(int Count) int Min = Page.PAGE_SIZE * VirtualMemory.TOTAL_PAGE_COUNT; int Index = 0; for (int i = 0; i Count.length; i+) if (Counti Min)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 最接近国考的行测题库及答案详解【夺冠系列】
- 登高高处作业国考题库含完整答案详解(夺冠系列)
- 国考题库综合a4版附答案详解
- 辽宁省国考行测题库附参考答案详解(b卷)
- 消防维保国考题库附答案详解【研优卷】
- 税务局国考行测题库附完整答案详解【名校卷】
- 江苏国考行测题库及参考答案详解(达标题)
- 国考行测题库结构(易错题)附答案详解
- 许昌国考常识题库(b卷)附答案详解
- 辽宁省国考行测题库ab卷附答案详解
- 《百年孤独(节选)》课件 统编版高二语文选择性必修上册
- 江苏译林版二年级英语上册2A Unit2教案(共2课时)
- 四位数乘四位数乘法题500道
- 船舶贸易智慧树知到答案章节测试2023年上海海事大学
- 文明之痕:流行病与公共卫生智慧树知到答案章节测试2023年四川大学
- 《拒绝欺凌为成长护航》防欺凌主题班会课件
- 配电网工程施工工艺规范课件
- 疼痛总论课件
- 车辆授权委托书范本(精选11篇)
- 八年级第一次家长会课件
- 广东省行政执法资格考试题库(共80页)
评论
0/150
提交评论