- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 页面置换C语言精要
#includestdio.h
#includestdlib.h
#includewindows.h
void Print(int bc[],int blockCount)
{
int i;
for(i=0;iblockCount;i++)
{
printf(%d ,bc[i]);
}
printf(\n);
}
Travel(int bc[],int blockCount,int x)
{
int is_found=0;
int i;
for(i=0;iblockCount;i++)
{
if(bc[i]==x)
{
is_found=1;
break;
}
}
return is_found;
}
void FIFO(int pc[],int bc[],int pageCount,int blockCount)
{
int i;
printf(0:FIFO置换算法\n);
if(pageCount=blockCount)
{
printf(缺页次数为0\n);
printf(缺页率为0\n);
}
else
{
int noPage=0;
int p=0;
for(i=0;ipageCount;i++)
{
//printf(引用页:%d\n,pc[i]);
if(!Travel(bc,blockCount,pc[i]))
{
if(iblockCount)
{
bc[i]=pc[i];
}
else
{
if(p==blockCount)
{
p=0;
}
bc[p]=pc[i];
p++;
}
noPage++;
//printf(物理块情况:\n);
//Print(bc,blockCount);
}
//printf(\n);
}
printf(FIFO缺页次数为:%d\n,noPage);
printf(FIFO缺页率为:%.2f%%\n,(float)noPage/pageCount*100);
}
}
int FoundMaxNum(int a[],int n)
{
int k,j,i;
k=a[0];
j=0;
for (i=0;in;i++)
{
if(a[i]=k)
{
k=a[i];
j=i;
}
}
return j;
}
void LRU(int pc[],int bc[],int pageCount,int blockCount)
{
printf(1:LRU置换算法\n);
if(pageCount=blockCount)
{
printf(缺页次数为0\n);
printf(缺页率为0\n);
}
else
{
int noPage=0;
int i,j,m,p,k;
int bc1[100];
for(i=0;iblockCount;i++)
{
bc1[i]=0;
}
for(i=0;ipageCount;i++)
{
// printf(引用页:%d\n,pc[i]);
if(!Travel(bc,blockCount,pc[i]))
{
if(iblockCount)
{
bc[i]=pc[i];
for(p=0;p=i;p++)
{
bc1[p]++;
}
}
else
{
for(j=0;jblockCount;j++)
{
bc1[j]++;
}
k=FoundMaxNum(bc1,blockCount);
bc[k]=pc[i];
bc1[k]=1;
}
noPage++;
//printf(物理快情况:\n);
//Print(bc,blockCount);
}
else
if(Travel(bc,blockCount,pc[i]))
{
if(iblockCount)
{
for(j=0;j=i;j++)
{
文档评论(0)