【问题标题】:Virtual address space in windows [duplicate]Windows中的虚拟地址空间[重复]
【发布时间】:2013-08-23 06:29:16
【问题描述】:

各位,请原谅我是Windows驱动开发的新手,看了this document from WDK之后,有些不明白的地方。

文件说

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

我的问题是:

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

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

我不知道我是否误会了什么。请纠正我。非常感谢。

【问题讨论】:

  • 虚拟意味着物理 RAM 的数量不会限制进程可以看到的内存数量。不适合物理 RAM 的数据存储在硬盘上,并根据需要自动调入和调出内存。即使“数量”相同,虚拟地址和物理 RAM 之间也没有 1:1 的映射关系。
  • 所有,我找到答案是here,谢谢。

标签: c++ windows operating-system wdk virtual-address-space


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 2023-03-17
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2014-09-09
    • 2019-07-03
    相关资源
    最近更新 更多