设计一个程序,有一个虚拟存储区和内存工作区,实现下述三种算法中的任意两种,计算访问命中率(命中率=1

发布时间:2024-12-01 19:54

虚拟现实技术是一种模拟、创建和体验计算机生成三维环境的技术。 #生活知识# #科技生活# #虚拟现实技术#

第一部分。。。

#include <cstdlib>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define bsize 4 //物理块大小
#define psize 16 //进程大小
typedef struct page
{
int num; /*记录页面号*/
int time; /*记录调入内存时间*/
}Page; /* 页面逻辑结构,结构为方便算法实现设计*/
Page b[bsize]; /*内存单元数*/
int c[bsize][psize]; /*暂保存内存当前的状态:缓冲区*/
int queue[100]; /*记录调入队列*/
int K; /*调入队列计数变量*/
int phb[bsize]={0}; //物理块标号
int pro[psize]={0}; //进程序列号
int flag[bsize] = {0}; //进程等待次数(存放最久未被使用的进程标志)
int i = 0, j = 0,k = 0; //i表示进程序列号,j表示物理块号
int m = -1, n = -1; //物理块空闲和进程是否相同判断标志
int max = -1,maxflag = 0; //标记替换物理块进程下标
int count = 0; //统计页面缺页次数
//随机产生序列号函数
int* build()
{
printf("随机产生一个进程序列号为:\n");
int i = 0;
for(i=0; i<psize; i++)
{
pro[i] = 10*rand()/(RAND_MAX+1)+1;
printf("%d ",pro[i]);
}
printf("\n");
return(pro);
}
//查找空闲物理块

int searchpb()
{
for(j=0; j<bsize; j++)
{
if(phb[j] == 0)
{
m = j;
return m;
break;
}
}
return -1;
}
//查找相同进程

int searchpro()
{
for(j = 0; j < bsize; j++)
{
if(phb[j] == pro[i])
{
n = j;
return j;
}
}
return -1;
}
//初始化内存
void empty()
{
for(i=0;i<bsize;i++)
phb[i]=0;
count=0; //计数器置零
}
//先进先出页面置换算法
void FIFO()
{
for(i = 0; i<psize; i++)
{
m=searchpb();
n=searchpro();
//找flag值最大的
for(j = 0; j < bsize;j++)
{
if(flag[j]>maxflag)
{
maxflag = flag[j];
max = j;
}
}
if(n == -1) //不存在相同进程
{
if(m != -1) //存在空闲物理块
{
phb[m] = pro[i]; //进程号填入该空闲物理块
count++;
flag[m] = 0;
for(j = 0;j <= m; j++)
{
flag[j]++;
}
m = -1;
}
else //不存在空闲物理块
{
phb[max] = pro[i];
flag[max] = 0;
for(j = 0;j < bsize; j++)
{
flag[j]++;
}
max = -1;
maxflag = 0;
count++;
}
}
else //存在相同的进程
{
phb[n] = pro[i];
for(j = 0;j < bsize; j++)
{
flag[j]++;
}
n = -1;
}
for(j = 0 ;j < bsize; j++)
{
printf("%d ",phb[j]);
}
printf("\n");
}
printf("缺页次数为:%d\n",count);
printf("缺页率为:%16.6f",(float)count/16);
printf("\n");
}
/*初始化内存单元、缓冲区*/
void Init(Page *b,int c[bsize][psize])
{
int i,j;
for(i=0;i<psize;i++)
{
b[i].num=-1;
b[i].time=psize-i-1;
}
for(i=0;i<bsize;i++)
for(j=0;j<psize;j++)
c[i][j]=-1;
}

网址:设计一个程序,有一个虚拟存储区和内存工作区,实现下述三种算法中的任意两种,计算访问命中率(命中率=1 https://www.yuejiaxmz.com/news/view/338065

相关内容

计算机二进制表示和存储各种数据
人工智能和云计算带来的技术变革:虚拟助手的影响1.背景介绍 随着人工智能(AI)和云计算技术的不断发展,虚拟助手(Vir
java计算机毕业设计基于springboot的小区旧物交易系统的设计与实现(开题+程序+论文)
人工智能和云计算带来的技术变革:虚拟助手的应用与普及1.背景介绍 随着人工智能(AI)和云计算技术的不断发展,虚拟助手(
人工智能和云计算带来的技术变革:虚拟助手的影响1.背景介绍 随着人工智能(AI)和云计算技术的不断发展,我们的生活和工作
python+flask计算机毕业设计个人财务管理系统的设计与实现(程序+开题+论文)
这就是算法:日常生活中的算法应用
虚存管理与任务调度
大规模神经网络最新文献综述:训练高效DNN、节省内存使用、优化器设计
人工智能和云计算带来的技术变革:虚拟助手的应用与普及

随便看看