操作系统虚拟存储概念和页面置换算法

虚拟存储概念

虚拟存储

  • 概念:基于非连续存储内存分配的基础上,可以把一部分内训放在外存里
  • 需求
    • 计算机系统时常出现内存空间不够用
      • 覆盖( overlay )
        应用程序手动把需要的指令和数据保存在内存中
      • 交换( swapping )
        操作系统自动把暂时不能执行的程序保存到外存中
      • 虚拟存储
        在有限容量的内存中,以页为单位自动装入更多更大的程序

覆盖技术

  • 目标:在较小的可用内存中运行较大的程序
  • 方法:依据程序逻辑结构,将程序划分为若干功能相对独立的模块;将不会同时执行的模块共享同一块内存区域
    • 必要部分(常用功能)的代码和数据常驻内存
    • 可选部分(不常用功能)放在其他程序模块中,只在要用到时装入内存
    • 不存在调用关系的模块可相互覆盖,共用同一内存区域
  • 不足
    • 增加编程困难
      • 需程序员划分功能模块,并确定模块间的覆盖关系
      • 增加了编程的复杂度
    • 增加执行时间
      • 从外存装入覆盖模块
      • 时间换空间

交换技术

  • 目标:增加正在运行或需要运行的程序的内存
  • 实现方法
    • 可将暂时不能运行的程序放到外存
    • 换入换出的基本单位
      • 整个进程的地址空间
    • 换出( swap out )
      • 把一个进程的整个地址空间保存到外存
    • 换入( swap in )
      • 将外存中某进程的地址空间读入到内存
  • 交换技术面临的问题
    • 交换时机:何时需要发生交换?
      • 只当内存空间不够或有不够的可能时换出
    • 交换区大小
      • 存放所有用户进程的所有内存映像的拷贝
    • 程序换入时的重定向:换出后再换入时要放在原处吗?
      • 采用动态地址映射的方法

覆盖和交换的比较

  • 覆盖
    • 只能发生在没有调用关系的模块间
    • 程序员须给出模块间的逻辑覆盖结构
    • 发生在运行程序的内部模块间
  • 交换
    • 以进程为单位
    • 不需要模块间的逻辑覆盖结构
    • 发生在内存进程间

虚拟存储技术的目标

  • 只把部分程序放到内存中,从而运行比物理内存大的程序
    • 由操作系统自动完成,无需程序员的干涉
  • 实现进程在内存与外存之间的交换,从而获得更多的空闲内存空间
    • 在内存与外存之间只交换进程的部分内容

局部性原理( principle of locality )

  • 程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。
    • 时间局部性
      • 一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内
    • 空间局部性
      • 当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小区域内
    • 分支局部性
      • 一条跳转指令的两次执行,很可能跳到相同的内存位置
    • 局部性原理的意义
      • 从理论上来说,虚拟存储技术是能够实现的,而且可取得满意的效果

虚拟存储的基本概念

  • 思路:将不常用的部分内存块暂存到外存
  • 原理
    • 装载程序时
      • 只将当前指令执行需要的部分页面或段装入内存
    • 指令执行中需要的指令或数据不在内存(称为缺页或缺段)时
      • 处理器通知操作系统将相应的页面或
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值