Security-101 深度解析:SecOps 安全运营能力全景——SIEM、XDR 与安全运营增强技术
2026/9/17 20:39:57
已知某系统采用页式存储管理,某进程的地址访问序列如下表,设每页大小为 100 Bytes,请写出相应的虚页访问序列,并试用 FIFO LRU OPT 3种算法实现页面置换,写出相应的淘汰过程并给出各自依次淘汰的页(设允许进程在内存中最多占3个页面),空白处不得分。
按照“最早进入内存的页面最先被淘汰”的原则。
把内存当作一个队列,队头是最先进入的页面,队尾是最新进入。
当发生缺页且内存已满时,直接淘汰队头的页面。
实现简单、开销低。
不考虑页面的使用频率和时间,仅按进入顺序决定淘汰。
可能有“Belady 异常”:分配更多物理块反而使缺页次数变多。
淘汰“最近最长时间没有被使用过”的页面。
根据页面的“最近访问时间”来决定淘汰对象。
模拟“人的直觉”:未来最可能不用的就是过去很久没用过的。
每次访问页面时更新它的使用记录。
可用:
时间戳法:每次访问记录时间戳,淘汰最小的。
栈(双向链表)法:最新访问的移到栈顶,淘汰栈底。
缺页率通常比 FIFO 低。
属于“栈式算法” →不会发生 Belady 异常。
实现比 FIFO 复杂,需要维护使用记录。
淘汰未来最长时间不会被访问的页面。
完全根据未来访问序列做出最优选择。
是理想化的算法,因为实际操作系统不可能提前知道未来访问情况。
理论上缺页次数最少,是所有置换算法的下界。
常用于衡量其他算法的性能上限。
虽然不能真正使用,但在教学和分析中很重要。
| 算法 | 原理 | 是否考虑访问时间 | 是否可能 Belady 异常 | 实际可实现性 |
|---|---|---|---|---|
| FIFO | 按进入先后淘汰 | ❌ 不考虑 | ✔ 会发生 | ✔ 简单,使用 |
| LRU | 淘汰最近最少使用 | ✔ 考虑过去的访问 | ❌ 不会发生 | ✔ 可实现 |
| OPT | 淘汰未来最长时间不用 | ✔ 未来访问(理想) | ❌ 不会发生 | ❌ 不可实际实现 |
FIFO:先来的先走。
LRU:很久没用的先走。
OPT:未来最长时间不用的先走(最完美但做不到)。