📄 pagequeue.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 + -