版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统课程设计报告书Clock及改进Clock置换算法实现班级姓名学号指导老师2014年3月12日目录一、课程设计目的3二、系统分析与设计3三、算法流程图:4四、函数模块:6五、系统调试与结果:7六、设计心得与体会:9七、源程序代码:15四、函数模块主函数模块函数名称:intmain()功能:显示主菜单,调用函数检测模块函数名称:boolinblock(intnum)、boolinblock2(intnum)功能:检测读入的页号是否存在内存中、检测页号是否在内存中并把访问位和修改位置1修改模块函数名称:boolchange()、intwhichpage()功能:判断页面是否已经被修改、判断内存中第几个需要被置换Clock模块函数名称:voidCLOCK(intnum)功能:实现Clock置换算法,完成页面置换改进型Clock模块函数名称:voidLCOCK(intnum)功能:实现改进的ClockL置换算法,完成页面置换五、系统调试与结果 六、程序清单#include<iostream>#include<stdlib.h>#include<time.h>#defineN20//虚拟内存尺寸usingnamespacestd;intP;intconstblockCount=3;//内存中的物理块数intcount=0;intblock[blockCount];intconstPageCount=15;//总的页面数intPage[PageCount];intstate[blockCount];//clock置换算法中,内存中的每个页面号对应的状态intstate2[blockCount][2];//二维数组,第一行第一列为访问位,第一行的第二列为修改位doublelost=0.0;voidgenerate_list(int*list,inte,intm,intt){ inti,j=0,q=P,r; srand((unsigned)time(NULL)); while(j<e) { for(i=j;i<j+m;i++) { if(i==e) break; list[i]=(q+rand()%e)%N;//保证在虚拟内存的页号内 } j=i; r=rand()%100; if(r<t) q=rand()%N; else q=(q+1)%N; }}//随机生产是否被修改的情况,prop(0……100),prop/100的概率为被修改voidgenerate_modify(int*mo,inte,intprop){ inti,t; for(i=0;i<e;i++) { t=rand()%100; if(t>prop) mo[i]=0; else mo[i]=1; }}//检测页号是否在内存中boolinblock(intnum){ for(inti=0;i<blockCount;i++) { if(block[i]==Page[num]) { state[i]=1; returntrue; } } returnfalse;}//判断页面是否已经被修改boolchange(){ if((rand()%2+1)==1) { printf("该页面被修改!\n"); returntrue; } else returnfalse;}//用于改进型clock置换算法,检测页号是否在内存中并把访问位和修改位置1boolinblock2(intnum){ for(inti=0;i<blockCount;i++){ if(block[i]==Page[num]){ if(change()){ state2[i][0]=1; state2[i][1]=1; } else{ state2[i][0]=1; } returntrue; } } returnfalse;}//用于改进型clock置换算法,判断内存中第几个需要被置换intwhichpage(){ intj; for(j=0;j<blockCount;j++) {if(state2[j][0]==0&&state2[j][1]==0) { returnj; } } for(j=0;j<blockCount;j++) {if(state2[j][0]==0&&state2[j][1]==1) { returnj; } state2[j][0]=0; } for(j=0;j<blockCount;j++) { state2[j][0]=0; } returnwhichpage();}//简单Clock置换算法voidCLOCK(intnum){ intj; if(inblock(num)) { printf("命中!\n"); lost++; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); } else if(count==blockCount) { //lost++; for(j=0;j<blockCount;) { if(state[j]==0) { break; } else{ state[j]=0; } j++; j=j%3; } block[j]=Page[num]; state[j]=1; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); } else{ block[count]=Page[num]; count++; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); }}//改进型clock置换算法voidLCLOCK(intnum){ intj; if(inblock2(num)) { printf("命中!\n");lost++; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); } else if(count==blockCount) { //lost++; j=whichpage(); block[j]=Page[num]; state2[j][0]=1; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); } else{ block[count]=Page[num]; count++; for(inti=0;i<blockCount;i++)printf("物理块%d#中内容:%d\n",i,block[i]); }}intmain(){inta[N]; intmo[N];intA=10;inte,m,prop,t,j; printf("页面走向为:"); generate_list(a,e,m,t); generate_modify(mo,e,prop);for(inti=0;i<PageCount;i++) { Page[i]=rand()%9+1; printf("%d",Page[i]); } charch; printf("\n"); printf("\t\t1Clock置换算法\n"); printf("\t\t2改进型Clock置换算法\n"); printf("\t\t3退出!\n\n"); printf("请输入算法序号:\t\n");while(1){ scanf("%c",&ch); switch(ch){case'1':{ lost=0; count=0; for(intm=0;m<blockCount;m++) { state[m]=0; } for(intj=0;j<blockCount;j++) { block[j]=0; } for(inti=0;i<PageCount;i++) {printf("读入Page[%d]\n",i);CLOCK(i); } printf("页面访问次数:%d\n缺页次数:%0.lf\n",PageCount,PageCount-lost); printf("缺页率为:%0.001f\n",(PageCount-lost)/PageCount);printf("\n请输入算法序号:\t");}break;case'2':{lost=0; count=0; for(intm=0;m<blockCount;m++) {for(intn=0;n<2;n++) state2[m][n]=0; } for(intj=0;j<blockCount;j++) {block[j]=0; } for(inti=0;i<PageCount;i++) {printf("读入Page[%d]\n",i);LCLOCK(i);} printf("页面访问次数:%d\n缺页次数:%0.lf\n",PageCount,PageCount-lost); printf("缺页率为:%0.001f\n",(PageCount-lost)/PageCount);printf("\n请输入算法序号:\t");}break; case'3':{ exit(0); } }}return0;}七、实验心得通过这两周的课程设计,让我加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并能够用高级语言进行模拟演示。不仅提高对操作系统的了解,这次的课程设计也使自己的C语言编程能力加强了不少。虽然自己所做的很少也不够完善,但毕竟是我努力的结果。我也体会到,任何一门
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年办公桌行业市场深度分析及发展策略研究报告
- 2024-2030年冷挤压模具行业发展分析及投资价值研究咨询报告
- 2024-2030年农业旅游项目可行性研究咨询报告
- 2024-2030年内部组织密封剂行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年全球及中国高性能车轮行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024-2030年全球及中国零售业的人工智能行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024-2030年全球及中国量子计算在医疗保健中的应用行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024-2030年全球及中国超微型簧片开关行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024-2030年全球及中国设施管理软件行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024-2030年全球及中国裂隙灯透镜行业全景深度研究及未来趋势预测研究报告
- “扳手腕比赛”作文指导
- 特殊过程确认记录表
- 秦皇岛市住宅工程常见质量问题防治
- 西泠印社版书法指导五年级下册《左右结构》(二)
- (word完整版)八年级下册英语单词表中文
- 建设项目工程部绩效考核表.doc
- 超星尔雅学习通《数学文化》章节测试含答案
- 化疗药物外渗的应急预案
- 保险合同纠纷代理词范文3篇
- 基坑地下水回灌井施工方案
- 英语教学问卷调查
评论
0/150
提交评论