- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
老化算法模拟分页系统
摘 要
设计与编写程序使用老化算法模拟一个分页系统。页面访问序列从文件(文本文件)中读取。对于一个给定的输入文件,列出每1000个内存访问中发生缺页中断的数目。
目 录
摘要………………………………………………………………I
1总体设计………………………………………………………1
1.1概要设计………………………………………………………1
2 详细设计………………………………………………………2
2.1 模块设计……………………………………………………2
2.1.1 主函数模块………………………………………………2
2.1.2 修改R位模块……………………………………………3
2.1.3 读取文件模块……………………………………………3
2.1.4 判定缺页中断模块………………………………………4
2.1.5 读取R位模块……………………………………………6
2.2 流程图………………………………………………………7
3 调试与测试……………………………………………………8
3.1调试过程中的问题………………………………………………8
3.2测试结果………………………………………………………9
参考文献 ………………………………………………………10
心得体会 ………………………………………………………11
教师评语 ………………………………………………………12
附 录……………………………………………………………13
1 总体设计
1.1概要设计
1.编写一个程序,它使用老化算法模拟一个分页系统。页帧的数量是参数。页面的访问序列从文件中读取。对于一个给定的输入文件。列出每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模块设计
整个程序运用老化算法并使用Visual Studio2008开发平台。整个程序中分为读取文件,修改R位,读取R位,判断缺页中断和主函数。
2.1.1主函数模块
main()程序流程控制和控制时钟周期以及最终的结果打印。
void main(){
char ch[Size];
read(ch);
int i=0;
while(0=ch[i] ch[i]=9){
printf(%c,ch[i]);
//写入帧并判断缺页中断
dauflt(ch[i]);
//修改R位
change(ch[i]);
i++;
//时钟周期为10个数
if(i%10 == 0){
printf(灬灬灬灬灬灬灬灬灬灬灬灬灬灬\n);
printf(\n);
//写入计数器
readch();
//清空R位
for(int i=0;i10;i++)
R[i] = 0;
}
}
printf(\n计数器最终情况:\n);
for(int j=0;jrow;j++)
{
printf(\t\t);
for(int k=0;k5;k++)
printf(%d,count[k][j]);
printf(\n);
}
printf(缺页中断数:\t%d\n,fault_num);
}
2.1.2修改R位模块
change(char c)将读入的字符逐一进行判断并修改其对应的R位上的值,当R位上为0则改为1,1则无需做任何修改。
//读取R位
void readch(){
char ch;
for(int i=0;i5;i++){
ch = frame[i];
//获取帧对应的R位,并写入计数器
count[i][row] = R[ch-48];
}
row++;
}
2.1.3读取文件模块
read(char ch[])判断文件是否存在,并将data.txt的内容读取到字符数组ch[]中。
//读取文件内容
void read(char ch[])
{
int i=0;
file=fopen(date.txt,rb);
if(file==NULL)
printf(can not open the date.txt file);
while(!(feof(file)))
{ ch[i]=getc(file);
i++;
}
fclose(file);
}
2.
文档评论(0)