虚拟内存真的存在吗?

时间:2013-01-29 07:58:42

标签: linux memory memory-management operating-system

虚拟内存是否真的存在于我们的计算机系统中(即硬盘上)?

如果不是如何在数据不在主存储器中(即发生页面错误)的情况下如何从虚拟存储器到硬盘中的实际数据进行映射。是否有任何表维护从虚拟存储器到硬盘数据的映射。

5 个答案:

答案 0 :(得分:2)

  1. 内存被称为虚拟,因为进程将其地址空间视为可用内存的连续块,使用底层地址总线宽度的所有宽度,假设为32位系统为4GB。因此,每个进程都有一个4GB的地址空间,但这个内存并没有完全由物理内存支持,从1到1。即使你拥有4GB的物理内存来支持进程的4GB地址空间,内核会在哪里运行,其他进程呢?此内存 为虚拟内容。
  2. 是的,表维护进程地址空间。为简单起见,一些页面当前映射在易失性物理内存上,但有些页面则没有。它们由HDD上的内存文件支持。当发生页面错误时,页面错误将检查该页面是否映射到物理内存(通常是在页面的属性内部),如果没有,它将从HDD上的内存映射文件中获取它,并用它替换映射到物理内存的旧页面。
  3. 希望得到这个帮助。

答案 1 :(得分:1)

是虚拟内存确实存在,是的,有一个表维护映射。例如,在维基百科中查找page table。事实上,大多数虚拟内存文章都会完整地回答你的问题。

答案 2 :(得分:1)

您的大多数问题均由http://en.wikipedia.org/wiki/Virtual_memory回答。

  1. 虚拟内存必须存在后备存储。这通常是硬盘。基本上它的其他设备通常比RAM慢,但容量更大
  2. 发生页面错误时,页面将从后备存储
  3. 获取
  4. 页表包含有关在后备存储中找到该页面的位置的信息

答案 3 :(得分:0)

简短的回答,没有:)虚拟内存是虚拟的! 特别是如果您将虚拟内存视为“可由进程处理的内存”。在64位系统上,整个磁盘几乎无法支持整个虚拟内存。所以“在现实中”,就像你问的那样,我会说不。

Long(-ish)回答:虚拟内存作为内核中的一系列数据结构而存在。它们主要跟踪当前保留,分配,映射到文件或映射到物理内存的页面/段。 此外,如果你看到的是“分配的虚拟内存”,答案是不同的。这总是以一种或另一种形式存在(通常是由硬盘交换空间支持的页面)。

答案 4 :(得分:0)

是的,大多数使用的虚拟内存字节存在于某个地方。我说“最”,因为映射某些特殊硬件的寄存器的页面可能有漏洞。但是你分配的所有内存都存在于RAM或硬盘上。

维基百科文章解释了所有细节:http://en.wikipedia.org/wiki/Virtual_memory