#include "stdafx.h"
#include <iostream>
#include<string.h>
using namespace std ;
class Lnode
{
friend class queue;
private:
int data;
Lnode *next;
public:
Lnode(){data=-1;next=NULL;}
};
class queue
{
friend class LRU;
private:
Lnode *front;
Lnode *real;
static int count;
public:
void initqueue(queue &q,int);//构造一个空队列
void enqueue(queue &q,int);//向对头插入数据
void outqueue(queue &q,int);//从队尾出数据
void display(queue &q);//显示队列中的内容
bool check(queue &q,int e);//检查队列中是否有e
};
int queue::count=0;
void queue::initqueue(queue &q,int length)
{ Lnode* node = new Lnode();
q.front=q.real=node;
q.front->next=NULL;
q.front->data=length;
}
void queue::enqueue(queue &q,int e)
{
Lnode* p = new Lnode();
p->data =e;
p->next =NULL;
q.real->next=p;
q.real =p;
count++;
}
void queue::outqueue(queue &q,int e)
{ Lnode *p=q.front->next ;
//if(q.front ==q.real )
// cout<<"队列已空"<<endl;
// else
// {
e=p->data ;
q.front ->next =p->next;
// if(q.real==p)
// q.real=q.front;
delete p;
count--;
cout<<e<<endl;
// }
}
void queue::display(queue &q)
{
Lnode *p=q.front->next ;
while(p)
{
cout<<p->data<<endl ;
p=p->next;
}
}
bool queue::check(queue &q,int e)
{ bool flag=true;
Lnode *p=q.front->next ;
Lnode *r=q.front ;
while(p)
{
if(p->data==e)
{ Lnode* m = new Lnode();
q.real->next=m;
q.real=m;
r->next=p->next;
m->data=e;
delete p;
flag=false;
return flag;
break;
}
else
{
r=p;
p=p->next ;
flag=true;
}
}
return flag;
}
class LRU
{
private:
int length;//队列长度
int d;//进程标号
queue q;
bool ifexit;//循环输入进程号
int outd;//输出队列的暂存变量
public:
LRU() ;
};
LRU::LRU ()
{
ifexit=true;
cout<<"请输入队列大小"<<endl;
cin>>length;
q.initqueue(q,length);
cout<<"开始创建进程队列"<<endl;
while(ifexit)
{
cout<<"请输入进程号"<<endl;
cin>>d;
bool f=q.check (q,d);
if(f&&q.count<length)
{
q.enqueue(q,d);
cout<<"进程队列内容1:"<<endl;
q.display(q);
}
else if(f&&q.count>=length)
{
cout<<"出队列元素:"<<endl;
q.outqueue(q,outd);
q.enqueue(q,d);
cout<<"进程队列内容2:"<<endl;
q.display(q);
}
else if(!f)
{
cout<<"进程队列内容3:"<<endl;
q.display(q);
}
}
}
void main()
{
LRU l;
//l.lru();
}
没有合适的资源?快使用搜索试试~ 我知道了~
采用近期最久未使用(LRU)算法仿真请求分页系统
共1个文件
cpp:1个
1星 需积分: 48 17 下载量 81 浏览量
2013-11-15
18:07:14
上传
评论
收藏 1KB RAR 举报
温馨提示
1、设计目的:用高级语言编写和调试一个内存分配程序,加深对内存分配算法的理解。 2、设计要求: 实现请求分页存储管理方式的页面置换算法:近期最久未使用算法(LRU) 内存物理块数固定为15个,对多个作业采用可变分配全局置换的策略分配物理块 作业数量与作业大小(10-20页)可在界面进行设置 所有作业按RR算法进行调度,时间片长度为1秒 可为每个作业随机产生引用的页面串,也可以人工输入引用的页面串,页面串引用长度30-50,要求必须包括作业所有的页面,可作为样例数据保存 可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、页面串长度的初始化 要求采用可视化界面,模拟内存分配和使用情况图,可在运行过程中随时暂停,查看当前内存物理块使用情况。 每次全部作业运行结束后,要求打印出访问命中率
资源推荐
资源详情
资源评论
收起资源包目录
LRU.rar (1个子文件)
LRU.cpp 2KB
共 1 条
- 1
资源评论
- 童养媳2015-02-17一大堆题目,其实只有设置几个队列大小,然后一个一个数输入,加一个出列的算法?是这样吧?学习 ing里边要求呵呵。
- chengzhuwei2014-12-25用不了,不符合要求,垃圾
shu890
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功