Windows内存管理
我对Windows内存管理有点困惑 我在某个地方读到,Windows中的每个进程(32位)都有自己的4GB内存,这要归功于交换到磁盘。但32位Windows最多可以使用4GB。所以我认为每个进程只“认为”它有4GB,但实际上它的容量更少。 我说得对吗 那么我如何从一个进程访问另一个进程的数据呢?如果2个PE以0x400000的速度加载,我该怎么做?你能给我举个C或ASM的例子吗 谁能给我进一步解释一下吗?也许可以给我指一些好文章 简单的描述就足够了:)。Windows内存管理,windows,memory,memory-management,Windows,Memory,Memory Management,我对Windows内存管理有点困惑 我在某个地方读到,Windows中的每个进程(32位)都有自己的4GB内存,这要归功于交换到磁盘。但32位Windows最多可以使用4GB。所以我认为每个进程只“认为”它有4GB,但实际上它的容量更少。 我说得对吗 那么我如何从一个进程访问另一个进程的数据呢?如果2个PE以0x400000的速度加载,我该怎么做?你能给我举个C或ASM的例子吗 谁能给我进一步解释一下吗?也许可以给我指一些好文章 简单的描述就足够了:)。 谢谢。进程最多可以寻址4 GB的地址,这
谢谢。进程最多可以寻址4 GB的地址,这些地址由或不由“真实”内存支持。Windows操作系统,即使是32位,也可以处理超过4GB的地址,但可能有理由限制这个数量,或者限制是由硬件规定的
- :
- -第9章:内存管理
VirtualAlloc
获得了一个指针—您可以使用它。操作系统和内核模式组件为您将虚拟地址映射到实际内存中。你不能只是点击未知的[内存]地址,然后期望它以某种方式工作。好的,我明白了。但是如何访问另一个进程的内存?还是DLL的?DLL是否再次加载到使用它的每个进程中?如果我的应用程序使用例如Kernel32.dll(几乎总是在Windows上使用),我是访问我的应用程序的虚拟地址空间还是访问其他应用程序的虚拟地址空间?是否有共享地址空间?为每个进程加载相同的DLL xxx次似乎毫无意义。除非您想编写驱动程序,而且我确信您不想,否则您可以使用ReadProcessMemory
API