当前位置: 代码迷 >> 综合 >> 2022-1-24
  详细解决方案

2022-1-24

热度:66   发布时间:2023-10-14 11:33:02.0

2022-1-24

  • 超越物理内存
    • 策略
      • 简单策略:FIFO
      • 利用历史数据:LRU
      • 近似LRU
        • 考虑脏页

超越物理内存

策略

在内存满了的时候,我们需要将内存中不要用到的页与硬盘中需要用到的页进行替换,那么究竟替换哪一个呢

简单策略:FIFO

如题,类似一个队列,先进先出

利用历史数据:LRU

“最不经常使用”(Least-Frequently-Used,LFU)策略会替换最不经常使用的页。同样,“最少最近使用”(Least-Recently-Used,LRU)策略替换最近最少使用的页面。

近似LRU

LRU有一个问题,就是如何判断该页是否在最近有被使用过呢,可能的解决方法是在每次访问页的时候,去更新页的时间字段,但这样有一个问题,例如我们有4gb的内存,页的大小为4kb,这样机器就有一百万页,要遍历一百万页得到最近最不常访问的页这件事本身也十分耗时间
一个简单的近似实现方法是时钟算法,为每个页设一个使用位,如果该页被使用了,就置1,当系统需要替换页的时候,时钟指针随机指向一个页,如果该页的使用位为0,就将其替换掉,如果该页的使用位为1,就将其置0,然后指针指向下一页去看他的使用位

考虑脏页

时钟算法的一个小修改(最初也由 Corbato [C69]提出),是对内存中的页是否被修改的额外考虑。这样做的原因是:如果页已被修改(modified)并因此变脏(dirty),则踢出它就必须将它写回磁盘,这很昂贵。如果它没有被修改(因此是干净的,clean),踢出就没成本。物理帧可以简单地重用于其他目的而无须额外的 I/O。因此,一些虚拟机系统更倾向于踢出干净页,而不是脏页。