页面置换策略与概念解析
1. 页面置换基础概念
在内存管理中,页面置换策略至关重要。当只有一个空页面帧可用时,首个页面会被加载到内存并开始执行。例如,有如下代码:
for( j = 1; j < 100; ++j)
{
k = j * j;
m = a * j;
printf("\n%d %d %d", j, k, m);
}
printf("\n");
在这个例子里,执行完第 0 页的最后一条指令后,该页会被换出,为第 1 页腾出空间。当遇到“}”符号时,第 1 页又要被换出,以便第 0 页能被重新调入继续循环。在程序完成前,除非有新的页面帧空闲出来让两页能同时驻留在内存,否则页面交换将发生 199 次。这种在内存中找不到页面的情况被称为页面错误,此例将产生 199 次页面错误(和交换)。在极端情况下,有用计算的速率可能会降低至少 100 倍。
理想情况下,若程序员了解操作系统使用的页面大小,并精心设计程序以尽量减少页面错误,按需分页方案会非常高效,但实际中这往往难以实现。
2. 常见页面置换算法
2.1 先进先出(FIFO)算法
FIFO 页面置换策略会移除在内存中驻留时间最长的页面,即最先进入的页面。页面交换过程如下:
1. 步骤 1:页面 A 移入第一个可用页面帧。
2. 步骤 2:页面 B 移入第二个可用页面帧。
3. 步骤 3:页面 A 换出到二级存储。
4. 步骤 4:页面 C 移入第一个可用页面帧。
5. 步骤 5:页面 B 换出
超级会员免费看
订阅专栏 解锁全文
703

被折叠的 条评论
为什么被折叠?



