Skip to the content.

无存储器抽象

MOV REGISTER1, 1000  ;将位置1000的物理内存中的内容移到 REGISTER1 中

一种存储器抽象:地址空间

虚拟内存

分页(paging)

MOV REG, 1000  ;将地址为 1000 的内存单元的内容复制到 REG,1000 是虚拟地址

MOV REG, 0
MOV REG, 32780  ;位于页面 8(从 32768 开始)

加速分页过程

页面置换算法

最优页面置换算法(OPTimal replacement,OPT)

432143543215  // 页面队列
444444444222  // 页 1
 33333333311  // 页 2
  2111555555  // 页 3
TTTT  T  TT   // 是否发生缺页中断(共发生 7 次缺页中断,4 次页面置换)
   |
    2 替换掉,因为 432 中,2 下一次被访问的时间最靠后

最近未使用页面置换算法(Not Recently Used,NRU)

先进先出页面置换算法(First-In First-Out,FIFO)

第二次机会页面置换算法(Second-Chance)

时钟页面置换算法(clock)

最近最少使用页面置换算法(Least Recently Used,LRU)

最不常用页面置换算法(Not Frequently Used,NFU)

老化(aging)算法

页面
0    10000000     11000000     11100000     11110000     01111000
1    00000000     10000000     11000000     01100000     10110000
2    10000000     01000000     00100000     00100000     10001000
3    00000000     00000000     10000000     01000000     00100000
4    10000000     11000000     01100000     10110000     01011000
5    10000000     01000000     10100000     01010000     00101000
     |            |            |            |            |
     访问页面 024 访问 014     访问 013     访问 04      访问 12

工作集页面置换算法

工作集时钟(WSClock)页面置换算法

分段(Segmentation)

31 ... 16 15 ... 0  // 可用 31 - 16 表示段号,15 - 0 表示段内地址
K 号段的段表存放地址 = 段表起始位置 + K * 段表项长度

段号 基址 段长
0    20K  3K
1    60K  2K
2    40K  5K

如果一个逻辑地址段号为 1,段内地址为 1024
段号 1 的段长为 2K,大于 1024,不产生越界中断
存放地址 = 60K + 1024 = 61K
31 ... 16 15 ... 12 11 ... 0  // 可用 31 - 16 表示段号,15 - 12 表示页号,11 - 0 表示页内地址