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

📄 pagequeue.cpp

📁 程序功能主要分为3个部分
💻 CPP
字号:
// PageQueue.cpp: implementation of the PageQueue class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "WALL_OS.h"
#include "PageQueue.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// 构造函数
PageQueue::PageQueue(int pG)
{
	pageGot = pG;
	// 构造页面队列
	page = new int [pageGot] ;
	// 构造权值数组
	power = new int [pageGot] ;
	int i=0;
	for(i=0;i<pageGot;i++)
	{
		// 页面队列元素页号设置为-1,表示页面空闲
		page[i] = -1;
		// 权值设置为99,表示最早被替换出页面队列
		power[i] = 99;
	}
}
// 析构函数
PageQueue::~PageQueue()
{
	// 释放页面队列
	delete [] page;
	// 释放权值数组
	delete [] power;
}
// 入队列函数
void PageQueue::EnQueue(int pageNo, int pagePower)
{
	// 在权值数组中寻找最大权值的位置
	int i=0;
	int max = 0;
	for(i=1;i<pageGot;i++)
	{
		if(power[i] > power[max])
		{
			max = i;
		}
	}
	// 将权值最大的页面及其权值替换为pageNo和pagePower
	page[max] = pageNo ;
	power[max] = pagePower;
}
// 获取页面队列函数
int * PageQueue::GetQueue()
{
	// 返回页面队列指针
	return page;
}
// 查找页面函数
int PageQueue::Find(int pageNo)
{
	// 查找页号为pageNo的页在页面队列中的位置
	int i=0;
	for(i=0;i<pageGot;i++)
	{
		if(page[i] == pageNo) return i;
	}
	// 若该页不在队列中则返回-1
	return -1;
}
// 权值设置函数
void PageQueue::setPower(int pos,int pow)
{
	// 将权值数组的pos位置的权值设置为pow
	power[pos] = pow ;
}
// 权值减1函数
void PageQueue::decPower()
{
	// 整个权值数组的元素都进行减1操作
	int i=0;
	for(i=0;i<pageGot;i++)
	{
		power[i]--;
	}
}

⌨️ 快捷键说明

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