操作系统中的虚拟内存:什么是请求分页、优点
什么是虚拟内存?
虚拟内存 虚拟内存是一种存储机制,它能让用户产生拥有超大主内存的错觉。其原理是将一部分辅助内存当作主内存来使用。在虚拟内存中,用户可以存储比可用主内存更大的进程。
因此,操作系统不会将一个较长的进程加载到主内存中,而是将多个进程的各个部分加载到主内存中。虚拟内存主要通过请求分页和请求分段来实现。
为什么需要虚拟内存?
以下是使用虚拟内存的原因:
- 当计算机物理内存空间不足时,它会将需要记住的内容写入硬盘上的交换文件作为虚拟内存。
- 如果计算机运行 Windows 需要的内存/RAM比系统中安装的要多,为此它会使用硬盘的一小部分空间。
虚拟内存如何工作?
在现代社会,虚拟内存已经变得非常普遍。当需要将一些页面加载到主内存中执行,而主内存不足以容纳所有页面时,就会使用虚拟内存。
因此,在这种情况下,操作系统不会阻止页面进入主内存,而是会搜索最近使用最少或未被引用的 RAM 空间,并将其移动到辅助内存中,以便为主内存中的新页面腾出空间。
让我们了解一下 虚拟内存管理 借助一个例子。
举个例子
假设操作系统需要 300 MB 的内存来存储所有正在运行的程序。然而,目前 RAM 中只有 50 MB 的可用物理内存。
- 然后,操作系统将设置 250 MB 的虚拟内存,并使用名为虚拟内存管理器 (VMM) 的程序来管理这 250 MB 的内存。
- 因此,在这种情况下,VMM 将在硬盘上创建一个 250 MB 大小的文件来存储所需的额外内存。
- 即使只有 50 MB 的空间可用,操作系统现在也会像认为 RAM 中存储了 300 MB 的实际内存一样进行内存寻址。
- 即使只有 50 MB 的实际内存空间可用,VMM 也需要管理 300 MB 的内存。
什么是请求分页?
需求分页机制与 寻呼系统 交换ping其中进程存储在辅助存储器中,页面仅在需要时加载,而不是预先加载。
因此,当发生上下文切换时,操作系统不会将旧程序的任何页面从磁盘复制到主内存,也不会将新程序的任何页面复制到主内存。相反,它会在加载第一个页面后开始执行新程序,并获取程序中引用的页面。
程序执行期间,如果程序引用了一个可能由于已被换出而不在主内存中的页面,处理器会将其视为无效内存引用。这是因为缺页错误会将控制权从程序交还给操作系统,操作系统会要求将该页面重新存入内存。
页面替换方法的类型
以下是一些重要的页面替换方法:
- FIFO
- 最优算法
- LRU 页面替换
FIFO 页面替换
FIFO(先进先出)是一种简单的实现方法,在该方法中,内存选择在内存虚拟地址中存在时间最长的页面进行替换。
产品特性
- 每当加载新页面时,内存中停留时间最长的页面就会被移除。因此,很容易确定要移除哪个页面,因为它的标识号始终位于 FIFO 堆栈的前端。
- 主内存中最旧的页面应该首先被选中进行替换。
最优算法
最佳页面替换方法选择下次引用时间最长的页面进行替换。
产品特性
- 最优算法产生的页面错误次数最少。但该算法实现起来比较困难。
- 最优页面置换算法具有所有算法中最低的缺页率。这种算法存在,应该称为 MIN 或 OPT。
- 替换那些不太可能长时间使用的页面。它仅在需要使用页面时才执行。
LRU 页面替换
LRU 的全称是最近最少使用页面算法(Least Recent Used Page)。该方法帮助操作系统了解页面在短时间内的使用情况。该算法的实现方式是为每个页面关联一个计数器。
它是如何运作用的?
- 主内存中长时间未使用的页面将被选中进行替换。
- 易于实现,保留列表,通过回顾时间来替换页面。
产品特性
- LRU(最近最少使用)替换方法的计数最高。该计数器也称为老化寄存器,它指定了页面的年龄以及与其关联的页面应该被引用的次数。
- 应该选择主内存中长时间未使用的页面进行替换。
- 它还会保存一个列表,并根据时间回顾来替换页面。
故障率
故障率是指设计系统或组件发生故障的频率,以单位时间内发生的故障次数表示,用希腊字母λ(lambda)表示。
虚拟内存的优势
使用虚拟内存的优点/好处如下:
- 当程序的执行只需要程序的特定部分时,虚拟内存有助于提高速度。
- 它对于实现多道程序环境非常有帮助。
- 它允许您同时运行更多应用程序。
- 它可以帮助您将许多大型程序合并成较小的程序。
- 内存之间可以共享公共数据或代码。
- 一个进程甚至可能比所有物理内存加起来还要大。
- 需要时应从磁盘读取数据/代码。
- 代码可以放置在物理内存的任何位置,无需重新定位。
- 应该在主内存中维护更多的进程,这会增加CPU的有效利用率。
- 每一页都存储在磁盘上,直到需要使用时才会被删除。
- 它允许同时运行更多应用程序。
- 对于多道程序设计的程度没有具体的限制。
- 应该编写大型程序,因为虚拟地址空间比物理内存更大。
虚拟内存的缺点
使用虚拟内存的缺点如下:
- 如果系统正在使用虚拟内存,应用程序可能会运行得更慢。
- 在不同应用程序之间切换可能需要更多时间。
- 它提供的硬盘空间较少。
- 它会降低系统稳定性。
- 它允许在物理内存不足以单独运行大型应用程序的系统上运行这些应用程序。
- 它的性能不如内存。
- 它会对系统的整体性能产生负面影响。
- 它占用存储空间,而这些空间原本可以用于长期数据存储。


