os模拟页面置换算法
更新时间:2023-07-21 01:53:01 阅读量: 实用文档 文档下载
os模拟页面置换算法
Ó?CÓ??ō»?C++Ó??ō¶ō?³??Ö?»»??·Ø´???Ä£ÄāLFU NUR
??ēó£?´Óīĵ?Ö??ä??´?³?µÄnøö·?ī?????£¬?ōµ°·ÖÅäø?´?³?µÄī????³????m£¬?ä³öø?·?ī?????µÄ?±?³ā?q £
//*****LRU*********************:
#include <stdio.h>
#include <stdlib.h>
#define mSIZE 3//·ÖÅä??øöÄ?´??³æé
#defin e pSIZE 12//×ܹ²12øö´?³?
struct mem
{
int num;
int count;
}memery[3]={0,-1,0,-1,0,-1};
static int process[pSIZE] ={1,2,3,4,1,2,5,1,2,3,4,5};//?³??·?ī?????
void LRU();
void get();
int main()
{
get();
printf("\n(LRU)\treplace\n");
LRU();
system("PAUSE");
return 0;
}
void get()
{
int w[12]={1,2,3,4,1,2,5,1,2,3,4,5};
int i,n;
for(i=0;i<12;i++)
{
printf("%d ",w[i]);
}
}
void LRU()
{
int i = 0, j = 0,k=0,x,y;
int replace;
for(i = 0; i<pSIZE; i++) //¶ō?ä??????´????-»·
{
os模拟页面置换算法
x=0;y=0; //Ö?x£¬y³õÖµī?0
for(j = 0; j < mSIZE; j++) //¶ō??øöÄ?´?æé´????-»·£¬??²éÕ?Ó??»Ó?Ó?µ´´«·?ī??³?Å???¬µÄ if(memery[j].num == process[i])
{ x=1;//Ó????¬µÄō?Ö?xī?1
replace=process[i];
memery[j].count=0;//Ö?´?æécountī?0
for(k=0;k<3;k++)
if(k!=j&&memery[k].num!=0)memery[k].count++;//?ä?ū²»ī?0?³count++
break;//??³ö´?´īÄ?´?æé?-»·
}
if(x==0)//?»Ó?Ó?µ´´«·?ī??³?Å???¬µÄÄ?´?æé
{
for(j = 0; j < mSIZE; j++)//¶ōÄ?´?æé?-»·£¬²éÕ?Ó??»Ó?æÕÄ?´?æé
if(memery[j].num== 0)
{
y=1;//Ó?ō?Ö?yī?1
replace=0;
memery[j].num=process[i];// Ö?´?Ä?´?æéī?·?ī??³?Å
memery[j].count=0;//Ö?´?æécountī?0
for(k=0;k<3;k++)
if(k!=j&&memery[k].num!=0)memery[k].count++;//?ä?ū²»ī?0?³count++
break;//??³ö´?´īÄ?´?æé?-»·
}
}
if(x==0&&y==0)//µ??»Ó?Ó?µ´´«·?ī??³?Å???¬µÄÄ?´?æé?²?»Ó?æÕÄ?´?æé
{
int m=memery[0].count;
for(j = 0; j < mSIZE; j++)
{
if(memery[j].count>m)
m=memery[j].count;
}//²éÕ?³öcount×ī´óµÄÄ?´?æém
for(j=0;j<mSIZE;j++)//¶ōÄ?´?æé?-»·£¬count=mµÄÄ?´?æé
{
if(memery[j].count==m)
{
replace=memery[j].num;
memery[j].num=process[i]; //Ö?´?Ä?´?æéī?·?ī??³?Åæé
memery[j].count=0;//Ö?´?æécountī?0
}
else memery[j].count++;//?ä?ūæécount++
}
os模拟页面置换算法
}
for(j = 0 ;j < mSIZE; j++) //´?Ó ?æ´ī·?ī??óµÄēéæö
printf("%d ",memery[j].num);
printf("\t%d\n",replace);
}
}
//*******nur********************
#include"stdio.h"
#include"stdlib.h"
#define ap 4
#define CLEAR_PERIOD 4
#define max 100
struct zhan //´¦???³???³??µÄÕ»
{
int i;
int j; //×´?¬?ī£¬Ó?Ó?×ī´ü?»Ó??¹Ó??³??µÄ??»»? ōń
zhan *next;
}*ap_top,*ap_tail;
zhan *mem_zhan[ap];//??×é±??¶Ä?´??³?µ?Ö´¦??µÄ?³Õ»
void shuru() //?ä???Æ???µ?Ö£¬?µ?Ö?³??????Ö´???³??µÄ´??
{
int m=1;
int ap_num; //?³?????æ
zhan *t;
printf("please input the ap's number of storage:");
scanf("%i",&ap_num);
ap_tail=(zhan *)malloc(sizeof(zhan));
printf("please input the turn of the ap:(end by '0')\n"); do{
if(m==1)
ap_top=ap_tail;
scanf("%d",&ap_tail->i);
if(ap_tail->i==0)
{ap_tail->next=NULL;break;
}
if(ap_tail->i<0||ap_tail->i>ap_num)//?ä??Å?´?´¦?? do{
printf("your inpution is wrong!continue~~\n");
scanf("%d",&ap_tail->i);
if(ap_tail->i==0)
os模拟页面置换算法
{ap_tail->next=NULL;
break;}
}while(ap_tail->i<0||ap_tail->i>ap_num);
t=(zhan *)malloc(sizeof(zhan));
ap_tail->next=t;//´Ø?¢?´±?
ap_tail=t;
m++;
}while(ap_tail->i!=0);
}
void shuchu()//³ö??Ä?´??³??µÄ?µ±?±??¶
{
zhan *p;
int m=0;
int n;
while(m<ap){
p=mem_zhan[m];
m++;
n=1;
do{
if(n==1)
printf("Ä?´??³%d?Å**%d ",m,p->i);
else
printf("*%d ",p->i);
n++;
p=p->next;
}while(p->next!=NULL);
printf("\n");
}
};
//====================??·Ø?µ?ֵĹ«¹²?Æ??²æ·Ö============================ int mingzhong(zhan *p[ap],zhan *jt)//?üÖ??Æ??
{
int m;
for(m=0;m<ap;m++)
if(p[m]->i==jt->i)
{ p[m]->j=max;
return 1;
break;
}
return 0;
os模拟页面置换算法
}
//=====================×ī´ü?»Ó??¹Ó??³???ō?-??·ØNUR?µ?Ö=============== void suanfa1()
{
int n;
int m;
int l;
zhan *p;
zhan *top[ap],*tail[ap];
p=ap_top;
for(m=0;m<ap;m++)//ÖøÕ?³õ?µ»Æ
{
mem_zhan[m]=(zhan *)malloc(sizeof(zhan));
mem_zhan[m]->i=0;mem_zhan[m]->j=0;
tail[m]=top[m]=mem_zhan[m];
}
do{
for(n=1;n<=CLEAR_PERIOD;n++)//ÖÜ???-»·
{
//?üÖ?´¦??
if(mingzhong(&tail[ap],p)==1)
{
for(m=0;m<ap;m++)//·ÖÅäæյ䲢´Ø?¢?´±?
{
tail[m]=(zhan *)malloc(sizeof(zhan));
tail[m]->i=top[m]->i;
tail[m]->j=top[m]->j;
top[m]->next=tail[m];
top[m]=tail[m];
if(m==ap-1)
if(top[m]->j==max)
for(m=0;m<ap;m++)
top[m]->j=0;
if(top[m]->i==p->i)
top[m]->j=max;
}
}
//²»Ö?´¦??
else
{
for(m=0;m<ap;m++)
{
if(top[m]->i==0)
os模拟页面置换算法
{
l=1;
break;
}
else
l=0;
}
if(l==1)
for(m=0;m<ap;m++)
{
if(top[m]->i==0)
{
top[m]->i=p->i;
top[m]->j=max;
break;
}
}
else
for(m=0;m<ap;m++)//? ōń×ī? ??»»¶ō?ó
{
if(top[m]->j==0)
{
top[m]->i=p->i;
top[m]->j=max;
break;
}
}
for(m=0;m<ap;m++)//·ÖÅäæյ䲢´Ø?¢?´±?
{
tail[m]=(zhan *)malloc(sizeof(zhan)); tail[m]->i=top[m]->i;
tail[m]->j=top[m]->j;
top[m]->next=tail[m];
top[m]=tail[m];
if(m==ap-1)
if(top[m]->j==max)
for(m=0;m<ap;m++)
top[m]->j=0;
}
}
if(n==CLEAR_PERIOD)//ÖÜ??´???Ö??ā³õ?µ»Æ{
os模拟页面置换算法
for(m=0;m<ap;m++)
top[m]->j=0;
}
p=p->next;
if(p->next==NULL)//×ī?óµÓøö?´±??Õī²
{
for(m=0;m<ap;m++)
top[m]->next=NULL;
break;
}
}
}while(p->next!=NULL);
}
//=====================???????ō?-??·ØOPT?µ?Ö========================= //?»?©?äÖ?Ó?µ´µÄ?Æ??
int panduan(zhan *p[ap])//Å?¶??ē·ńµ??é??±?£¬¶µÕ?µ´µ??é?ī
{
int m,h=0;
for(m=0;m<ap;m++)
if(p[m]->j==max)
{h=1;break;}
return h;
}
int zuiyuan(zhan *p[ap])//×īō¶?³??²éÕ?£¬????»»µÄ?³??
{
int n,m;
zhan *t1,*t2;
t1=p[0];
for(m=1;m<ap;m++)
{
t2=p[m];
if(t1->j<t2->j)//´óÓ???µ?Ó?²»´»»»
{
t1=t2;
n=m;
}
}
return n;
}
//============???????ō?-??·ØOPT?µ?ÖÖ÷?ā?Æ??============
void suanfa2()
{
os模拟页面置换算法
int m;
int n=1;
int k,h;
zhan *p1,*p2;
zhan *t1,*t2;
zhan *top[ap],*tail[ap];
p1=ap_top;
for(m=0;m<ap;m++)//³õ?µ»Æ?×?ī
{
top[m]=mem_zhan[m];
top[m]->i=0;
top[m]->j=max;
tail[m]=top[m];
}
do{
p2=p1->next;
//if(mingzhong(&top[ap],&p1)==1)//?üÖ?µÄēéæö´¦??for(m=0;m<ap;m++)
{
if(top[m]->i==p1->i)
{h=1;break;}
else
h=0;
}
if(h==1)//?üÖ?µÄēéæö´¦??
{
for(m=0;m<ap;m++)
{
tail[m]=tail[m]->next;
tail[m]->i=top[m]->i;
tail[m]->j=max;
top[m]=tail[m];
}
}
else//·ē?üÖ?ēéæö´¦??
{
do{
for(m=0;m<ap;m++)//?°Õ?Ä?´?ø÷?³????µÄ¶???
{
if(top[m]->i==p2->i)
if(top[m]->j==max)
top[m]->j=n;
}
for(m=0;m<ap;m++)
os模拟页面置换算法
{
h=0;
if(top[m]->j==max)
{h=1;break;}
}
if(h==0)//Å?¶??ē·ń?°Õ????«
break;
n++;
if(p2->next==NULL)
break;
p2=p2->next;
}while(p2->next!=NULL);
//k=zuiyuan(&top[ap]);//?°Õ?×īō¶¶???Ä?´??³??£¬?²¶??ē????»»µÄÄ?´??³for(m=0;m<ap;m++)
{
if(top[m]->i==0)
if(top[m]->j==max)
top[m]->j=max+1;
}
t1=top[0];
k=0;
for(m=1;m<ap;m++)
{
t2=top[m];
if(t1->j<t2->j)//´óÓ???µ?Ó?²»´»»»
{
t1=t2;
k=m;
}
}
top[k]->i=p1->i; //×īō¶?³????»»
for(m=0;m<ap;m++) //???ā???»?ī²¢³õ?µ»Æ
{
tail[m]=tail[m]->next;
tail[m]->i=top[m]->i;
tail[m]->j=max;
top[m]=tail[m];
}
}
p1=p1->next;
}while(p1->next!=NULL);
}
os模拟页面置换算法
void main()
{
zhan *q;
q=ap_top;
shuru();
printf("=====×ī´ü?»Ó??¹Ó??³???ō?-??·ØNUR?µ?Ö==============\n"); printf("\n");
suanfa1();
shuchu();
printf("\n=====???????ō?-??·ØOPT?µ?Ö=======================\n"); printf("\n");
suanfa2();
shuchu();
}
正在阅读:
os模拟页面置换算法07-21
《民法典》学习宣传教育工作方案范文09-12
头发风波作文500字07-14
太阳能多功能手电筒08-14
现代汉语语法研究必读书目12-06
口腔预防医学试题09-11
2016年护士资格考试押题试卷实践能力(一)(含答案、解析)06-01
军训心得作文800字06-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 置换
- 算法
- 模拟
- 页面
- 第二框 我爱我家 学案
- 2015小学英语五年级下册Unit 3 My school calendar第五课时(表格版)
- 实验初中14秋九年级物理月考试题
- 基于疲劳损伤两段论的复合材料刚度降模型研究
- 建筑防水工程施工质量控制技术分析
- 京沪铁路安全生产试卷
- 毕业生欢送晚会拉赞助策划书
- 2020年苏科版初二数学上学期第5章平面直角坐标系单元检测题(含答案)
- 2012软考信息系统项目管理师考前模拟试题及参考答案1
- 高压同步电动机常见故障的分析及处理
- 2015年北京第二外国语学院德语语言文学考研参考书,考研招生人数
- 人美版高一美术说课稿
- 高级工理论考试试卷(A卷)
- 酸碱盐复习课(专题复习4:物质的共存)
- 深圳市家具企业消防安全生产达标全套资料
- 一年级 奥数题100道及答案
- 小学数学四年级上册角的度量测试题
- 第三章 玻璃生产工艺
- 陆天然:因果法则如何改造命运?
- 鹅的生活习性和饲养管理技术