1. 地址空间中的区域
当系统创建一个进程时,该进程的地址空间大部分是闲置的或是尚未分配的。如果想使用这部分地址空间,必须调用VirtualAlloc来分配其中的区域(region),分配区域的操作称为预订(reserving)。
当应用程序预订地址空间区域时,系统会确认区域的起始地址正好是分配粒度的整数倍,分配粒度因不现的CPU平台而不同,目前所有CPU平台都使用相同的分配粒度,64KB。
当应用程序预订地址空间中的一块区域时,系统会确认区域的大小正好是系统页面大小的整数倍。页面是一个内存单元,大小根据不同的CPU而不同,像X86或X64系统的页面大小为4KB,而IA-64系统的页面大小为8KB。
当应用程序不再需要访问所预订的地址空间区域,应调用VirtualFree来释放。
2.给区域调拔物理存储器
为了使用所预订的地址空间区域,还必须分配物理存储器,并将存储器映射到所预订的区域, 这个过程称为调拔物理存储器。物理存储器始终以页面为单位来调拔的,可通过调用VirtualAlloc来将物理存储器调拔给所预订的区域。
当调用物理存储器给区域时,并不需要给整个区域都调拔物理存储器,例如可以预订一块大小为64KB的区域,然后把物理存储器调拔给该区域中的第2个页面和第4个页面。
当不再需要访问所预订区域中已调拔的物理存储器时,应该调用VirtualFree来释放物理存储器。