⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os.h

📁 虚拟存储管理的模拟
💻 H
字号:
#include<iostream.h>
#include<cstdlib>
#define TRUE 1
#define FALSE 0
typedef struct memory
{
	int pagenum;//页号
	int times;//被应用的次数
}Memory;

class stack{
	Memory *top;
	Memory *base;
	int stacksize;
public:
	int size();//当前大小
	bool empty();
	void push(Memory);
	Memory pop();
	stack(int size);
	~stack();
	int getstacksize();
	int search(int n);//如果找到返回下标
	void exchange(Memory mem,int i);
	void print();
	int searchmin();
	int pagenum(int n);
};
int stack::pagenum(int n)
{
	return base[n].pagenum;

}
int stack::searchmin()
{
	int j=0;
	for(int i=1;i<size();i++)
		if(base[i].times>base[j].times)
			j=i;
	return j;

}
void stack::print()
{
	for(int i=0;i<size();i++)
	{
		cout<<base[i].pagenum<<" ";
	}
	//cout<<endl;

}
void stack::exchange(Memory mem,int i)
{
	if(mem.pagenum==base[i].pagenum)
		base[i].times=0;
	else 
		base[i]=mem;
	for(int j=0;j<size();j++)
	{
		if(j!=i)
			base[j].times++;
	}
}
int stack::search(int n)
{
	for(int i=0;i<size();i++)
		if(base[i].pagenum==n)
			return i;
	return -1;
			
}
stack::stack(int size)
{
	stacksize=size;
	base=new Memory[stacksize];
	top=base;
}
stack::~stack()
{
	delete []base;
}
bool stack::empty()
{
	if(base==top)
		return TRUE;
	return FALSE;
}
Memory stack::pop()
{
	//if(empty())
	//	return;
	return *--top;
}
void stack::push(Memory mem)
{
	if(size()==stacksize)
		return;
	*top++=mem;
	for(int i=0;i<size();i++)
		base[i].times++;
}
int stack::size()
{
	return top-base;
}
int	stack::getstacksize()
{
	return stacksize;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -