非连续内存存储分配的延续一部分数据放到外存里去让内存空间更大,两个做法:覆盖与交换

需求背景

  • 增长迅速的存储需求,电脑游戏,程序增长规模 》》存储器容量的增长速度
  • 理想存储器:容量更大 速度更快 价格更便宜
  • 现实存储器:分层结构。
  • 操作系统 存储抽象 地址空间 作映射关系
  • 内存不够用(多道程序 并发)
    • 覆盖overlay:应用程序手动把需要的指令和数据保存在内存中
    • 交换swapping:os自动把暂时不能执行的程序保存到外存
    • 虚拟存储:页为单位自动装入更多更大的程序

覆盖技术

目标: 小内存 大程序

)非os可做的工作 需要程序员参与 程序内部间。 方法: 依据程序逻辑结构,将程序划分为若干功能相对独立的模块,将没有调用关系的模块分成一组,共享一块内存区域。必要部分-常驻内存+可选部分-需要时装入内存。 不存在调用关系的模块可相互覆盖,共用同一块内存区域

尺寸接近且没有调用关系放在一起。复杂。。dos: turbo pascal 开发难度,划分模块+确定覆盖关系;执行时间增加,从外存装入覆盖模块,时间换空间。

交换技术

目标: 增加正在运行或需要运行的程序的内存

多个程序 以进程为单位。 os可以做 将暂时不能运行的程序放到外存。 换入换出的基本单位 :整个进程的地址空间 换出swap out:把一个进程的整个地址空间保存到外存 换入swap in :将外存中某进程的地址空间读入到内存

问题

  1. 时机:何时需要交换?
    1. 当内存空间不够或有不够的可能是,把另外一些暂停执行在内存地址里的换到外存。
  2. 交换区大小
    1. 存放所有用户进程所有内存映像的拷贝
  3. 程序换入时的重定位:换出再换入 要放到原处吗?
    1. 采用动态地址映射方法。

局部性原理

程序访问特征,在执行过程中的一个较短时期,所执行的指令地址(指令)和指令的操作数(数据)地址,分别局限于一定区域。

  • 时间局部性
  • 空间局部性
  • 分支局部性(循环)

虚拟存储技术目标: 虚拟存储=物理内存+磁盘 ^ac3779 映射到物理内存或磁盘

  • 哪些东西放进来?只把部分程序放到内存中,从而运行比物理内存大的程序
    • 由os自动完成,无需程序员干涉
  • 哪些东西放出去?实现进程再内存与外存空间交换,从而获得更多空闲内存空间
    • 在内存和外存之间只交换进程的部分内容

意义?从理论上来说,虚拟存储技术是能够实现的,而且可以取得满意的效果

虚拟存储概念

思路:将不常用的部分内存块放到外存中 原理:

  • 装载程序时,只将当前指令执行需要的部分 页面或段装入内存
  • 指令执行中需要的指令或数据不在内存中(缺页),处理器(硬件)通知操作系统将相应的页面或段调入内存
  • 需要监控在内存里的页的情况,os将内存中暂时不用的页面或段保存到外存中。置换算法 实现方法:
  • 虚拟页式存储
  • 虚拟段式存储。

^ac3779的基本特征 改进了覆盖和交换

  • 不连续性
    • 物理内存分配非连续
    • 虚拟地址空间使用非连续?
  • 大用户空间
    • 提供给用户的虚拟空间可大于实际的物理内存
  • 部分交换
    • 虚拟存储只对部分虚拟地址空间进行调入和调出

需要的支持技术

  • 硬件:
    • 地址转换
  • os:
    • 换入换出,异常,监控,页面的使用情况。

虚拟页式存储

交换单位设置为页。 在页式存储管理基础上,增加请求调页和页面置换

  • 思路:- 当用户程序要装载到内存运行时,只装入部分页面,就启动程序运行 - 进程在运行中发现有需要的代码或数据不在内存时,则向系统发出缺页异常请求 - os处理缺页异常,将外存中相应的页面调入内存,使得进程能继续运行。 地址转换+页表项的修改 页表项有一项 v,代表是不是在内存里。加上标志位数
  • 驻留位:表示该页是否在内存,1 0
  • 修改位:若想替换它,需要先写入外存
  • 访问位:用于页面置换算法。统计 是否被经常访问
  • 保护位:r w x

缺页异常 缺页中断

不在物理内存当中。 处理流程

虚拟页式存储中的外存管理

在何处保存未被映射的页? 交换空间(磁盘或文件) 外存选择 代码段:可执行二进制文件 动态加载的共享库程序段:动态调用的库文件 其他段:数据 堆栈 交换空间。

性能评价

effective memory access time eat=访存时间(1-p)+缺页异常处理时间*缺页率p

todo 平板图片