操作系统复习
第四章 存储管理
4.2 虚拟内存
一、虚拟内存
- 常规存储管理方式的特征
- 一次性:作业一次性装入内存
- 驻留性:作业装入后一直驻留于内存
- 局部性原理
- 时间局部性:某些地址会在不久又被访问
- 典型原因:程序中存在大量的循环操作
- 空间局部性:某些地址附近的地址将被访问
- 典型原因:程序的顺序执行,数据结构的处理
- 时间局部性:某些地址会在不久又被访问
- 虚拟存储器的特征
- 部分装入
- 多次交换
- 虚拟扩充
- 离散分配
- 虚存管理实现技术
- 请求分页
- 请求分段
- 请求段页
二、分页存储管理:4.1节详细讲述
三、请求分页存储管理:虚拟存储
- 分页存储管理+请求调页功能+页面置换功能
- 请求页表机制
- 目的:发现页是否在内存中
- 方法:页表项中增加中断位,1表示缺页中断
- 页表表项:页号、块号、中断位、访问位、修改位
- 缺页中断机构
- 缺页中断与中断的区别
- 相同点:保护现场 中断处理 恢复现场
- 不同点
- 一般中断在一条指令完成后中断,缺页中断一条指令执行时中断
- 一条指令执行时可能产生多个缺页中断。如指令可能访问多个内存地址,这些地址在不同的页中。
- 缺页中断与中断的区别
- 页面置换算法
- 最佳置换算法 OPT
- 先进先出页面置换算法 FIFO
- Belady现象 :一个进程P要访问M个页,OS分配N个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(S,N)。当N增大时,PE(S,N)时而增大,时而减小。
- Belady现象原因:FIFO算法完全没有考虑进程访问内存的动态特征,即被置换的页面并不是进程不会访问的。
- 最近最少使用算法 LRU
- 驻留集
- 定义:OS给进程分配的物理块数/页面数目
- 每个进程的驻留集越小,并行度越高,缺页率越高
- 驻留集达到某个数目后,由于局部性原理,缺页率不再明显下降
- 驻留集分配策略
- 固定分配
- 平均分配
- 按比例分配
- 按优先级分配
- 可变分配
- 固定分配
- 页面置换范围
- 全局置换:影响其他进程的缺页率
- 局部置换:只换本进程的页
- 组合策略
- 固定分配+局部置换
- 可变分配+全局置换
- 可变分配+局部置换
- 定义:OS给进程分配的物理块数/页面数目
- 抖动
- 现象 :多个进程剧烈竞争使用内存,某个进程没有获得足够的驻留集,导致大量缺页中断,使进程页面被频繁地在内存与外存之间换入、换出,系统效率急剧下降,这种现象称为颠簸或抖动。
- 原因 :同时在系统中运行的进程太多,分配给每个进程的驻留集太少,无法满足进程正常运行基本要求,导致频繁缺页。
- 工作集策略:解决驻留集太小带来的系统抖动
- 定义:工作集是一个进程在虚拟时间t时在过去的个虚拟时间单位中被访问到的页的集合,可用一个二元函数W(t, )表示。
- 监视每个进程的工作集
- 周期性地从一个进程的驻留集中移去那些不在它的工作集中的页
- 只有当一个进程的工作集在主存中时,才可以执行该进程
- 缺页率及分析
- 缺页率=缺页次数/全部访问内存次数
- 影响缺页率的因素
- 分配给进程的内存物理块数
- 页面淘汰算法
- 内存页本身的大小
- 程序的编制方法
四、分段存储管理
- 基本思想
- 把程序划分为若干段
- 把内存空间划分为若干段
- 离散分配内存空间,每段的大小可以不相同
- 段表
- 段表表项:段起始地址+段长度
- 地址变换
- 逻辑地址:段号+段内地址
- 页表工作:根据段号,查段起始地址
- 物理地址:段起始地址+段内地址
- 快表机制
- 分段的共享与保护
- 共享段表
- 分段保护:越界检查
五、请求分段存储管理:虚拟存储
- 分段存储管理+请求调段机制+段置换功能
- 请求段表机制
- 特征位:在不在内存,可不可共享
- 存取权限位:读、写、执行
- 标志位:是否修改,能否移动
- 扩充位:能否扩充
六、段页式存储管理
- 基本思想
- 将用户程序分段,段再分页
- 将内存空间分页
- 1页对应1页
- 逻辑地址:段号+页号+页内地址
- 段表:段号→页表始址+页表长度
- 页表:页号→内存块号
七、虚存管理其他问题
- 调入策略
- 请求调页:只调入发生缺页时所需的页面。
- 预调页:缺页时,一次调入该页以及相邻的几个页。
- 清楚策略
- 请求清除:该页被置换时才调出,把清除推迟到最后一刻。
- 预清除:该页被置换之前就调出,因而可以成批调出多个页面。