存储管理 - 页面置换算法详解
文章目录
- 1 概述
- 2 存储管理
-
- 2.1 页式存储
- 2.2 页面置换算法
-
- 2.2.1 先进先出 FIFO
- 2.2.2 最佳置换法 OPT
- 2.2.3 最近最少使用 LRU
1 概述
2 存储管理
2.1 页式存储
- 页式存储:将 程序 与 内存 均划分为 同样大小的块,以 页 为单位将程序调入内存。
- 地址区分:程序中为高级程序语言,使用逻辑地址;内存中使用物理地址。
- 逻辑地址 = 页号 + 页内地址
- 物理地址 = 页帧号(物理块号) + 页内地址
- 优缺点
- 优点:利用率高,碎片小,分配及管理简单
- 缺点:增加了系统开销(多了 页表),可能产生抖动现象
- 图示:其中 页表 为逻辑地址 与 物理地址 之间的对照关系
- 例如:页式存储系统中,每个页大小为 4KB,逻辑地址为 10 1100 1101 1110,则对应的物理地址为 110 1100 1101 1110
- 每个页的大小为 4KB,默认按字节编址(B)那么页内地址长度 = 4 * 1024 B = 22∗2102^2 * 2^{10}22∗210 B = 2122^{12}212 B,也就是 12 个 2进制位
- 已知逻辑地址:10 1100 1101 1110 (页内地址长度为12,可知后12位为页内地址,(10)2(10)_2(10)2 为页号,即页号为 2)
- 可知物理地址为:根据页号去找块号,如上图,页号2 对应 块号6,6的二进制为110,则物理地址:110 1100 1101 1110
2.2 页面置换算法
2.2.1 先进先出 FIFO
-
FIFO:First In First Out(先进先出)
-
原理:最先进入内存的页面,最先退出内存(向前看)
-
效率:FIFO 算法只是在按线性顺序访问地址空间时,才是最理想的,否则效率不高。因为那些常被访问的页,往往在内存中也停留得最久,结果它们因变 “老” 而不得不被置换出去。
-
举例:考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量为 3 时,问先进先出置换算法(FIFO)的缺页次数是多少?(所有内存块最初都是空的,凡是第一次用到的页面都产生一次缺页)
- 缺页:在块中找不到对应的页面(写入块中,缺页为 ×);反之,可以找到(块内容保持不变,缺页为 √)
- 红色字体:置换的部分(下同);蓝色背景:该页面可以在块中的位置
2.2.2 最佳置换法 OPT
- OPT:optimum(最佳的)
- 原理:置换最长时间不需要访问的页面(向后看)
- 理论:这是一种理想情况下的页面置换算法,但实际上不可能实现。因为无法预测之后出现的是哪个页面。
2.2.3 最近最少使用 LRU
- LRU:Least Recently Used(最近最少使用)
- 原理:置换最近最少使用的页面(向前看)