“在分页问题中,缓存容量为整数 $k\ge1$,初始缓存可为空或任意固定,所有标记初始清空。一 phase 从所有标记清空开始,持续到请求将引入第 $k+1$ 个不同页之前;请求某页后把它标记…”
形式陈述
接口与基准
作为在线算法,paging 的缓存容量为整数
直觉
缓存满时,在线策略必须为一个尚未知晓的未来选择牺牲哪一页;命中虽不付成本,却会改变 LRU 等策略对页面新鲜度的内部状态。离线 Belady 把未来最晚使用作为答案,只承担基准角色,不能成为在线淘汰动作的隐含信息。
例子与边界
系统边界
现实缓存还有写回、预取、非均匀页面和不同容量。Resource augmentation 允许在线算法使用更大缓存,必须明确 ALG 与 OPT 两侧容量。Paging 研究在线淘汰策略;ideal-cache 模型通常假定最优替换来分析布局,问题不同。
FIFO 虽有同阶竞争界,却不具 stack property,可能出现 Belady anomaly:增大缓存反而增加 fault。相同竞争比不表示两种策略的缓存状态具有包含关系。
LRU 的状态轨迹
容量
| 请求 | LRU 缓存 | 本次缺页 | 原因 |
|---|---|---|---|
| a | a | 1 | 空缓存装入 |
| b | b,a | 1 | 尚有空位 |
| c | c,b,a | 1 | 尚有空位 |
| a | a,c,b | 0 | 命中并移到最近端 |
| d | d,a,c | 1 | 淘汰最久未用的 b |
FIFO 按装入顺序淘汰,a 的命中不更新队列,因此最后一步淘汰 a。这段前缀中两者都缺页四次,状态却已不同:下一请求若是 a,LRU 命中而 FIFO 缺页;若是 b,结果相反。只比较一个前缀的总缺页数,不能推断后续行为相同。
对 a,b,c,d 的反复循环,容量三的 LRU 从空缓存开始每次都缺页;离线策略可以按未来访问次序保留更有用的页。循环压力并不意味着两者成本相同。
推论与应用
按缺页分段的竞争分析
证明
设一段开始前刚请求的页面为
若本段的
各完整段互不重叠,故这次计费不会重复。若有
另一种常见分段是“每段最多
现实扩展边界
脏页写回、预取和不同页面成本产生 weighted caching 等变体。LRU 的 stack property 也依相同请求序列与标准单位页模型;换成带费用或可变大小对象后,需要新的算法与竞争分析。随机标记算法是这一单位页接口的具体实现:保护本阶段已请求页,缺页时从未标记缓存页均匀选择淘汰者;其期望竞争保证针对预先固定请求序列的对手。
把缓存页视为服务器位置、不同页面间距离设为
参考资料
- Daniel D. Sleator and Robert E. Tarjan, “Amortized Efficiency of List Update and Paging Rules,” Communications of the ACM 28(2), 1985, pp. 202–208.
- David Karger / Tushara C. Karunaratna, Lecture 20 — Online Algorithms (continued), MIT 6.854, 2004(2017 课程存档),Paging:按 LRU 缺页分段的竞争界。
- Fiat et al., “Competitive Paging Algorithms,” J. Algorithms, 1991.