- 6
- 0
- 约 10页
- 2016-12-21 发布于北京
- 举报
os模拟页面置换算法.txt爱情是艺术,结婚是技术,离婚是算术。这年头女孩们都在争做小“腰”精,谁还稀罕小“腹”婆呀?高职不如高薪,高薪不如高寿,高寿不如高兴。用C语言或C++语言对页面置换算法进行模拟LFU NUR
要求:从文件中输入进程的n个访问序列,以及分配给进程的物理页面数m,输出该访问序列的缺页率q。
//*****LRU*********************:
#include stdio.h
#include stdlib.h
#define mSIZE 3//分配三个内存页块
#define 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;i12;i++)
{
printf(%d ,w[i]);
}
}
void LRU()
{
int i = 0, j = 0,k=0,x,y;
int replace;
for(i = 0; ipSIZE; i++) //对输入序列进行循环
{
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;k3;k++)
if(k!=jmemery[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;k3;k++)
if(k!=jmemery[k].num!=0)memery[k].count++;//其他不为0页count++
break;//跳出此次内存块循环
}
}
if(x==0y==0)//既没有与即将访问页号相同的内存块也没有空内存块
{
int m=memery[0].count;
for(j = 0; j mSIZE; j++)
{
if(memery[j].countm)
m=memery[j].count;
}//查找出count最大的内存块m
for(j=0;jmSIZE;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++
}
}
for(j = 0 ;j mSIZE; j++) //打印每次访问后的情况
printf(%d ,memery[j].num);
printf(\t%d\n,replace);
}
}
//*******nur********************
#includestdio.h
#includestdlib.h
#define ap 4
#define CLEAR_PERIOD 4
#define max 100
struct zhan //处理页数顺序的栈
{
int i;
int j; //状态项,用于
原创力文档

文档评论(0)