求教内存页面调度的 aging(老化)算法

mutor756 2007-01-03 09:04:42
算法在NachOS下面实现


这是内存页面置换管理的构造函数涉及的代码:
MemManager::MemManager (int policy_in, int hbits_in)
{
.......

ASSERT(hbits > 0);
policy = PAGEREPL_AGING; //老化算法
hTimer = new Timer (PageTimer, 0, false);
history = new unsigned int[NumPhysPages];
memset (history, 0, sizeof (int) * NumPhysPages);
bitmask = (1 << hbits) - 1;
return;
}




这是在时间中断对页面信息更新下的函数中涉及的部分代码:
#ifdef CHANGE
unsigned int half = (unsigned int)((bitmask >> 1) + 1);
for (i = 0; i < NumPhysPages; i++) {
if(coreOwners[i]) {
history[i] = (history[i] >> 1);
if(coreOwners[i]->use) {
history[i] = history[i] | half;
coreOwners[i]->use = false;
}
}
}
#endif


这是缺页时候选择调出页面的部分代码:

unsigned int v_bitmask = 0xFFFF;
#ifdef CHANGE
int min=0;
for(int i=0;i<NumPhysPages;i++)
if(history[i]<history[min]||(history[i]==history[min]&&coreOwners[i]->dirty<coreOwners[min]->dirty))min=i;
victim=min; //victim为选中的页面号
#endif
break;




运行测试的结果非常失败,缺页频繁,读磁盘次数上万,(正常只有100多次)

请各位高手指点一下~不胜感激
...全文
775 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LAIER903 2011-02-06
  • 打赏
  • 举报
回复
是不是少了页面加载的处理?
mutor756 2007-09-24
  • 打赏
  • 举报
回复
无办法...结贴

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧