linux - 虚拟内存真的存在吗?

标签 linux memory memory-management operating-system

<分区>

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

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

最佳答案

  1. 内存之所以称为虚拟,是因为进程将其地址空间视为可用内存的连续 block ,使用底层地址总线宽度的所有宽度,假设 32 位系统为 4GB。所以每个进程都有一个 4GB 地址空间,但是这个内存并没有完全由物理内存在 1 对 1 的基础上支持。即使你有 4GB 的物理内存来支持进程的 4GB 地址空间,内核和其他进程会去哪里?此内存必须是虚拟的。
  2. 是的,表维护进程地址空间。为简单起见,一些页面当前映射到 volatile 物理内存,而另一些则不是。它们由 HDD 上的内存文件支持。当发生页面错误时,页面错误将检查该页面是否映射到物理内存(通常它位于页面属性中),如果没有,它将从硬盘上的内存映射文件中获取它,并用它替换映射到物理内存的旧页面。

希望这对您有所帮助。

关于linux - 虚拟内存真的存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14578146/

相关文章:

linux - 从所有子目录中的所有 mp3 文件中删除前 3 个字符和最后 1 个字符

c# - 迭代大型数据集时出现 OutOfMemoryException

c++ - 如何在编译器级别实现 `delete[] obj` 和 `delete obj`

php - Doctrine 查询内存使用情况

c - 从包装器中锁定程序

android - 使用 MCC、MNC、LAC 和小区 ID 查找位置

c++ - 标准 C++ 中是否有一种可移植的方法来检索主机名?

c++ - C/C++ 动态链接库重载

Windows 保护模式 - 内存

numpy - 步幅如何帮助遍历 numpy 中的数组?