虚拟内存和物理内存有什么区别?

时间:2013-01-15 21:24:45

标签: memory-management operating-system virtualization ram virtual-memory

我经常对操作系统中的虚拟化概念感到困惑。考虑将RAM作为物理内存,为什么我们需要虚拟内存来执行进程?

当外部硬盘驱动器的进程(程序)被带到主存储器(物理内存)执行时,这个虚拟内存在哪里。

谁负责虚拟内存以及虚拟内存的大小?

假设RAM的大小是4GB(即2 ^ 32-1地址空间),虚拟内存的大小是多少?

4 个答案:

答案 0 :(得分:72)

虚拟内存是一种抽象,它给程序员一种在系统上提供无限内存的错觉。

虚拟内存映射与实际物理地址相对应。 操作系统创建并处理这些映射 - 利用页表以及其他数据结构来维护映射。虚拟内存映射总是在页表或某些类似的数据结构中找到(在虚拟内存的其他实现的情况下,我们可能不应该将其称为“页表”)。页表也在物理内存中 - 通常在内核保留的空间中,用户程序无法写入。

虚拟内存通常比物理内存大 - 如果虚拟内存和物理内存大小相同,虚拟内存映射的理由就不多了。

通常,只有程序所需的部分驻留在内存中 - 这是一个名为“分页”的主题。虚拟内存和分页紧密相关,但相同的主题。还有其他虚拟内存实现,例如分段。

我可能在这里假设错误,但我敢打赌,你发现难以绕过的东西与虚拟内存的特定实现有关,很可能是分页。没有单向来进行分页 - 有许多实现,你的教科书描述的实现可能与Linux / Windows等实际操作系统中出现的实现不一样 - 可能存在细微差别。

我可以写一千段有关传呼的内容......但我认为最好留给另一个专门针对该主题的问题。

答案 1 :(得分:16)

我无耻地复制顶部手册页的摘录

  

VIRT - 虚拟图像(kb)             任务使用的虚拟内存总量。它包括所有代码,数据和共享库以及已经存在的页面             换出已映射但未使用的页面。

     

SWAP - 交换大小(kb)             内存不是常驻但存在于任务中的内存。这是已被换出的内存,但可能包含其他非内存             驻地记忆。此列的计算方法是从虚拟内存中减去物理内存

答案 2 :(得分:5)

见这里:Physical Vs Virtual Memory

虚拟内存存储在硬盘驱动器上,并在RAM填满时使用。物理内存仅限于安装在计算机中的RAM芯片的大小。虚拟内存受硬盘大小的限制,因此虚拟内存可以提供更多存储空间。

答案 3 :(得分:1)

物理内存:物理内存是指计算机中的 RAM 或主内存。物理内存是易失性内存。因此,它需要持续的电力流动来保留数据。

虚拟内存是逻辑内存。换句话说,它是一种由操作系统执行的内存管理技术。虚拟内存允许程序员为程序使用比可用物理内存更多的内存。如果物理内存是4GB,虚拟内存是16GB,程序员就可以使用16GB的虚拟内存来执行程序。使用虚拟内存,他可以执行需要比物理内存更多内存的复杂程序。

物理内存和虚拟内存的主要区别在于,物理内存是指连接在主板上的系统的实际RAM,而虚拟内存是一种内存管理技术,允许用户执行比实际物理内存更大的程序记忆。