假想记忆

传统储存器

  • 一次性:全部装入,无法单次运行非常大的程序
  • 驻留性:运行时不会被换出内存

虚拟储存器

  • 多次性: 只放需要的内容
  • 对换性:程序可以运行时换出内存
  • 虚拟性 提高了数据吞吐量

实现

分页式虚拟存储器

页表:虚拟地址 -> 物理地址

tag index offset

状态位 访问字段 修改位 外存地址

页表项中各字段的作用如下:

(1)页号和物理块号。其定义同分页存储管理,这两个信息是进行地址变换所必需的。

(2)状态位。用于表示页面是否在内存中。每当进行内存访问时,根据该位判断要访问的页面是否在内存,若不在内存中,则产生缺页中断.

(3)访问字段。用于记录页面在一段时间内被访问的次数,或最近已有多长时间未被访问。该字段供置换算法在选择换出页面时参考。

(4)修改位,用于表示页面调入内存后是否被修改过。当处理机以写方式访问页面时,系统将设置该页面的修改位。由于内存中的页面在外存上都有副本,因此,若页面未修改,则在该页面换出时不需要将页面写到外存,以减少磁盘写的次数;若页面被修改,则必须将页面重新写到外存上.

(5)外存地址。用于指出页面在外存上的存放地址。该字段供调入页面时使用

优点

不占用连续的内存空间

缺点

每页利用率不一致,产生内存碎片

page fault

没找到页

page swap

换入换出

置换算法
  • 千里眼:
    • 操作系统调查每一页的page,去测算用到page的时间
  • NRU
    • 参照状态、变更状态
  • NFU
    • 换出频率最低的页
调页方法
  • demand pageing: miss了才写入
    • 省内存
    • 开始前没有load延迟
    • 硬盘负担小
    • 在page更新前,该页可被多个程序共用
    • 可以执行比内存大的程序
    • 开始运行时,必会page fault,产生延迟
    • 内存管理复杂化

分段

段大小是不固定的