我使用 Linux 已经有一段时间了,当我们说虚拟内存时,我们指的是交换空间吗?例如,在 top 命令中,我们有一个单独的列虚拟现实技术(虚拟内存),是指linux机器的交换空间吗?我想知道虚拟内存和交换空间是同一个东西吗?有人可以帮助我消除这种困惑吗?
答案1
联机top
帮助页将它们区分如下:
就我们的目的而言,内存分为三种类型,其中一种是可选的。首先是物理内存,这是一种有限的资源,代码和数据在执行或引用时必须驻留在其中。接下来是可选的交换文件,可以在其中保存修改的(脏)内存,并在对物理内存的需求过多时检索。最后,我们有虚拟内存,这是一种几乎无限的资源,可以实现以下目标:
- 抽象,不受物理内存地址/限制的影响
- 隔离,每个进程都在单独的地址空间中
- 共享,一个映射可以满足多种需求
- 灵活性,为文件分配虚拟地址
VIRT
中的列显示top
进程分配了多少地址空间。其中大部分通常未使用。当它是使用后,内核必须使物理内存可供进程使用。理想情况下,该物理内存可以从空闲内存池中获取,并且不会影响其他任何内容。然而,如果没有足够的可用物理内存,内核必须删除内存中的一些其他数据,并且那这就是交换空间的用武之地:内核使内存可用的方法之一是将其内容写入交换空间。
VIRT
虚拟内存是一个有点抽象的概念:如中的列所示top
,它是进程表示可能使用的所有内存。交换空间是在进程需要使用内存时帮助内核提供可用内存的一种方法。