标签:rap 未使用 保留 The 理想 空闲 目的 更新 极限
虚拟内存管理(2)
7.3.4 缺页终端
分级存储体系
cache+内存+辅存

页表扩充—带中断位的页表
| 页号 |
页框号 |
中断位I |
辅存地址 |
访问位 |
修改位 |
|
|
1 |
|
1 |
0 |
|
|
0 |
|
0 |
1 |
-
中断位I—标志该页是否在内存
-
辅存地址—该页在辅存上的位置
-
访问位——标志该页最近是否被访问
-
修改位—标志该页的数据是否已被修改
缺页中断
定义:在地址映射过程中,当所要访问的目的页不在内存时,则系统产生异常中断—缺页中断
缺页中断处理程序:中断处理程序把所缺的页从页表指出的辅存地址调入到内存的某个页框中,并更新页表中该页对应的页框号以及修改中断位I为0。
访存指令的执行过程(含缺页中断处理)
graph TD
A(开始) --> B[启动要处理的指令]
B --> C[给出虚拟地址]
C --> D[获得页号P]
D --> E{查页表 该页在内存吗}
E --在--> F[执行完该命令]
F --> G[获取下条指令]
E --不在--> H[缺页中断]
H --> I{有空闲页框吗}
I --没有--> J[选一页淘汰]
J --> L{是否需要重写}
L --需要--> M[该页写入外存]
L --不要--> K
M --> K
I --有--> K[从外存读取所需页]
K --> N[调整页表]
N --> O[重启被中断指令]
O --> A
O --> A
缺页(中断)率
\[缺页率f = \frac{缺页次数}{访问页面总次数}\命中率 = 1-f
\]
任务管理器中查看进程相关信息

7.3.5 页面淘汰
淘汰策略
选择淘汰哪一页的规则称淘汰策略
页面抖动
- 页面在内存和辅存间频繁交换的显现
- “抖动”会导致系统效率下降
好的淘汰策略
最佳算法(OPT算法,Optimal)
思想
淘汰以后不再需要或最远的将来才会用到的页面
例子
分配3个页框。页面序列:A、B、C、D、A、B、E、A、A、B、C、D、E。分析其按照OPT算法淘汰页面的缺页情况
| 序列 |
A |
B |
C |
D |
A |
B |
E |
A |
B |
C |
D |
E |
| 記憶體 |
A |
A |
A |
A |
A |
A |
A |
A |
A |
C |
C |
C |
|
|
B |
B |
B |
B |
B |
B |
B |
B |
B |
D |
D |
|
|
|
C |
D |
D |
D |
E |
E |
E |
E |
E |
E |
| 缺頁 |
X |
X |
X |
X |
|
|
X |
|
|
X |
X |
|
\[缺页次数=7\缺页率=\frac 7 {12} = 58\%
\]
特点
理论上最佳,实践中该算法无法实现。
先进先出淘汰算法(FIFO算法)
思想
淘汰在内存中停留时间最长的页面
例子
分配3个页框。页面序列:A、B、C、D、A、B、E、A、A、B、C、D、E。分析其按照FIFO算法淘汰页面的缺页情况
| 序列 |
A |
B |
C |
D |
A |
B |
E |
A |
B |
C |
D |
E |
| 記憶體 |
A |
A |
A |
D |
D |
D |
E |
E |
E |
E |
E |
E |
|
|
B |
B |
B |
A |
A |
A |
A |
A |
C |
C |
C |
|
|
|
C |
C |
C |
B |
B |
B |
B |
B |
D |
D |
| 缺頁 |
X |
X |
X |
X |
X |
X |
X |
|
|
X |
X |
|
\[缺页次数=9\缺页率=\frac 9 {12} = 75\%
\]
优点
实现简单:页面按进入内存的时间排序,淘汰队头页面
缺点
最久未使用算法(LRU,Least Recently Used)
思想
淘汰最长时间未被使用的页面
例子
分配3个页框。页面序列:A、B、C、D、A、B、E、A、A、B、C、D、E。分析其按照LRU算法淘汰页面的缺页情况
| 序列 |
A |
B |
C |
D |
A |
B |
E |
A |
B |
C |
D |
E |
| 記憶體 |
A |
A |
A |
D |
D |
D |
E |
E |
E |
C |
C |
C |
|
|
B |
B |
B |
A |
A |
A |
A |
A |
A |
D |
D |
|
|
|
C |
C |
C |
B |
B |
B |
B |
B |
B |
E |
| 缺頁 |
X |
X |
X |
X |
X |
X |
X |
|
|
X |
X |
X |
\[缺页次数=10\\缺页率=\frac {10} {12} = 83\%
\]
LRU算法的实现
- 页面设置一个移位寄存器R,每当页面被访问的将其重置1
- 周期性地(周期很短)将所有页面的R左移1位(右边补0)
- 当需要淘汰页面时选择R值最大的页
- R的位数越多且移位周期越小就越精确,但硬件成本也越高
- 若R的位数太少,可能同时出现多个位0的页面,难以比较
LRU近似算法
- 利用页表访问位,页被访问时其值由硬件置1
- 软件周期性(T)地将所有访问位置0
- 当淘汰页面根据该页访问位来判断是否淘汰
- 访问位为1:在时间T内,该页被访问过,保留该页
- 访问位为0:在时间T内,该页未被访问过,淘汰该页
缺点:周期T难定
- 太小,访问位为0的页过多,找不到合适的页淘汰
- 太大,访问位为1的页过多,找不到合适的页淘汰
最不经常使用(LFU)算法
Least Frequently Used
算法原则
- 选择到当前时间为止被访问次数最少的页面
- 每页设置访问计数器,每当页面被访问时,该页面的访问计数器加1
- 发生缺页中断时,淘汰计数值最小的页面,并将所有计数清零
7.3.6 缺页因素与缺页系统缺点
缺页的因素
- 淘汰算法
- 分配给进程的页框数
- 页本身的大小
- 程序的编制方法
页面大小的选择
页面太大
浪费内存:极限时分区存储
页面太小
- 页面增多,页表长度增加,浪费内存
- 换页频繁,系统效率低
页面的常见大小
2的整数次幂:1KB、2KB、4KB
页式系统的不足
【av68676164(p51-p53)】虚拟内存管理(2)
标签:rap 未使用 保留 The 理想 空闲 目的 更新 极限
原文地址:https://www.cnblogs.com/iamfatotaku/p/12902968.html