【发布时间】:2013-08-23 06:29:16
【问题描述】:
各位,请原谅我是Windows驱动开发的新手,看了this document from WDK之后,有些不明白的地方。
文件说
进程可用的虚拟地址范围是 称为进程的虚拟地址空间。每个用户模式 进程有自己的私有虚拟地址空间。对于 32 位 进程,虚拟地址空间通常是 2GB 范围 0x00000000 到 0x7FFFFFFF。对于 64 位进程,虚拟 地址空间是 8 TB 范围 0x000'00000000 到 0x7FF'FFFFFFFF。一系列虚拟地址有时称为 虚拟内存范围。
我的问题是:
假设有一台具有 8 GB 内存的计算机。
- 是否所有的虚拟地址空间都是从这里分配的 8GB 内存?
- 如果一个进程需要分配2g虚拟地址空间,我可以说如果系统中有4个进程在运行。他们完全需要 8 GB 内存?如果答案是肯定的,这是否意味着在这些计算机中可以运行的最大进程数是 4?
我不知道我是否误会了什么。请纠正我。非常感谢。
【问题讨论】:
-
虚拟意味着物理 RAM 的数量不会限制进程可以看到的内存数量。不适合物理 RAM 的数据存储在硬盘上,并根据需要自动调入和调出内存。即使“数量”相同,虚拟地址和物理 RAM 之间也没有 1:1 的映射关系。
-
所有,我找到答案是here,谢谢。
标签: c++ windows operating-system wdk virtual-address-space