操作系统实验报告6-页面置换算法模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验报告6-页面置换算法模拟
实验报告
( 2013 / 2014学年第1学期)
课程名称操作系统原理
实验名称实验6:页面置换算法模拟
实验时间2013 年12 月 10 日
指导单位软件工程系
指导教师杨健
学生姓名班级学号
学院(系) 软件工程系专业计算机软件与服务外包
//本?程ì序ò中D全?局?变?量?名?均ù由?两?个?单蹋?词洙?组哩?成é,?且ò开a头?字?母?大洙?写′int BlockSize = 5;//物?理え?块é大洙?小?
int PageCount = 200;//页?面?总哩?数簓
int PageSize = 1024;//页?面?大洙?小?
int AddrRange = 8*1024;//访?问ê地?址·范?围§
int get_num(int down,int up)//得?到?一?个?down~up之?间?的?整?数簓
{
int num;
char str[111];
while(1){
fgets(str,111*sizeof(int),stdin);
num=atoi(str);//把?字?符?串?中D的?数簓字?转羇换?为a整?数簓
if(num>=down&& num<=up)
break;
printf("输?入?范?围§有瓺误ó,请?重?新?输?入?:");
}//while
return num;
}
void init_block()//构1造ì一?个?空?的?物?理え?块é队ó列
{
Block.rear=Block.front=(BlockNode*)malloc(sizeof(BlockNode));
if(!Block.front){
printf("内ú存?分?配?失骸?败悒?\n");
exit(0);
}
Block.length=0;
Block.miss_count=0;
while(Block.rear=Block.front->next){
Block.front->next=Block.rear->next;
free(Block.rear);
Block.length--;
}
Block.rear=Block.front;
Block.length=0;
Block.miss_count=0;
}
void destroy_block()//销ú毁ù物?理え?块é
{
while(Block.rear=Block.front){
Block.front=Block.front->next;
free(Block.rear);
}
free(page);
}
void init_page()//初?始?化ˉ页?面?系μ列
{
int i,j;
srand(time(NULL));//用?当獭?前°系μ统?时骸?间?来ぁ?初?始?化ˉ随?机ú种?子哩? page=(struct node_page*) malloc(PageCount*sizeof(struct node_page));
for(i=0;i page[i].address=rand()%AddrRange; page[i].page_num=page[i].address/PageSize; } for(i=0;i for(j=i+1;j if(page[i].page_num== page[j].page_num){ page[i].next_order=j; break; }//if }//for if(j== PageCount)//说μ明÷page[i]以?后ó都?不?会á再ù访?问ê page[i].next_order= PageCount; }//for } void print_page()//打洙?印?页?面?系μ列 { int i; printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("页?面?系μ列为a:阰\n"); for(i=0;i printf("[%-2d,%-4d]",page[i].page_num,page[i].address%PageSize); if((i+1)%5== 0){ printf("\n"); }//if } printf("\n"); } void FIFO_Replace(int page_index)//FIFO置?换? { BlockNode*node; if(!Block.length){ else if(num == 2) confige(); } destroy_block(); return 0; } 截图 用心整理的精品word文档,下载即可编辑!! 精心整理,用心做精品18