欢迎来到天天文库
浏览记录
ID:43318824
大小:237.53 KB
页数:16页
时间:2019-09-29
《《操作系统课程设计》_老化算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、老化算法模拟分页系统设计与编写程序使用老化算法模拟一个分页系统。页面访问序列从文件(文本文件)屮读取。对于一个给定的输入文件,列岀每1000个内存访问中发生缺页屮断的数目。摘要I1总体设计11・1概要设计12详细设计22.1模块设计22.1.1主函数模块22.1.2修改R位模块32.1.3读取文件模块32.1.4判定缺页中断模块42.1.5读取R位模块62.2流程图73调试与测试83.1调试过程屮的问题83.2测试结果9参考文献10心得体会11教师评语12附录131总体设计1.1概要设计1.编写一个程序,它使用老化算法模拟一个分页系统。页帧的数量是参数。页面的访问序列从文件中读取
2、。对于一个给定的输入文件。列出每1000个内存访问小发生缺页小断的数口,它是可用页帧数的函数。(教材P141,41题);2.一个简单的典型测试数据:分配的内存帧数:3进程页访问序列:0、1、2、3、4、1、2、0、1、2、3、4、0、1、2、3;3.程序屮相对地址空间为10个页。程序设计作为参数输入,假设页帧为3块,初始均为空;程序设计时作为参数输入,时钟周期为10个数;4.按要求设计测试比较更大数据量的页而访问。2详细设计2.1模块设计整个程序运用老化算法并使用VisualStudio2008开发平台。整个程序中分为读取文件,修改R位,读取R位,判断缺页小断和主函数。2.1.1
3、主函数模块mainO程序流程控制和控制时钟周期以及最终的结果打印。voidmain(){charch[Size];read(ch);inti=0;wh订eC0J<=ch[i]&&ch[i]〈二'9'){printf("%c",ch[i]);//写入帧并判断缺页中断daufIt(ch[i]);//修改R位change(ch[i]);i++;//时钟周期为10个数if(i%10==0){printf(〃八、、八、、八、、八、、八、、八、、八、、八、、八、、八、、八、、八、、八、、八、、printf(,z,z);〃写入计数器rcadchO;//清空R位for(inti=0;i<10
4、;i++)R[i]=0;printfC计数器最终情况:『);for(intj=0;j5、帧对应的R位,并写入计数器count[i][row]=R[ch-48];)row++;I2.1.3读取文件模块read(charch[J)判断文件是否存在,并将data,txt的内容读取到字符数组ch[]屮。//读取文件内容voidread(charch[])inti=0;file=fopcn(,/datc.txt",〃rb〃);if(f订e==NULL)printf(,zcannotopenthedatc.txtf订c");whilc(!(fcof(filc))){ch[i]二gctc(file);i++;}fclosc(file);}2.1.4判定缺页中断模块dauflt(c6、harc)每当读入一个文件首先在frame[4]判断是否有空位,有则直接补到空位处并引发缺页小断;无则查看计数器,选择最小计数器对应的帧来存放,并同样引发缺页中断;另外,当此数在帧内存在时,无需做任何操作。//判断缺页中断voiddauflt(charc){inth=0;intmin=0;intcounts[3]={0};〃判断是否有空位for(h=0;h<3;h++){if(frame[h]二二c)break;if(0>framc[h]7、8、frame[h]<9){frame[h]二c;fault_num++;printfCI");break;//无空位的情况if(h==3){〃9、判断帧内是否冇这个数for(intp=0;p〈3;p++){if(frame[p]==c)break;}//帧内无这个数if(p==3){//发生缺页小断fault_num++;printf(〃I〃);〃统计计数器for(intk=0;k<3;k++){for(intj=0;jcount
5、帧对应的R位,并写入计数器count[i][row]=R[ch-48];)row++;I2.1.3读取文件模块read(charch[J)判断文件是否存在,并将data,txt的内容读取到字符数组ch[]屮。//读取文件内容voidread(charch[])inti=0;file=fopcn(,/datc.txt",〃rb〃);if(f订e==NULL)printf(,zcannotopenthedatc.txtf订c");whilc(!(fcof(filc))){ch[i]二gctc(file);i++;}fclosc(file);}2.1.4判定缺页中断模块dauflt(c
6、harc)每当读入一个文件首先在frame[4]判断是否有空位,有则直接补到空位处并引发缺页小断;无则查看计数器,选择最小计数器对应的帧来存放,并同样引发缺页中断;另外,当此数在帧内存在时,无需做任何操作。//判断缺页中断voiddauflt(charc){inth=0;intmin=0;intcounts[3]={0};〃判断是否有空位for(h=0;h<3;h++){if(frame[h]二二c)break;if(0>framc[h]
7、
8、frame[h]<9){frame[h]二c;fault_num++;printfCI");break;//无空位的情况if(h==3){〃
9、判断帧内是否冇这个数for(intp=0;p〈3;p++){if(frame[p]==c)break;}//帧内无这个数if(p==3){//发生缺页小断fault_num++;printf(〃I〃);〃统计计数器for(intk=0;k<3;k++){for(intj=0;jcount
此文档下载收益归作者所有