我在理解 FIFO& amp; LRU ,我正在尝试将我的代码更改为那些。
这是我的默认pageFault方法:
private void pageFault(int pageNumber){
pageFaults++;
try {
pageFile.seek(pageNumber*PageSize);
for(int b=0;b<PageSize;b++)
RAM[freePos*PageSize+b]=pageFile.readByte();
} catch (IOException ex) {
Logger.getLogger(MemoryManager.class.getName()).log(Level.SEVERE, null, ex);
}
pageTable[pageNumber] = freePos;
freePos++;
}
该方法运行良好,但我不确定如何使其成为FIFO&amp; LRU,像这样:
private void pageFaultFIFO(int pageNumber);
private void pageFaultLRU(int pageNumber);
答案 0 :(得分:3)
让我们清楚你的FIFO和LRU理解。
FIFO 的: 操作系统跟踪队列中内存中的所有页面,最近到达后面,最早到达前面。当需要更换页面时,会选择队列前面的页面(最旧的页面)。虽然FIFO便宜且直观,但在实际应用中表现不佳。 的 的
例如。 如果你有10件鞋和你的妈妈说任何5个垃圾,那么你会选择最老的5个垃圾。
<小时/> LRU 的: LRU的工作思想是,过去几条指令中使用最多的页面最有可能在接下来的几条指令中大量使用。 的 的例如。 在这里,如果你有10件鞋和你的妈妈说任何5个垃圾,那么你会选择那5个鞋来淘汰你不经常使用的鞋子。