什么是虚拟内存,虚拟内存及其作用详解

  • 内容
  • 评论
  • 相关

前面介绍了计算机系统的各种内存管理策略,例如分页,分段等,所有这些策略都有相同的目标,就是同时将多个进程保存在内存中,以便允许多道程序。然而,这些策略都倾向于要求每个进程在执行之前应完全处于内存中。

虚拟内存技术允许执行进程不必完全处于内存。这种方案的一个主要优点就是,程序可以大于物理内存。此外,虚拟内存将内存抽象成一个巨大的、统一的存储数组,进而实现了用户看到的逻辑内存与物理内存的分离。这种技术使得程序员不再担忧内存容量的限制。

虚拟内存还允许进程轻松共享文件和实现共享内存。此外,它为创建进程提供了有效的机制。然而,虚拟内存的实现并不容易,并且使用不当还可能会大大降低性能。

说了这么多,到底什么是虚拟内存呢?

内存管理算法的实现有一个基本要求,就是执行的指令应处于物理内存中。满足这一要求的第一种方法是,将整个逻辑地址空间置于物理内存中。动态加载可以帮助缓解这种限制,但它通常需要特殊的预防措施和程序员的额外工作。

指令应处于物理内存以便执行的要求,似乎是必要的和合理的,但它也是有缺点的,因为它将程序的大小限制为物理内存的大小。事实上,通过实际程序的研究会发现,在许多情况下并不需要将整个程序置于内存中。

例如,分析以下内容:

  • 程序通常具有处理异常错误条件的代码。由于这些错误很少实际发生,所以这些代码几乎从不执行。
  • 数组、链表和表等所分配的内存量通常多于实际需要值。按 100X100 个元素来声明的数组,可能实际很少用到大于 10X10 个的元素。虽然汇编程序的符号表可能有 3000 个符号的空间,但是程序平均可能用到的只有不到 200 个符号。
  • 程序的某些选项和功能可能很少使用。例如,美国政府计算机的平衡预算程序多年来都没有使用过。

即使在需要整个程序的情况下,也可能并不同时需要整个程序。分段能够执行只有部分处于内存的程序,可以带来许多好处:

  • 程序不再受物理内存的可用量所限制。用户可以为一个巨大的虚拟地址空间编写程序,从而简化了编程任务。
  • 由于每个用户程序可占用较少的物理内存,因此可以同时运行更多的程序,进而增加 CPU 利用率和吞吐量,但没有增加响应时间或周转时间。
  • 由于加载或交换每个用户程序到内存所需的 I/O 会更少,用户程序会运行得更快。因此,运行不完全处于内存的程序将使系统和用户都受益。

虚拟内存将用户逻辑内存与物理内存分开。这在现有物理内存有限的情况下,为程序员提供了巨大的虚拟内存(如图 1 所示)。


虚拟内存大于物理内存的图例
图 1 虚拟内存大于物理内存的图例

本文标题:什么是虚拟内存,虚拟内存及其作用详解

本文地址:http://www.hosteonscn.com/3625.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注