十二、虚拟内存

68 阅读3分钟

虚拟内存

虚拟内存是除了寄存器外,其他存储介质的总和,叫做虚拟内存。包括内存和外存。

虚拟内存管理方式

请求分页管理方式

页表结构
  1. 页号:进程按照页框大小分成一块一块,每一块标上的序号叫做页号
  2. 内存块号:页号对应的内存页框的序号
  3. 状态位:进程不是一次性加载,而是先加载核心部分,非核心部分的页号对应的状态位是0,表示未加载, 当然对应的内存块号是无
  4. 访问字段:表示内存块号中的内容被访问的次数
  5. 修改位:表示内存块号中的内容是否被修改
  6. 外存地址:页号对应的进程部分存储的外存地址
缺页中断机制
  1. 进程在运行时,需要访问的功能不在内存中,此时会发起缺页中断
  2. 缺页中断处理程序会加载需要的进程功能,并且更新页表内容
  3. 缺页中断属于内中断
  4. 缺页中断机制也会将不常用的内存块号中的内容放到外存中,这个属于页面置换机制
地址变换机制

请求分页管理与分页管理的地址变换机制相同,唯一的区别是页表结构不同

页面置换机制

页面置换算法
最佳置换算法OPT

每次淘汰最不可能被使用的页面

先进先出置换算法

将内存页看成先进先出队列,每次淘汰最先加载内容的页

LRU置换算法

将最近最长时间没有被访问的页置换掉

时钟置换算法
  1. 创建一个页面循环队列,每个页都有一个访问位,表示页是否被访问
  2. 时钟置换算法循环扫描队列,发现访问位是0的页面就置换掉
  3. 时钟置换算法在扫描队列时,除了找出访问位是0的页面,还会将访问位是1的页面的访问位设置成0
  4. 将访问位设置成0的目的是防止所有页面访问位都是1,这样就无法置换掉任何页面了
改进版时钟置换算法
  1. 创建一个页面循环队列,每个页都有一个访问位和一个修改位
  2. 改进版时钟置换算法在第一轮扫描时,会置换第一个访问位和修改位都是0的页面
  3. 改进版时钟置换算法在第二轮扫描时,会置换第一个访问位是0,修改位是1的页面,同时将所有页面的访问位设置成0;如果没有找到访问位是0,修改位是1的页面,继续按照第一轮扫描的机制再来一遍
页面置换策略
  1. 进程加载到内存中的只有核心部分,未加载的部分存放在磁盘的文件区
  2. 页面置换算法置换出来的页面内容存放在磁盘的交换区