0

所有,请原谅我是 Windows 驱动程序开发的新手,从 WDK 阅读此文档后,我有一些我不明白的地方。

文件说

进程可用的虚拟地址范围称为进程的虚拟地址空间。每个用户模式进程都有自己的私有虚拟地址空间。对于 32 位进程,虚拟地址空间通常是 2 GB 范围 0x00000000 到 0x7FFFFFFF。对于 64 位进程,虚拟地址空间是 0x000'00000000 到 0x7FF'FFFFFFFF 的 8 TB 范围。虚拟地址范围有时称为虚拟内存范围。

我的问题是:

假设有一台具有 8 GB 内存库的计算机。

  1. 所有的虚拟地址空间都是从这 8 GB 的内存中实际分配的吗?
  2. 如果一个进程需要分配2g的虚拟地址空间,我可以说如果系统中有4个进程在运行。他们完全需要 8 GB 内存?如果答案是肯定的,这是否意味着在这些计算机中可以运行的最大进程数是 4?

我不知道我是不是误会了什么。请纠正我。多谢。

4

1 回答 1

1

1)没有虚拟地址空间独立于物理地址空间。存在由操作系统管理的从虚拟地址到物理地址的映射。因此分配给进程的虚拟地址不依赖于系统中的物理内存。

2)不,虚拟地址再次与物理地址分开。Windows 还支持虚拟内存,因此即使您没有足够的物理内存来保持所有进程处于活动状态,也可以将内存分页到磁盘。

于 2013-08-21T02:49:41.027 回答