第三章 内存管理之虚拟内存管理

1 基本概念

总览

0329rn.png

传统存储管理的特征

  1. 一次性
  2. 驻留性

局部性原理

  1. 时间局部性原理
  2. 空间局部性原理

虚拟存储器的定义和特征

  1. 多次性
  2. 对换性
  3. 虚拟性

虚拟存储技术的实现

需要的功能:请求调页(段)功能,页面置换功能

  1. 请求分页存储管理
  2. 请求分段存储管理
  3. 请求段页式存储管理
    注意前面传统的都叫基本XXXX
    需要的支持:
  4. 一定容量的内存和外存
  5. 页表机制(或段表机制),作为主要数据结构
  6. 中断机制
  7. 地址变换机构

2 请求分页管理方式

1 页表机制

035VG6.png

2 缺页中断机构

03omHH.png
08pP1g.png

3 地址变换机构

08pmNV.png
08pYAx.png
08pHU0.png
089A2D.png
注意:调页后还是再次查快表

4 小结

08Cot0.png

3 页面置换算法

1 最佳(OPT)置换算法

0x9DdP.png
0x96JS.png

2 先进先出(FIFO)页面置换算法

0xCQSg.png

Belady异常:
0xC2tK.png

3 最近最久未使用(LRU)置换算法

0xPSns.png

算法的实现需要专门的硬件支持,性能好但是开销大,实现困难,性能是最接近最佳置换算法的

时钟(CLOCK)置换算法

0xeCf1.png

优化的CLOCK

0xuAXV.png

自己的理解:

(访问位,修改位):总是优先淘汰访问位是0的,修改位也是0的,也就是最近既未访问的也没有修改的
优先淘汰未访问的显而易见,为何淘汰未修改的呢?
因为修改过的淘汰了得往磁盘里写,产生I/O的开销,当然尽可能的先不淘汰它,如果你没修改丢了就丢了,也不用特地往磁盘写
所以过程就是:

  1. 扫描第一遍,淘汰(0,0)的,没有就继续第二遍,不用修改
  2. 第一遍失败扫第二遍,淘汰(0,1)的(00没有,肯定没办法了,往磁盘写就往磁盘写吧,也得先淘汰最近没访问的).就这都还没的话(这时候肯定剩 (1,1)/(1,0) 这两种)就把扫过的访问位都改成0,下把肯定有(0,0)/(0,1)了
  3. 第三遍肯定还是上来优先是(0,0)的,没有就说明只剩(0,1)了
  4. 第四遍淘汰(0,1)的,这必然有了
  • 也就是为了淘汰(0,0)的时候,啥也不用修改,为了淘汰(0,1)的时候,边扫边改访问位

五种算法的比较

0xQDj1.png

4 页面分配策略

0xh2aq.png
0x4ItP.png

可变分配局部置换和可变分配全局置换的区别:
局部的:物理块不够的时候,是从进程自己内部的物理块换出外存
全局:不够的时候随便挑一个不一定是自己的进程里的换,也可能是拿别人的
0x51nH.png

调入页面的时机

0xIebj.png

何处调入页面

对换区足够

0xIvWV.png

对换区不够

0xoVW6.png

UNIX

0xILon.png
0xINZ9.png

5 抖动

0x73xf.png

6 工作集

0xzl7V.png

小结

0xzfBt.png

7 地址翻译