二、虚拟内存管理
虚拟内存技术——内存空间扩充的技术之一
- 为什么要引入虚拟内存?
- 虚拟内存空间的大小由什么因素决定?
- 虚拟内存是怎么解决问题的?会带来什么问题?
(一)虚拟内存的基本概念
1、传统存储管理方式的特征、缺点
传统的缺点
- 一次性:1)大作业无法执行2)大量作业并发性下降
- 驻留性
2、局部性原理
3、虚拟内存的定义和特征
虚拟内存的特征:
- 多次性(反一次性)
- 对换性(反驻留性)
- 虚拟性
4、如何实现虚拟内存技术
离散分配更方便: 基本分页——>请求分页 基本分段——>请求分段 基本段页式——>请求段页式
操作系统负责调入调出的相应的功能: 调入:请求调页/段功能 调出:页面/段置换功能
(二)请求分页管理方式
需要从“请求调页”功能和“页面置换”功能的角度考虑
1、页表机制(请求页表)
2、缺页中断机构
当需要访问的页面不在内存,产生一个缺页中断,系统处理中断,进程进入阻塞队列,调页结束后放回就绪队列
- 如果内存里有空闲块,为进程分配一个空闲块,把缺页调入内存该块里,并修改页表项
- 如果内存里没有空闲块,由页面置换算法(规则)选择一个页面淘汰,若该页面在内存期间被修改过,还得往外存写,如果在内存里没变过则不用写回外存
缺页中断与指令有关——内中断,且属于能修复的故障 一条指令在执行期间可能产生多次缺页中断
3、地址变换机构(与基本有哪些区别)
- 页号是否越界
- 快表是否命中,命中直接访问
- 快表未命中,访问页表项,若未调入内存,产生缺页中断,由操作系统进行请求调页和页面置换等
- 修改访问位和修改位
(若快表命中,则该页面一定在内存中) (换入换出工作由硬件完成)
红框是请求分页和基本分页的区别:
(三)页面置换算法(如何换入换出页面追求更少的缺页率)
1、最佳置换算法OPT(无法实现)
- 每次淘汰在最长时间内不访问的页面
2、先进先出置换算法FIFO
- 每次淘汰的是最早进入内存的页面,可以结合队列考虑(先进先出)
- 对比:
FIFO:考虑最早进入内存的 LRU:考虑最早被访问的 二者在访问不需要调页的页面之后会有明显的区别,如果一直需要换页,没有区别
3、最近最久未使用置换算法LRU
效率最接近OPT
4、时钟置换算法CLOCK(最近未用算法NRU)
5、改进型的时钟置换算法
优先淘汰没有访问过,没有被修改过的页面,(因为修改过的页面需要写回外存),以减少I/O次数
(四)页面分配策略、抖动、工作集
1、驻留集
2、页面分配、置换策略
1)固定分配局部置换
2)可变分配全局置换
3)可变分配局部置换
故存在固定分配全局置换(全局了就一定会变化)
3、调入页面的时机
4、从何处调页
调入:从外存的对换区/文件区调入 调出:往对换区写入(修改过的),没修改过的不用写
5、抖动(颠簸)现象
物理块分配太多并发度低,分配太少容易抖动
6、工作集
通过检测工作集的大小,来决定分配多少内存块,即驻留集的大小 驻留集不能小于工作集,否则抖动
|