Virtual Address Space(虚拟地址空间)
虚拟地址表示的是进程中非实际物理地址的位置。换句话说就是,系统为每个进程维护着一个页面映射,这个页面映射是一个内部的数据结构,它的作用是将虚拟地址转换为相应的物理地址。
虚拟地址空间分为以下几部分:
Windows NT 4.0 SP3 Server Enterprise Edition, Windows 2000 Advanced Server, and Windows .NET Enterprise Server:一般的,进程能够使用低端的3GB空间(0x00000000 到 0xBFFFFFFF)。高端的1GB内存(0xC0000000 到 0xFFFFFFFF)为系统保留部分。
Windows NT/2000/XP: 进程能够使用低端的2GB内存(0x00000000 到 0x7FFFFFFF),高端的2GB内存(0x80000000 到 0xFFFFFFFF)系统保留。
Windows 95/98/Me: 对应描述如下表
区间
用途
0K - ~64K (0xFFFF)
不可写。这块区域大约应是为系统装载一些MS-DOS的特性而保留的。这块内存对于进程而言是私有的。
~64K (0x10000) -
4 MB (0x3FFFFF)
为兼容MS-DOS保留。这块内存对进程而言可读可写。然而,这段区域有可能保存着一些MS-DOS相关的结构或代码,所以进程不应该在这段区域随意读出或写入。这块内存对于进程而言是私有的。
4MB (0x400000) -
2GB (0x7FFFFFFF)
用于代码和用户数据。用户数据可读可写。代码是只执行的。这块内存对进程而言是私有的。
2GB (0x80000000) -
3GB (0xBFFFFFFF)
共享区。对于所有进程都可读写。一些系统的动态连接库和其它一些数据装载到这段区域。
3GB (0xC0000000) -
4GB (0xFFFFFFFF)
系统内存。对任意进程都是可读可写。然而,需要注意的是,这段内存是保存低等级的系统代码的地方,所以,向这片区域写入数据可能会破坏系统可能造成灾难性后果。.
详情请参阅MSDN
Virtual Address Space and Physical Storage
下期预告:
Virtual Memory Functions (虚拟内存函数族)