3.2.1 虚拟内存的基本概念


1、传统存储管理方式的特征

1)一次性: 作业必须一次性全部装入内存后,才开始运行

2)驻留性:作业被装入内存后,就一直驻留在内存中

2、局部性原理: 时间局部性和空间局部性

时间局部性:程序中的某条指令一旦执行,不久后该指令可能再次执行
空间局部性:程序访问了某个存储单元,不久后,其附近的存储单元也被访问。

3、虚拟存储器的定义和特征

1)多次性:无需一次将作业全部装入内存,允许被分次调入内存。
2)对换性: 无需在作业运行时一直常驻内存,允许在作业运行过程中,进行换进和换出。
3)虚拟性: 从逻辑上扩充内存容量。

4、虚拟内存技术的实现

虚拟内存技术的实现需要建立在 离散分配 的内存管理方式的基础之上。

虚拟内存技术的实现有以下三种方式:

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

3.2.2 请求分页管理方式

与基本分页管理相比,请求分页管理中,为了实现“请求调页”,操作系统需要知道每个页面是否已经调入内存;如果还没调入,那么也需要知道该页面在外存中存放的位置。

1、页表机制

请求分页系统建立在基本分页系统基础之上,为了支持虚拟存储器功能而增加了请求调页功能页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。
3.2 虚拟内存管理

3.2 虚拟内存管理
2、缺页中断机构

在请求分页系统中,每当要访问的页面不在内存中时,便产生一个缺页中断,请求系统将所缺的页面调入内存。此时应将缺页的进程阻塞(I/O请求),若此时内存中有空闲块,则将该页调入该块, 若没有空闲块,则要淘汰某页。(若淘汰页面在内存期间被修改过,则要将其写回外存)

  • 在指令执行期间产生和处理中断信号,而非一条指令执行完后,属于内中断

3.2 虚拟内存管理

3、地址变换机构

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

在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存 (操作系统要提供请求调页功能,将缺失页面从外存调入内存),然后继续执行程序。

若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存 (操作系统要提供页面置换的功能,将暂时用不到的页面换出外存)。
相对于分页系统主要增加了关于状态位P的操作。
3.2 虚拟内存管理
3.2 虚拟内存管理


3.2.3 页面调度算法(决定应该换入哪页、换出哪页)

1)最佳(OPT)置换算法

每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。
7在第18次访问才调入,故先替换7
3.2 虚拟内存管理
缺页中断未必发生页面置换 只有物理块满了才发生页面置换 (比如前三次发生缺页中断,但未发生页面置换)

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

每次选择淘汰的页面最早进入内存的页面

3.2 虚拟内存管理
Belady异常--------当为进程分配的物理块数增大时,缺页次数不减反增的异常现象。

只有FIFO算法会产生Belady异常

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

每次淘汰的页面是最近最久未使用的页面

4)时钟(CLOCK)置换算法

最佳置换算法性OPT能最好,但无法实现
先进先出置换算法实现简单,但算法性能差
最近最久未使用置换算法性能好,是最接近OPT算法性能的,但是实现起来需要专门的硬件支持,算法开销大
优先级:

  • 最近未访问
  • 最近未访问,但修改过
  • 访问过,但未修改
  • 访问过,修改过
    3.2 虚拟内存管理
第一轮:从当前位置开始扫描到第一个(U =0, M = 0)的帧用于替换。表示该页面最近既未被访问,又未被修改,是最佳淘汰页
第二轮:若第一轮扫描失败,则重新扫描,查找第一个(U =0, M = 1)的帧用于替换。本轮将所有扫描过的帧访问位设为0。表示该页面最近未被访问,但已被修改,并不是很好的淘汰页。
第三轮:若第二轮扫描失败,则重新扫描,查找第一个(U =1, M = 0)的帧用于替换。本轮扫描不修改任何标志位。表示该页面最近已被访问,但未被修改,该页有可能再被访问。
第四轮:若第三轮扫描失败,则重新扫描,查找第一个(U =1, M = 1)的帧用于替换。表示该页最近已被访问且被修改,该页可能再被访问。

3.2 虚拟内存管理
3.2 虚拟内存管理
3.2 虚拟内存管理

相关文章: