操作系统实验报告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<PageCount;i++){
page[i].address=rand()%AddrRange;
page[i].page_num=page[i].address/PageSize;
}
for(i=0;i<PageCount;i++){
for(j=i+1;j<PageCount;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<PageCount;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。