虚拟存储器的定义:是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度而每位的成本却接近于外存。
常规存储管理的特征
- 一次性:作业在运行前一次性地全部装入内存
- 驻留性:作业装入内存后,便一直驻留在内存中,直至作业运行结束。
虚拟存储器的特征
- 多次性:一个作业被分成多次调入内存运行
- 对换性:允许在作业的运行过程中进行换进、换出。
- 虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。
虚拟性以多次性和对换性为基础;
多次性和对换性又必须建立在离散分配的基础上
虚拟存储器的实现
请求分页存储管理方式
硬件的支持:页表机制、缺页中断机制、地址变换机构
内存分配策略
- 最小物理块数的确定(和硬件有关)
- 物理块的分配策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
- 物理块的分配算法(保证最小块数)
请求分段存储管理方式
以分段为单位进行调入调出
特别有利于实现分段共享
页面置换算法
最佳置换算法
其所选择的被淘汰页面,将是以后永不再用的,或许是在最长(未来)时间内不再被访问的页面。
优点:保证获得最低的缺页率
缺点:无法预知一个进程在内存的若干个页面,哪个在未来最长时间内不再被访问。算法无法实现,但可评价其他算法。
先进先出置换算法
算法与进程的实际运行规律不相适应,因为进程中的某些页面经常被访问,但先进先出置换算法不能保证这些页面不被淘汰。
最近最久未使用(LRU)算法
LRU置换算法虽然较好,但需较多的硬件支持
Clock置换算法(最近未使用算法)
页面缓冲算法
补充题. 已知一个有快表的请求分页系统,内存读写周期为Tr(1us),内外存之间传送一个页面的时间为Tt(5ms),快表的命中率为p (80%),页面失效率为f (10%)。忽略快表存取时间。
请计算快表命中时的存取时间;快表不命中、内存中页表能查到时的存取时间;页面失效时的存取时间。并计算系统的内存有效存取周期EAT(平均存取时间)。
答:快表命中时的存取时间:1μs;快表不命中、内存中页表能查到时的存取时间:1μs+1μs=2μs;(快表不命中、)页面失效时的存取时间:1μs+5ms +1μs=5002μs
系统的内存有效存取周期EAT:1μs*0.8+2μs*(1-0.8)*(1-0.1)+5002μs*(1-0.8)*0.1=101.2μs
在一个请求分页系统中,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别是3和4时,采用FIFO面替换算法,计算访问过程中所发生的缺页次数和缺页率,比较所得结果。
答:设开始时系统中未装入页面。
(1) 当M=3时,FIFO算法的缺页情况:
4 3 2 1 4 3 5 4 3 2 1 5 页面调用序列
4 4 4 1 1 1 5 5 5 5 5 5
3 3 3 4 4 4 4 4 2 2 2
2 2 2 3 3 3 3 3 1 1
缺 缺 缺 缺 缺 缺缺 中 中 缺 缺 中
缺页次数为9次。缺页率为:(9/12)×100%=75%。
(2) 当M=4时,FIFO算法的缺页情况:
4 3 2 1 4 3 5 4 3 2 1 5页面调用序列
4 4 4 4 4 4 5 5 5 5 1 1
3 3 3 3 3 3 4 4 4 4 5
2 2 2 2 2 2 3 3 3 3
1 1 1 1 1 1 2 2 2
缺 缺 缺 缺 中 中 缺 缺 缺 缺 缺 缺
缺页次数为10次。缺页率为:(10/12)×100%=83%。
通过以上缺页次数和缺页率的分析计算,可以看出:对于FIFO算法,增加物理块数,不一定能减少缺页次数。
抖动和工作集
- 产生“抖动”的原因是同时在系统中运行的进程太多,而分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁的出现缺页,必须请求系统将所缺之页调入内存。
- 工作集是指在某段时间间隔里,进程实际所要访问页面的集合。