操作系统中的虚拟内存:什么是请求分页、优点

什么是虚拟内存?

虚拟内存 是一种存储机制,它让用户产生拥有非常大的主内存的错觉。这是通过将一部分辅助内存视为主内存来实现的。在虚拟内存中,用户可以存储比可用主内存更大的进程。

因此,操作系统不会将一个较长的进程加载到主内存中,而是将多个进程的各个部分加载到主内存中。虚拟内存主要通过请求分页和请求分段来实现。

为什么需要虚拟内存?

以下是使用虚拟内存的原因:

  • 每当您的计算机物理内存没有空间时,它就会将需要记住的内容写入硬盘中的交换文件作为虚拟内存。
  • 如果计算机运行 Windows 需要更多内存/RAM,然后安装在系统中,它会使用一小部分硬盘用于此目的。

虚拟内存如何工作?

在当今世界,虚拟内存已经相当普遍。当某些页面需要加载到主内存中执行,而主内存又无法容纳那么多页面时,就会使用虚拟内存。

因此,在这种情况下,操作系统不会阻止页面进入主存储器,而是搜索最近使用最少或未被引用到辅助存储器的 RAM 空间,以便在主存储器中为新页面腾出空间。

让我们来了解 虚拟内存管理 借助一个例子。

举个例子

假设操作系统需要 300 MB 内存来存储所有正在运行的程序。但是,RAM 上目前只有 50 MB 的可用物理内存。

  • 然后,操作系统将设置 250 MB 的虚拟内存,并使用称为虚拟内存管理器 (VMM) 的程序来管理这 250 MB。
  • 因此,在这种情况下,VMM 将在硬盘上创建一个大小为 250 MB 的文件来存储所需的额外内存。
  • 操作系统现在将继续寻址内存,因为它认为 RAM 中存储了 300 MB 的实际内存,即使只有 50 MB 的可用空间。
  • 即使只有 300 MB 的实际内存空间可用,VMM 的工作也是管理 50 MB 内存。

什么是请求分页?

请求调页

需求分页机制与 寻呼系统 通过交换,存储在辅助存储器中的进程和页面仅按需求加载,而不是提前加载。

因此,当发生上下文切换时,操作系统绝不会从磁盘复制任何旧程序的页面或将任何新程序的页面复制到主内存中。相反,它会在加载第一个页面并获取引用的程序页面后开始执行新程序。

在程序执行期间,如果程序引用了主内存中可能不可用的页面(因为该页面已被交换),则处理器会将其视为无效内存引用。这是因为页面错误会将控制权从程序转移回操作系统,操作系统要求将页面存储回内存。

页面替换方法的类型

以下是一些重要的页面替换方法

  • FIFO
  • 最优算法
  • LRU 页面替换

FIFO 页面替换

FIFO(先进先出)是一种简单的实现方法,在该方法中,内存选择在内存虚拟地址中存在时间最长的页面进行替换。

产品特性

  • 每当加载新页面时,内存中最近进入的页面将被删除。因此,很容易确定需要删除哪个页面,因为其标识号始终位于 FIFO 堆栈中。
  • 应首先选择主存储器中最旧的页面进行替换。

最优算法

最佳页面替换方法选择下次引用时间最长的页面进行替换。

产品特性

  • 最优算法导致页面错误次数最少。该算法实现起来比较困难。
  • 最优页面替换算法是所有算法中页面错误率最低的算法,这种算法是存在的,应该称为MIN或OPT。
  • 替换那些较长时间内不常用的页面。它只利用页面需要使用的时间。

LRU 页面替换

LRU 的全称是“最近最少使用页面”。此方法可帮助操作系统查找短时间内页面的使用情况。此算法应通过将计数器与偶数页关联来实现。

它是如何运作用的?

  • 主存储器中最长时间未使用的页面将被选中进行替换。
  • 易于实现,保留列表,通过回顾时间来替换页面。

产品特性

  • LRU 替换方法具有最高的计数。此计数器也称为老化寄存器,它指定它们的年龄以及它们关联的页面还应被引用多少。
  • 主存储器中最长时间未使用的页面是应该选择进行替换的页面。
  • 它还会保存一个列表,并根据时间回顾来替换页面。

故障率

故障率是设计系统或组件发生故障的频率。它以单位时间内的故障次数表示。用希腊字母 ? (lambda) 表示。

虚拟内存的优势

以下是使用虚拟内存的优点/好处:

  • 当程序的执行只需要程序的特定部分时,虚拟内存有助于提高速度。
  • 它对于实现多道程序环境非常有帮助。
  • 它允许您同时运行更多应用程序。
  • 它可以帮助您将许多大型程序合并成较小的程序。
  • 内存之间可以共享公共数据或代码。
  • 进程可能会变得比所有的物理内存还要大。
  • 无论何时需要,都应从磁盘读取数据/代码。
  • 代码可以放置在物理内存的任何位置,无需重新定位。
  • 应该在主内存中维护更多的进程,这会增加CPU的有效利用率。
  • 每个页面都存储在磁盘上,直到需要它之后才会被删除。
  • 它允许同时运行更多应用程序。
  • 对于多道程序设计的程度没有具体的限制。
  • 应该编写大型程序,因为可用的虚拟地址空间与物理内存相比更多。

虚拟内存的缺点

以下是使用虚拟内存的缺点/弊端:

  • 如果系统正在使用虚拟内存,应用程序可能会运行得更慢。
  • 在应用程序之间切换可能需要更多时间。
  • 提供较小的硬盘空间供您使用。
  • 它会降低系统稳定性。
  • 它允许较大的应用程序在无法提供足够物理 RAM 来运行它们的系统上运行。
  • 它不提供与 RAM 相同的性能。
  • 它会对系统的整体性能产生负面影响。
  • 占用存储空间,可用于长期数据存储。

结语

  • 虚拟内存是一种存储机制,它让用户产生拥有非常大的主内存的错觉。
  • 当你的计算机没有物理内存空间时,就需要虚拟内存
  • 按需分页机制与具有交换功能的分页系统非常相似,其中存储在辅助存储器中的进程和页面仅按需加载,而不是提前加载。
  • 重要的页面替换方法是 1)FIFO 2)最优算法 3)LRU 页面替换。
  • 在FIFO(先进先出)方法中,内存选择在内存虚拟地址中存在时间最长的页面进行替换。
  • 最佳页面替换方法选择下次引用时间最长的页面进行替换。
  • LRU方法帮助操作系统查找短时间内的页面使用情况。
  • 当程序的执行只需要程序的特定部分时,虚拟内存有助于提高速度。
  • 如果系统正在使用虚拟内存,应用程序可能会运行得更慢。

总结一下这篇文章: