【问题标题】:How can I adjust this this function to FIFO & LRU?如何将此功能调整为 FIFO 和 LRU?
【发布时间】:2014-10-28 08:39:07
【问题描述】:

我在理解 FIFO 和 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 和 LRU,如下所示:

private void pageFaultFIFO(int pageNumber);

private void pageFaultLRU(int pageNumber);

【问题讨论】:

    标签: java fifo lru


    【解决方案1】:

    让我们理清你对 FIFO 和 LRU 的理解。

    先进先出: 操作系统在队列中跟踪内存中的所有页面,最新到达的页面在后面,最旧的页面在前面。当需要替换页面时,将选择队列最前面的页面(最旧的页面)。虽然 FIFO 便宜且直观,但在实际应用中表现不佳。

    例如。 如果你有 10 只鞋子,而你妈妈说要扔掉任何 5 只,那么你会选择最老的 5 只来扔掉。


    LRU: LRU 的工作理念是,在过去几条指令中使用最多的页面也最有可能在接下来的几条指令中被大量使用。

    例如。 在这里,如果你有 10 只鞋子,而你妈妈说要扔掉任何 5 只,那么你会选择那 5 只你不经常使用的鞋子来扔掉。

    【讨论】:

    • 感谢您向我澄清这一点。
    • 你现在最好的建议是什么?
    • 在 LRU 中,我们需要一种机制来知道哪个页面的使用频率较低。我之前没有实现过。
    • 查看此链接click here
    • 你在写什么? “我之前没有实施过”?你这是什么意思?
    猜你喜欢
    • 2011-01-04
    • 2013-05-19
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多