操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx

上传人:b****3 文档编号:16610826 上传时间:2022-11-24 格式:DOCX 页数:17 大小:110.47KB
下载 相关 举报
操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx_第1页
第1页 / 共17页
操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx_第2页
第2页 / 共17页
操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx_第3页
第3页 / 共17页
操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx_第4页
第4页 / 共17页
操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx

《操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。

操作系统课程设计老化算法模拟分页系统Word文档下载推荐.docx

教师评语………………………………………………………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模块设计

整个程序运用老化算法并使用VisualStudio2008开发平台。

整个程序中分为读取文件,修改R位,读取R位,判断缺页中断和主函数。

2.1.1主函数模块

main()程序流程控制和控制时钟周期以及最终的结果打印。

voidmain(){

charch[Size];

read(ch);

inti=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"

);

\n"

//写入计数器

readch();

//清空R位

for(inti=0;

i<

10;

i++)

R[i]=0;

}

}

printf("

\n计数器最终情况:

for(intj=0;

j<

row;

j++)

{

\t\t"

for(intk=0;

k<

5;

k++)

%d"

count[k][j]);

缺页中断数:

\t%d\n"

fault_num);

}

2.1.2修改R位模块

change(charc)将读入的字符逐一进行判断并修改其对应的R位上的值,当R位上为0则改为1,1则无需做任何修改。

//读取R位

voidreadch(){

charch;

for(inti=0;

i++){

ch=frame[i];

//获取帧对应的R位,并写入计数器

count[i][row]=R[ch-48];

row++;

2.1.3读取文件模块

read(charch[])判断文件是否存在,并将data.txt的内容读取到字符数组ch[]中。

//读取文件内容

voidread(charch[])

{

file=fopen("

date.txt"

"

rb"

if(file==NULL)

cannotopenthedate.txtfile"

while(!

(feof(file)))

{ch[i]=getc(file);

fclose(file);

2.1.4判定缺页中断模块

dauflt(charc)每当读入一个文件首先在frame[4]判断是否有空位,有则直接补到空位处并引发缺页中断;

无则查看计数器,选择最小计数器对应的帧来存放,并同样引发缺页中断;

另外,当此数在帧内存在时,无需做任何操作。

//判断缺页中断

voiddauflt(charc){

inth=0;

intmin=0;

intcounts[3]={0};

//判断是否有空位

for(h=0;

h<

3;

h++){

if(frame[h]==c)

break;

if(0>

frame[h]||frame[h]<

9){

frame[h]=c;

fault_num++;

丨"

}

//无空位的情况

if(h==3){

//判断帧内是否有这个数

for(intp=0;

p<

p++){

if(frame[p]==c)

break;

//帧内无这个数

if(p==3){

//发生缺页中断

//统计计数器

for(intk=0;

k++){

for(intj=0;

j++){

counts[k]+=count[k][j];

}

}

//比较计数器,选择最小器

intminlin=counts[0];

for(intj=1;

if(minlin>

counts[j]){

min=j;

minlin=counts[j];

frame[min]=c;

//输出当前帧内情况

\t帧内情况:

"

for(intz=0;

z<

z++){

%c\t"

frame[z]);

2.1.5读取R位模块

readch()每当时钟周期到时,调用此函数将帧frame[4]内的值写入计数器count[4][row]中,row表示当前处于第几个时钟周期。

2.2流程图

不成功

 

3调试与测试

3.1调试过程中的问题

读取文件时候访问不了数据,页面访问序列存放到文件data.txt中,该文件放入工程目录下,然后将文件中的序列读入一个数组中。

修改R位,每个页设置一个R位(访问位),取值为0(表示未访问),取值为1,当在一个时钟滴答内访问该页时,置为1。

每个时钟滴答开始时置所有页的R位为0。

3.2测试结果

data.txt中的数据:

结果:

参考文献

[1]塔嫰鲍姆:

《现代操作系统》[M],机械工业出版社2009.7,第99页。

心得体会

每一次课程设计度让我学到了在平时课堂不可能学到的东西。

所以我对每一次课程设计的机会都非常珍惜。

不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。

一个多月的实验就这样到了尾声,我想我还学到了一些东西。

学习这门课之前不知道上这门课的真正用途在哪里,现在才知道操作系统是那么有用,电脑中一重之重的基础软件,当然非常复杂,这次的实验我是做第三个题目,而这个程序题目要求也并非真正的分页系统,而是模拟老化算法的分页系统,所以做起来难度并非很高。

教师评语

#include<

stdio.h>

stdlib.h>

string.h>

FILE*file;

#defineSize1000

#defineNum10//缺页中断数

staticintfault_num=0;

//帧

staticcharframe[3];

//访问位

staticintR[10]={0};

//计数器

staticintcount[3][1000]={0};

//计数器的列数

staticintrow=0;

//修改R位

voidchange(charc){

i+=48;

if(c==i)

R[i-48]=1;

i-=48;

灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬\n"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1