加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 处理地址空间与虚拟内存

发布时间:2020-12-14 01:59:08 所属栏目:Windows 来源:网络整理
导读:根据我的理解,通过阅读几篇文章,我假设进程地址空间(PAS)和虚拟内存(VM)是相同的.我的理解有缺陷吗?有人可以对此有所了解并点亮我吗?我很迷惑. 我理解进程地址空间与Ram或物理内存无关. 但只是对PAS和VM感到困惑. 解决方法 第一个: “memory” is not equ
根据我的理解,通过阅读几篇文章,我假设进程地址空间(PAS)和虚拟内存(VM)是相同的.我的理解有缺陷吗?有人可以对此有所了解并点亮我吗?我很迷惑.

我理解进程地址空间与Ram或物理内存无关.

但只是对PAS和VM感到困惑.

解决方法

第一个: “memory” is not equal to “address space”.地址空间是可用地址的范围.即对于32位指针,它是4 Gb,对于64位指针,它是16 Eb.另一方面,内存是……好吧,你可以实际使用的内存(至少可能).所以,我打赌你问的是“进程内存”是否等于“虚拟内存”,或者“进程地址空间”是否等于“虚拟地址空间”.

第二:虚拟内存是您可以在用户模式下使用的唯一内存.您无法访问物理内存.物理内存用于内核模式和驱动程序.用户模式应用程序仅适用于虚拟内存.因此,所有存储器在用户模式下都是虚拟的.无需附加“虚拟”.这是默认情况.

因此,“进程地址空间”=“[虚拟]进程地址空间” – 即单个进程的虚拟地址空间. “内存”也是如此:“进程内存”=“[虚拟]进程内存”.

第三:现在,“虚拟内存”术语通常指的是“系统虚拟内存”(全局事物),它大于一个进程.另一方面:由于寻址是特定于进程的,因此不存在“系统虚拟地址空间”(所有进程和内核的全局地址空间).

所以,答案是:

>“进程地址空间”=“虚拟地址空间”=“地址空间”
>“过程记忆”<> “虚拟内存”

例子

例如,进程地址空间的典型限制是4 Gb(对于32位应用程序).但是,进程虚拟内存的典型限制是2 Gb(对于32位计算机可以扩展到3 Gb,对于64位计算机可以扩展到4 Gb).

另一方面,虚拟内存大于您的进程.考虑通过CreateFileMapping函数分配内存的情况.例如,您可以创建64 Gb虚拟内存块.即使64 Gb>也没关系. 2 Gb.当然,你不能同时使用所有64 Gb(因为进程地址空间只有4 Gb),但你可以用块,比如每512 Mb来完成.

另外,请考虑将相同的虚拟内存块映射到mupliple位置(多个地址)的情况.

换句话说,不存在虚拟内存和虚拟地址之间的一对一映射.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读