LIRS机制基本原理

  • Post author:
  • Post category:其他


LIRS分为两个队列:

Stack S :存储LIR块和HIR块(常驻或非常驻内存)

List Q :存储所有常驻HIR块

如下图所示

16278983131.png

对LIRS中的数据又三种访问情况:

  1. 访问一个LIR块X。LIR块的访问会在S中命中,此时需要将改X移动到S的栈顶,如果X最初在栈底,那么移动之后需要做【栈剪枝】操作;
  2. 访问一个HIR常驻内存块X。该访问也会被命中,首先将X移动到S栈顶,然后:
  • X在S中,将X状态由HIR修改为LIR,并从Q中移除,将S栈底的LIR块移到Q的尾端,并将状态修改为HIR,S执行【栈剪枝】;
  • X不在S中,保持其状态HIR,并将其移动到Q的尾端;
  1. 访问一个HIR非常驻内存块X。由于内存非常驻,因此未命中,先移除Q队列首端的HIR常驻内存(状态变为非常驻),然后将X加载入以释放的内存并将其放在S的栈顶,然后:
  • 如果X本身就在S中,将其状态修改为LIR,并将S栈底的LIR块移除到Q的尾端,状态改为HIR,S执行【栈剪枝】;
  • 如果X不在S中,保持其HIR的状态,并放在Q的尾端。

栈剪枝:在S栈底依次移除HIR块,直到栈底为LIR块内存。



版权声明:本文为CornerHebut原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。