Windows内存体系结构
理解一个系统的内存体系结构能够让你对系统内部是怎么运作的有一个更深入的了解;能够使你知道怎么在两个进程之间共享数据、系统在哪里存放了我们的数据以及怎样编写更高效的应用程序。
在32位的Windows系统中,每一个进程有4G的虚拟地址空间,之所以说是虚拟的,因为4G只是一个地址空间,一个数值而已,应用程序实际能够使用的内存还是要视计算机中实际的物理内存而定(包括系统提供的页面文件)。
进程虽然拥有4G的地址空间,但是并不是所有的地址空间都能为进程使用。进程的地址空间被分为下面几个模块。
模块 | 32位Windows系统 |
NULL 指针区域 |
0x00000000-0x0000FFFF |
用户模式区域 |
0x00010000-0x7FFEFFFF |
64KB限制区域 |
0x7FFF0000-0x7FFFFFFF |
内核模式区域 |
0x80000000-0xFFFFFFFF |
从上面表格中我们可以看到,进程实际能够使用的地址空间不足2G(用户模式区域),这个区域的地址对于进程是私有的,进程不能访问或者写入其他进程位于这块区域内的数据。NULL指针区域用于应用程序捕捉NULL指针。内核模式区域是操作系统使用,比如线程调度、内存管理、文件系统、驱动文件等等位于这个区域;所有位于这个区域的数据、代码为所有进程共享。
作者: pzxbc
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。