物理内存是有限的,计算机系统上运行的所有进程都共享这种有限的物理内存。 物理内存因不同的计算机系统而异。
理想情况下,我们将拥有一个内存大小与CPU内存空间大小完全相等的计算机系统。 例如,对于64位CPU,我们希望系统中存在2^64个物理内存,但这通常受到内存芯片容量以及SDRAM芯片价格的限制。
为了克服这种限制,我们可以让进程认为它们具有无限的物理内存。 这种技术被称为虚拟内存。
虚拟内存允许多个程序同时运行,每个程序都有自己的虚拟地址空间,从而实现高效的多任务处理。在具有虚拟内存的系统上运行的任何程序都假定它是唯一正在运行的程序,通常可以使用整个CPU地址空间中的任何内存位置。每个进程都有一个使用巨大而连续的内存空间的错觉,即使可用的物理SDRAM可能有限。
总之,虚拟内存是一个复杂的内存管理系统,它抽象和优化了物理内存资源的使用,增强了计算机系统的整体性能和能力。 它提供了一个抽象层,允许程序在看似无限的内存空间中运行,并支持执行复杂和资源密集型任务。
虚拟内存的优点和缺点
虚拟内存是计算机系统中的一个基本概念,使它们能够有效地管理和利用可用的物理内存资源,将计算机的能力扩展到远远超出其物理约束范围。
虚拟内存是一种强大且多功能的技术,在现代操作系统中发挥着举足轻重的作用,确保了多样化和资源密集型应用程序的无缝执行。
使用虚拟内存的主要原因
1.程序独立性:程序访存独立意味着程序在执行过程中使用的内存地址不是固定的。相反,该程序使用虚拟地址,操作系统负责将这些虚拟地址映射到物理地址。访存独立性支持动态加载,允许在需要时将程序的数据加载到内存中。这种灵活性通过按需加载来提高资源利用率。程序访存独立性简化了操作系统和开发人员的内存管理。它允许操作系统在不同的内存位置加载程序,而无需修改程序的代码。这种抽象使开发和运行程序变得更加容易,而不受物理内存的实际大小或其在物理内存中的位置的限制。
2.隔离和保护:虚拟内存可以相互隔离进程。每个进程都分配了自己的虚拟地址空间,提供了它可以独家访问整个内存的错觉。这种隔离可以防止一个进程干扰另一个进程的内存内容,从而增强系统稳定性和安全性。虚拟内存系统提供内存保护。每个进程都有自己的一组权限来访问其虚拟地址空间的不同部分。未经授权的访问尝试会导致内存保护故障,防止进程破坏彼此的数据。
虚拟内存也有几个缺点
实现虚拟内存需要复杂的逻辑和资源。每次程序访问内存时,虚拟地址都必须转换为物理地址,这是一个复杂而耗时的操作。如果请求的数据不在主存中,则必须从二级存储器(HDD或SSD)检索。为了帮助减轻将虚拟地址转换为物理地址的性能损失,应在处理器内实现专用内存管理单元(MMU)硬件。