操作系统之虚拟存储器

虚拟存储器概述

1. 常规存储器管理方式的特征和局部性原理
  • 常规存储器管理方式的特征:
    • 一次性。要求将作业全部装入内存才能运行,当程序大于内存时,作业无法运行。
    • 驻留性。装入内存中用的作业一直驻留内存,直到运行结束(处于等待状态的进程也占用内存)。
  • 局部性原理:
    • 时间局限性。如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行;如果某数据被访问过, 则不久以后该数据可能再次被访问。产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作。
    • 空间局限性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。
2. 虚拟存储器的定义和特征
  • 虚拟存储器定义:
    • 具有请求调入功能和置换功能, 能从逻辑上对内存容量加以扩充的一种存储器系统。
    • 其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
  • 虚拟存储器的特征 :
    • 多次性:作业被分成多次调入内存运行。
    • 对换性:允许在作业的运行过程中进行换进、换出。
    • 虚拟性:从逻辑上扩充内存容量。
  • 实现虚拟存储器的效果:
    • 可使一个大的用户程序能在较小的内存空间中运行;也可在内存同时装入更多的进程使它们并发执行。
    • 从用户的角度看,该系统所具有的内存容量,比实际容量大得多。这只是一种感觉,是虚的。故称为虚拟存储器。
    • 虚拟空间的容量由系统的有效地址长度决定。假设地址长度为32,按字节寻址,则虚拟存储空间大小为232个字节。即32位的操作系统,用户程序只能编写最多4G的程序(虚存空间) 。

虚拟存储的实现方式

1. 请求分页存储管理方式
(1) 请求分页的硬件支持
  • 请求页标机制,将用户地址空间中的逻辑地址映射成为内存空间中的物理地址。
  • 请求分页系统中的每个页表结构如下:
    这里写图片描述

  • 状态位P:表明该页是否在内存。

  • 访问字段A:记录本页在一段时间内被访问的次数,或记录本页最近有多长时间未被访问,供换出页面时参考。
  • 修改位M:查看此页在调入内存后是否被修改过。供置换页面时参考。
  • 外存地址:指出该页在外存上的地址,供调入该页时参考。
(2) 缺页中端机构
  • 要访问的页不在内存时,便产生了一个缺页中断,请求操作系统将该页面调入内存。缺页中断同其它中断一样要经历CPU环境保护、分析中断原因、转入中断处理程序、恢复CPU环境等步骤。但缺页中断又是一种特殊的中断。
  • 这种中断在指令执行期间产生和处理中断信号。
  • 一条指令在执行期间可能产生多次缺页中断。
  • 地址变换机构如下图:
    这里写图片描述
(1) 请求分页中的页面置换算法
  • 最佳置换算法
    • 其所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。
    • 实际上该算法是无法实现的。
  • 先进先出置换算法
    • 实现方便。不需要额外硬件。 效果不好。
  • 最近最久未使用LRU算法
    • 根据页面调入内存后的使用情况来做出决策。
    • 为了快速知道哪一页是最近最久未使用的页面,需要硬件支持。
  • Clock置换算法
    • 简单的Clock置换算法
    • 只需要为每页设置一位访问位,再将内存中的所有页面都通过链接指针连接成一个循环队列。当某页访问时,其访问位被置为1.置换算法在选择一页淘汰时,只需要检查页的访问位。如果是0,就选择该页换出。若为1,则将其重新置为0,暂不换出。给与第二次驻留内存的机会。流程如下:
      这里写图片描述
  • 改进的Clock置换算法
    • 在将一个页面换出时,若该页已被修改过,便将该页重新写回磁盘上,但如果该页未被修改过,则不必将它考回磁盘。
    • 改进型Clock算法:换出的页面是既未使用的、又未被修改过的页面。
    • 在Clock算法的访问为A基础上加一个修改位M。
    • 由访问位A和修改位M可以组合成下面四种类型的页面:
      • 1类(A=0, M=0):表示该页最近既未被访问, 又未被修改, 是最佳淘汰页。
      • 2类(A=0, M=1): 表示该页最近未被访问, 但已被修改, 并不是很好的淘汰页。
      • 3类(A=1, M=0): 最近已被访问, 但未被修改, 该页有可能再被访问。
      • 4类(A=1, M=1):最近已被访问且被修改, 该页可能再被访问。
    • 其执行过程可分成以下三步:
      • 从指针所指示的当前位置开始, 扫描循环队列, 寻找A=0且M=0的第一类页面, 将所遇到的第一个页面作为所选中的淘汰页。 在第一次扫描期间不改变访问位A(改变访问位会对第2步产生影响)。
      • 如果第一步失败,即查找一周后未遇到第一类页面, 则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位都置0。
      • 否则第三遍找A=0,M=0的页面,有则淘汰(其实这里的A=0,M=0的页面是由A=1,M=0的页面被第2步修改形成的)。
      • 否则第四遍找A=0,M=1的页面,(肯定会找到)。其实这里的A=0,M=1的页面是由A=1,M=1的页面被第2步修改形成的)。
(2) 抖动
  • 产生原因:
    • 因系统中运行的进程太多,分配给每个进程的物理块太少,导致每个进程在运行时,频繁地出现缺页,必须请求OS将所缺的页调入内存。
2. 请求分段存储管理方式

虚拟段式分配又称为请求分段,在程序装入时,只需调入几个分段而不是所有的分段。随着程序的运行,如果需要访问的段不在内存,可以请求操作系统把需要的段调入内存。

(1) 请求分段中的硬件支持
  • 请求段表机制:
    这里写图片描述
  • 存取方式:表明本段是只执行、只读,还是允许读/写。
  • 访问字段A :用于记录该段被访问的频繁程度。
  • 修改位M:用于记录该段在进入内存后是否被修改过。
  • 存在位P :记录该段是否已调入内存。
  • 增补位:表明本段在运行过程中,是否做过动态增长。
  • 外存始址:表明本段在外存中的起始盘号。
(2) 缺段中断机构
  • 请求分段系统中的中断处理过程:
    这里写图片描述
  • 请求分段系统中的地址变换机构:
    这里写图片描述
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值