什么是虚拟内存?它是如何扩展物理内存的?
虚拟内存是一种内存管理技术,可以像主内存的一部分一样使用辅助内存。虚拟内存是计算机操作系统 (OS) 中使用的常用技术。
虚拟内存使用硬件和软件来使计算机能够补偿物理内存的不足,暂时将数据从随机存取存储器 ( RAM ) 传输到磁盘存储。将内存块映射到磁盘文件使计算机能够将辅助内存视为主内存。
如今,大多数个人计算机 (PC) 都配备至少 8 GB(千兆字节)的 RAM。但是,有时这不足以同时运行多个程序。这就是虚拟内存的用武之地。虚拟内存通过将最近未使用的数据交换到存储设备(例如硬盘驱动器或固态驱动器 (SSD))来释放RAM。
虚拟内存对于提高系统性能、多任务处理和使用大型程序非常重要。然而,用户不应该过度依赖虚拟内存,因为它比 RAM 慢得多。如果操作系统必须过于频繁地在虚拟内存和 RAM 之间交换数据,计算机的速度就会开始变慢,这称为抖动。
虚拟内存是在物理内存(也称为 RAM)价格昂贵的时期开发的。计算机的 RAM 量是有限的,因此当多个程序同时运行时,内存最终会耗尽。使用虚拟内存的系统使用硬盘驱动器的一部分来模拟 RAM。借助虚拟内存,系统可以加载更大的程序或同时运行的多个程序,使每个程序都可以像拥有更多空间一样运行,而无需购买更多 RAM。
虚拟内存的工作原理
虚拟内存同时使用硬件和软件来操作。当应用程序正在使用时,来自该程序的数据使用 RAM 存储在物理地址中。内存管理单元 ( MMU ) 将地址映射到 RAM 并自动转换地址。MMU可以例如将逻辑地址空间映射到相应的物理地址。
如果在任何时候,需要 RAM 空间来处理更紧急的事情,则可以将数据从 RAM 交换到虚拟内存中。计算机的内存管理器负责跟踪物理内存和虚拟内存之间的转换。如果再次需要该数据,计算机的 MMU 将使用上下文切换来恢复执行。
在将虚拟内存复制到物理内存时,操作系统将具有固定数量地址的内存划分为页面文件或交换文件。每个页面都存储在磁盘上,当需要该页面时,操作系统将其从磁盘复制到主内存,并将虚拟地址转换为真实地址。
然而,将虚拟内存交换到物理内存的过程相当缓慢。这意味着使用虚拟内存通常会导致性能明显下降。由于交换,具有更多 RAM 的计算机被认为具有更好的性能。
虚拟内存的类型
计算机的 MMU 管理虚拟内存操作。在大多数计算机中,MMU 硬件集成到中央处理单元 (CPU) 中。CPU 还生成虚拟地址空间。一般来说,虚拟内存要么是分页的,要么是分段的。
分页将内存划分为多个部分或分页文件。当计算机用完其可用 RAM 时,未使用的页面将使用交换文件传输到硬盘驱动器。交换文件是硬盘驱动器上留出的空间,用作计算机 RAM 的虚拟内存扩展。当需要交换文件时,它会使用称为页面交换的过程发送回 RAM。该系统确保计算机的操作系统和应用程序不会耗尽实内存。页面文件的最大大小可以是计算机物理内存的 1 ½ 到四倍。
虚拟内存分页过程使用页表,将操作系统和应用程序使用的虚拟地址转换为 MMU 使用的物理地址。页表中的条目指示该页是否在 RAM 中。如果操作系统或程序在 RAM 中找不到所需的内容,则 MMU 会通过页面错误异常来响应丢失的内存引用,以使操作系统在需要时将页面移回内存。一旦页面进入 RAM,其虚拟地址就会出现在页表中。
分段还用于管理虚拟内存。这种方法将虚拟内存划分为不同长度的段。内存中未使用的段可以移动到硬盘驱动器上的虚拟内存空间。分段信息或进程在段表中进行跟踪,该表显示内存中是否存在段、是否已被修改以及其物理地址是什么。此外,分段中的文件系统仅由映射到进程的潜在地址空间的段组成。
分段和分页作为内存模型的不同之处在于内存的划分方式;然而,这些过程也可以组合。在这种情况下,内存被分为帧或页。段占用多个页,虚拟地址包括段号和页号。
其他页面替换方法包括先进先出(FIFO)、最优算法和最近最少使用( LRU )页面替换。FIFO 方法让内存选择替换在虚拟地址中停留时间最长的页面。最优算法方法根据最长时间后不太可能被替换的页面来选择页面替换;尽管实现起来很困难,但这会减少页面错误。LRU页面替换方法替换主存中最长时间未被使用的页面。
如何管理虚拟内存
在操作系统中管理虚拟内存非常简单,因为有默认设置可以确定为虚拟内存分配的硬盘空间量。这些设置适用于大多数应用程序和进程,但有时可能需要手动重置分配给虚拟内存的硬盘空间量 – 例如,对于依赖于快速响应时间的应用程序或当计算机具有多个硬盘驱动器 ( HDD )。
手动重置虚拟内存时,必须指定用于虚拟内存的最小和最大硬盘空间量。为虚拟内存分配太少的 HDD 空间可能会导致计算机内存不足。如果系统持续需要更多虚拟内存空间,那么考虑添加 RAM 可能是明智之举。常见操作系统通常建议用户不要将虚拟内存增加到超过 RAM 量的 1 ½ 倍。
管理虚拟内存因操作系统而异。因此,IT 专业人员应该了解管理物理内存、虚拟内存和虚拟地址的基础知识。
SSD 中的 RAM 单元的使用寿命也有限。RAM 单元的写入次数有限,因此将它们用于虚拟内存通常会缩短驱动器的使用寿命。
使用虚拟内存有什么好处?
使用虚拟内存的优点包括:
- 它可以处理的地址数量是主存的两倍。
- 它允许同时使用更多应用程序。
- 它使应用程序无需管理共享内存,并且使用户无需在 RAM 空间耗尽时添加内存模块。
- 当只需要执行程序的一部分时,它会提高速度。
- 由于内存隔离,它提高了安全性。
- 它允许多个较大的应用程序同时运行。
- 分配内存相对便宜。
- 它不需要外部碎片。
- CPU 使用率对于管理逻辑分区工作负载非常有效。
- 数据可以自动移动。
- 原始进程中的页面可以在创建自身副本的fork系统调用操作期间共享。
除了这些好处之外,在虚拟化计算环境中,管理员还可以使用虚拟内存管理技术为资源耗尽的虚拟机 ( VM ) 分配额外的内存。这种虚拟化管理策略可以提高VM性能和管理灵活性。
使用虚拟内存有哪些限制?
尽管使用虚拟内存有其好处,但它也带来了一些值得考虑的权衡,例如:
- 如果应用程序从虚拟内存运行,则运行速度会变慢。
- 数据必须在虚拟内存和物理内存之间映射,这需要额外的硬件支持来进行地址转换,从而进一步减慢计算机的速度。
- 虚拟存储的大小受到辅助存储量以及计算机系统的寻址方案的限制。
- 如果没有足够的 RAM,可能会发生抖动,这会使计算机运行速度变慢。
- 在使用虚拟内存的应用程序之间切换可能需要一些时间。
- 它减少了可用硬盘空间。
虚拟内存(虚拟 RAM)与物理内存(RAM)
在谈论虚拟内存和物理内存之间的差异时,通常最大的区别是速度。RAM 比虚拟内存快得多。然而,RAM 往往更昂贵。
当计算机需要存储时,首先使用RAM。虚拟内存速度较慢,仅在 RAM 已满时才使用。
用户可以通过购买和安装更多 RAM 芯片来主动为计算机添加 RAM。如果由于内存交换过于频繁而导致速度变慢,这非常有用。RAM 的大小取决于计算机上安装的内容。另一方面,虚拟内存受到计算机硬盘大小的限制。虚拟内存设置通常可以通过操作系统进行控制。
此外,RAM 使用交换技术,而虚拟内存则使用分页技术。物理内存受限于 RAM 芯片的大小,而虚拟内存则受限于硬盘的大小。RAM 还可以直接访问 CPU,而虚拟 RAM 则不能。
虚拟内存的历史
在虚拟内存被开发出来之前,计算机有 RAM 和辅助内存。早期的计算机使用磁芯存储器作为主存储器,使用磁鼓作为辅助存储器。早在 20 世纪 40 年代和 20 世纪 50 年代,计算机内存价格昂贵,而且通常供应短缺。随着计算机程序的大小和复杂性不断增加,开发人员不得不担心他们的程序会耗尽计算机的所有主内存并耗尽内存。
在早期,程序员使用一种称为覆盖的过程来运行大于可用内存的程序。程序中不持续使用的部分被设置为覆盖层,在需要时,将覆盖内存中现有的覆盖层。它需要大量的编程才能使覆盖工作,这是自动化虚拟内存发展的关键推动力。
德国物理学家 Fritz-Rudolf Güntsch 被认为在 1956 年提出了虚拟内存的概念,尽管这一点一直存在争议。然而,Güntsch 最终描述了一种高速缓冲存储器的形式。
虚拟内存系统的第一个明显的真实实例来自英国曼彻斯特的曼彻斯特大学,该大学试图为 Atlas 计算机开发单级存储系统。该系统使用分页将程序员的虚拟地址映射到主存储器上。Atlas 于 1959 年开发,并于 1962 年投入使用。
1961 年,Burroughs Corp 发布了第一台具有虚拟内存的商用计算机。该版本的虚拟内存使用分段,而不是分页。
1969 年,IBM 研究人员证明虚拟内存覆盖系统比早期的手动系统运行得更好。直至目前,对此仍存在争议。20世纪70年代的大型机和小型机普遍使用虚拟内存。早期的 PC 中并未包含虚拟内存技术,因为开发人员认为内存不足在这些机器中不会成为问题。事实证明这个假设是错误的。Intel于1982年在80286处理器的保护模式下引入了虚拟内存,并在1985年80386问世时引入了分页支持。
以上是 什么是虚拟内存?它是如何扩展物理内存的? 的全部内容, 来源链接: utcz.com/dzbk/940704.html