我知道虚拟内存在Windows中分离2G(对于内核)/ 2G(对于用户)。 但为什么variables的地址不是连续堆栈?
喜欢0x22ff74,0x22ff78,0x22ff82,0x22ff86? 这是否意味着Windows在用户进程中使用沙盒机制?
如何使程序使用虚拟内存?
用于虚拟内存pipe理的新的Windows 8.1 API:`discardVirtualMemory()`与`VirtualAlloc()`和`MEM_RESET`和`MEM_RESET_UNDO`
是否有可能迫使Linux在空闲后使虚拟内存失效
我可以在Linux上用完虚拟内存吗?
传统的gcc编译器问题
#pragma alloc_text(PAGE,functionname)
X64机器上的x86 LARGEADDRESSAWARE程序的内核模式内存大小?
使用端口映射I / O时是否使用虚拟内存?
Linux:如何检测一个进程是否过多?
这正是虚拟内存。 操作系统为每个程序提供了自己的私有地址空间。 事实上,操作系统负责将那些虚拟地址映射回物理地址空间,而不需要应用程序的注意。
正如你注意到的,这意味着两个应用程序可以有不同的数据驻留在程序中的同一虚拟地址。
在这里阅读更多关于虚拟内存。
你是否困惑物理地址和虚拟地址? 两个进程访问相同的虚拟地址是可以的,因为每个进程都可以看到自己的虚拟内存空间。 另一方面,所有进程在机器中共享相同的物理内存空间,因此每个进程将具有映射到不同物理地址的相同虚拟地址(假设没有共享内存)。
让我以另一种方式来说明。 进程X在机器A上运行,并且与进程Y在机器B上运行相同的程序。如果程序的某个全局变量在两台机器上都占用相同的内存地址,那么这很重要吗? 他们是不同的! 同样的,如果这个全局变量被存储在一个进程实例的XYZ位置,另一个进程实例可以为该全局变量具有相同的虚拟地址 (XYZ)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。