内存管理----物理内存
PC上有三条总线,分别是数据总线、地址总线和控制总线。32位的CPU的寻址能力为4GB(2^32)个字节。用户最多可以使用4GB的真实的物理内存。
内存管理----虚拟内存
Windows的所有程序(包括Ring0层和Ring3层的程序)可以操作的都是虚拟内存。之所以称为虚拟内存,是因为对它的所有操作,最终会变成一系列对真实物理内存的操作。在CPU中有一个重要的寄存器CR0,它是32位的寄存器,其中的一个位(PG位)是负责告诉系统是否分页的。Windows在启动前会将它的PG位置1,即Windows允许分页。DDK中有一个宏PAGE_SIZE记录着分页大小,一般为4KB。4GB的虚拟内存会被分割成1M个(4GB/4KB=2^20)分页单元。
虚拟地址在0~0x7FFFFFFF范围内的虚拟内存,即低2GB的虚拟地址,被称为用户模式地址。而0x80000000~0xFFFFFFFF范围内的虚拟内存,即高2GB的虚拟地址,被称为内核模式地址。Windows规定运行在用户态(Ring3层)的程序,只能访问用户模式地址,而运行在核心态(Ring0层)的程序,可以访问整个4GB的虚拟内存,即用户模式地址和内核模式地址。