void CPageCache :: AgeCache(int iHit)
{
for (int i = 0; i < CACHE_SIZE; i++)
if (m_iCachedPages[i][PT_IDX] == iHit).
// make younger
m_iCachedPages[i][AGE] = 0;
else
m_iCachedPages[i][AGE]++;
}
void CPageCache :: UpdateCache(int iNewPageIdx)
{
int iOld = 0;
for (int i = 0; i < CACHE_SIZE; i++)
{
// if there's room in cache,grab first space
if (m_iCachedPages[i][PT_IDX] < 0)
{
iOld = i;
break;
}
// search for oldest page
if (m_iCachedPages[i][AGE] > m_iCachedPages[iOld][AGE])
iOld = i;
}
if (m_iCachedPages[iOld][PT_IDX] >= 0)
PageOut(m_iCachedPages[iOld][PT_IDX]);
m_iCachedPages[iOld][PT_IDX] = iNewPageIdx;
m_iCachedPages[iOld][AGE] = 0;
}
//End of File