操作系统课程设计页面置换算法模拟.docVIP

操作系统课程设计页面置换算法模拟.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计页面置换算法模拟

操作系统 课程设计报告 专业 网络工程专业 学生姓名 班级 学号 指导教师 完成日期 2012年 2月 22日 计算机科学与技术学院 目录 一、设计目的 3 二、设计内容 3 (1)概述 3 (2)设计原理 3 (3)详细设计及编码 4 (4)运行结果分析 12 (5)设计小结 15 (6)参考文献 16 题目:页面置换算法的模拟实现一 一、设计目的学习完操作系统课程后进行的一次全面的综合训练,加深操作系统基础理论和的理解,加强学生的动手能力。设计内容(1)概述FIFO); 2、最近最久未使用算法(LRU) (2)设计原理1、先进先出算法(FIFO);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面先进先出的算法主要是先进入栈的先后进行叶面淘汰算法,及通过计入页面失效的次数而计算出命中率。 2、最近最久未使用算法(LRU);如果内存中含有该页面则不用淘汰页面。而内存中不存在该页面最近最久未被使用时在同一时间内优先淘汰在内存中最近最久未被使用的页面淘汰掉。通过计入页面失效的次数而计算出命中率。 (3)详细设计 1、 FIFO 页面置换算法的流程图: 2、LRU页面置换算法 二、先进先出(FIFO)和最近最久未使用算法(LRU)的页面置换算法代码如下: #includestdio.h #includestdlib.h #includetime.h //windows下面运行则用#includeprocess.h #define RRUE 1 #define FALSE 0 #define INVALID - 1 #define NULL 0 #define total_instruction 320 //指令 #define total_vp 32 //页面 typedef struct { int pn; int pfn; int counter; int time; }pl_type; pl_type pl[32]; //构造页面类型 typedef struct pfc_struct { int pn; int pfn; struct pfc_struct *next; }pfc_type; pfc_type pfc[32]; //页面控制结构 pfc_type *freepf_head; pfc_type *busypf_head; pfc_type *busypf_tail; int diseffect; int a[total_instruction]; int page[total_instruction]; int offset[total_instruction]; void initialize(); //初始化函数,给页面赋初始值 void FIFO(int total_pf); //先进先出页面置换算法 void LRU(int total_pf); //最近最久未被使用页面置换算法 void main() { int s,i; srand(10*getpid()); /*由于每次运行时进程号不同,顾客用来 作为初始化随机数队列的“种子”。*/ s = (int)((float)319*rand()/32767/32767/2)+1; //随机命令地址 for(i = 0;itotal_instruction;i+= 4) //产生指令队列 { if(s0 || s319) { printf(When i == %d,Error,s == %d\n,i,s); exit(0); } a[i] = s; //任选一指令访问点m a[i+1] = a[i]+1; //顺序执行一条指令 a[i+2] = (int)((float)a[i]*rand()/32767/32767/2); //执行前地址指令m a[i+3] = a[i+2]+1; //顺序执行一条指令 s=(int)((float)(318 - a[i+2])*rand()/32767/32767/2 + a[i+2]) + 2;//可以在windows下面运行的话则将/32767/32767改成%320 if((a[i+2]318) || (s319)) printf(a[%d+2],a number which is : %d and s == %d\n,i,a[i+2],s); } /* f

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档