虚拟内存:将不连续的物理内存抽象化后方便上层使用的内存。
windows虚拟内存分布:
32位cpu:
32bit cpu的寻址空间是0 ~ 4 G(2^32),低2G为用户地址空间(user space),对应r3权限,用户的进程都工作在这个空间;高2G为系统地址空间,对应r0,为所有系统组件,驱动共享的内存空间。
每一位代表一个地址线,32位cpu表示地址线有32条。
系统可以允许把所有低地址空间全部给单个应用程序用(However, applications can specify that the system should allocate all memory for the application below 2 gigabytes.)
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384271(v=vs.85).aspx
所以,x86应用程序最大能申请到2G的内存,驱动程序也是最多能申请到2G的内存
64位cpu:
64bit低8G为用户控件,高240G为系统空间。
x64应用程序最多能申请到8T的内存。
x86 x64 应用程序的内存限制文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx