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