4、虚拟存储技术

  • 虚拟内存
  • 思维导图
  • 传统存储管理方式的缺点
  • 局部性原理
  • 什么是虚拟内存?(功能)
  • 虚拟内存主要特征
  • 如何实现虚拟存储技术
  • 虚拟内存实现1------请求分页管理方式
  • 思维导图
  • 请求分页存储管理与基本分页存储管理的主要区别:
  • 页表机制
  • 缺页中断机构
  • 地址变换的硬件实现
  • 补充
  • 页面置换算法
  • 1、最佳置换算法(OPT)
  • 先进先出置换算法(FIFO)
  • 最近最近未使用算法(LRU)
  • 时钟置换算法(CLOCK)
  • 改进型时钟置换算法
  • 算法比较
  • 虚拟内存实现2------请求分段管理方式
  • 虚拟内存实现3------请求段页式管理方式


虚拟内存

思维导图

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存

传统存储管理方式的缺点

页面地址重定位模拟JAVA代码 页面地址变换算法_页面地址重定位模拟JAVA代码_02

局部性原理

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_03

什么是虚拟内存?(功能)

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_04

虚拟内存主要特征

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_05

如何实现虚拟存储技术

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_06

功能1:操作系统要提供请求调页(或请求调段)功能
功能2:操作系统要提供页面置换(或段置换)的功能

虚拟内存实现1------请求分页管理方式

思维导图

页面地址重定位模拟JAVA代码 页面地址变换算法_页面地址重定位模拟JAVA代码_07

请求分页存储管理与基本分页存储管理的主要区别:

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_08

页表机制

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_09

缺页中断机构

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_10

页面置换由页面置换算法实现

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_11

地址变换的硬件实现

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_12


页面地址重定位模拟JAVA代码 页面地址变换算法_存储管理_13

若现在要第一次访问(0,1024)
1、查询快表,判断越界
2、未越界,判断是否命中
3、命中直接查找物理地址;未命中则查找请求页表,然后通过请求页表找到物理地址;并将请求页表项写入快表;
4、然后访问快表找到该物理地址。

补充

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_14

页面置换算法

页面地址重定位模拟JAVA代码 页面地址变换算法_存储管理_15

1、最佳置换算法(OPT)

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_16

1、当访问3页面时,发现缺页;此时判断内存中现存页面2,0,1;哪个是在未来最后被访问的(如图,红框中先访问0,在访问2,最后访问3),所以将1换出放入3。
2、最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。

先进先出置换算法(FIFO)

页面地址重定位模拟JAVA代码 页面地址变换算法_存储管理_17

最近最近未使用算法(LRU)

页面地址重定位模拟JAVA代码 页面地址变换算法_页面地址重定位模拟JAVA代码_18

时钟置换算法(CLOCK)

页面地址重定位模拟JAVA代码 页面地址变换算法_虚拟内存_19


页面地址重定位模拟JAVA代码 页面地址变换算法_页面地址重定位模拟JAVA代码_20

上图所示示例:
1,3,4,2,5由于内存足够直接放入,且访问位置1
当访问6时内存不足;从1开始扫描直到遇到第一个标志位为0的页面,并将其换出。若此时扫描队列中有标志位为1的,扫描后置为0。所以换出1;
访问3,4;在内存;标志位置1;
访问7;从3开始扫描;换出2;3,4标志位置0;

改进型时钟置换算法

页面地址重定位模拟JAVA代码 页面地址变换算法_存储管理_21

与时钟置换算法相比,多加一个修改位,若该页被修改,则写会外存;未修改则不用写会内存

页面地址重定位模拟JAVA代码 页面地址变换算法_页面置换_22

算法比较

页面地址重定位模拟JAVA代码 页面地址变换算法_页面地址重定位模拟JAVA代码_23

虚拟内存实现2------请求分段管理方式

原理相同

虚拟内存实现3------请求段页式管理方式

原理相同