3.1.1 内核对用户空间的管理MADDRESS_SPACE,MEMORY_AREA结构体的声明
3.1.1 内核对用户空间的管理MADDRESS_SPACE,MEMORY_AREA结构体的声明
3.1.1 内核对用户空间的管理
所谓用户空间,是指CPU运行于用户态时所访问的虚存地址范围,这个虚存地址范围属于进程每个进程都有同样的用户空间虚存地址范围,但是对其中具体区间的使用则可能各不相同。Windows的用户空间虚存地址从0开始一直延伸到0x7MMF,范围是2GB,每个进程都有这么一个2GB的用户空间。这样,假定系统中有50个进程,一共就得有100GB用于这些进程的用户空间(系统空间的范围也是2GB,但由所有进程公用),哪来这么大的内存容量呢?实际上,虽然每个进程有2GB的用户空间,真正在使用的通常只有其中很小的一部分。凡是不实际使用的虚存地址区间,就不需要有物理映射,或者说不需要落实到物理存储介质上。另一方面,即使有物理映射,也不一定是映射到物理内存页面上,而可能是映射到外设上的某个倒换页面。事实上,只有当前正受到访问的页面才必须映射到物理内存页面,暂时不受到访问的页面都可以映射到外设上的“倒换文件”里面,到实际受到访问的时候才倒换到物理内存页面中来。这样,七个坛子两个盖,靠着来回倒腾,才能使区区 256MB或512MB的物理内存能够应付得来。
每个进程都有自己的用户空间,其“进程控制块”EPROCESS中有个指针 VadRoot,指向代表着这个用户空间的数据结构,其类型定义为: