• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签:

资源简介

编程实现LRU算法,模拟实现虚拟存储器的地址变换过程。

资源截图

代码片段和文件信息

#include “stdio.h“
#include “math.h“
#include“malloc.h“
#include “stdlib.h“
#include “iostream.h“
#include “math.h“
#define OK 1
#define ERROR -1
#define Max 5
typedef int status;
typedef int SElemType;
int k=0;//记录缺页次数
/*--------------------栈及其操作---------------------*/
typedef struct {
    SElemType  *base; //栈底指针   
    SElemType   *top;  //栈顶指针
    int  count;    //栈的大小
}SqStack;

//构造空栈
status InitStack (SqStack &S){   
S.base=(SElemType *)malloc(Max * sizeof(SElemType));
if (!S.base)   return(OVERFLOW); 
S.count = 0;
S.top = S.base;
return(OK);
}

//入栈
status Push(SqStack &sSElemType e)
{
*s.top++=e;
s.count++;
// cout<<“插入“< return OK;
}

//销毁栈
status DestroyStack(SqStack &S)
{

S.top=NULL;
S.base=NULL;
delete[] S.base;
    S.count=0;
return OK;
}

//判断栈是否为空
bool EmptyStack(SqStack s)
{
if(s.count==0) return true;
else          return false;
}
//是否已满
bool full(SqStack s)
{
if(s.count==5) return true;
return false;
}
//判断是否已经存在
int equeal(SqStack sSElemType e)
{
int num=s.count;
if(EmptyStack(s)) return -1;
for (int i=1;i<=num;i++)
{
if(*(s.top-i)==e)
return i;
}
return -1;
}
//输出
void print(SqStack s){
int ainum=s.count;
//cout<<“有“< for (i=0;i {
a=*(s.base+i);
cout< }
cout<}
/*----------------页表---------------------*/
int pageLen=15;//页面数
int l=1024;  //页面大小
struct page{
int pageNum;
int memNum;
}p[15];
int initiate(){
int ij;
for (i=0;i {   
j=rand()%11;
p[i].pageNum=i;
p[i].memNum=i+j;
}
return 1;
}
int locate(int n){
for (int i=0;i {
if (p[i].pageNum==n)
{
return p[i].memNum;
}
}
return -1;
}
//物理地址
int adress(){
int padadr;
cout<<“请输入逻辑地址:“;
cin>>adr;
cout< pa=(int)adr/l;
if (pa<0||pa>=l)
{
cout<<“越界“< return -1;
}
d=adr%l;
int n=locate(pa);
if (n!=-1)
{
int m=n

评论

共有 条评论

相关资源