资源简介
编程实现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
- 上一篇:MFC实现完整GoBang五子棋
- 下一篇:自动生成算式的四则运算机器
评论
共有 条评论