AWE & PAE

PAE为硬件层面概念,AWE为OS层面概念

  • OS为了使用大物理内存,有了PAE的支持,提供AWE机制

PAE

  • PAE是需要硬件支持的,32位地址总线变成36条,那么寻址范围从4G变成了64G;此外PDEPTE中的pfn的范围也大了(页大小没有变),所以PDEPTE的长度就变了,成了8字节,那么虚址物址映射时,1个页面就只能存512项PDEPTE,2^9,原来的10+10+12变成了9+9+12少了2位,所以又增加了一级映射,也就是三级映射的成因。如果是LARGE_PAGE呢?那么就退化成二级映射,页大小2M。

AWE

  1. AWE本质是分配物理内存,例如需要操作10G内存,那么虚址空间还是4G,怎么去操作这10G的物址就是问题?我们可以拿1G虚址分10次对10G物址进行映射操作,那么这种感觉就像一个移动的窗口(虚址)操作固定的资源,可能地址窗口扩展的名字就来源于此吧(纯瞎猜)。
  2. AWE牵扯的API
  3. AllocateUserPhysicalPages(NtAllocateUserPhysicalPages )
  4. AllocateUserPhysicalPagesNuma
  5. FreeUserPhysicalPages(NtFreeUserPhysicalPages )
  6. MapUserPhysicalPages(NtMapUserPhysicalPages )
  7. MapUserPhysicalPagesScatter(NtMapUserPhysicalPagesScatter )
  8. Other:
  9. Map时,只能对Allocated物理页进行操作,因为会对Bitmap进行比较
  10. AWE结构(Wrk
typedef struct _AWEINFO {
    PRTL_BITMAP VadPhysicalPagesBitMap;
    ULONG_PTR VadPhysicalPages;
    ULONG_PTR VadPhysicalPagesLimit;
    PEX_PUSH_LOCK_CACHE_AWARE PushLock;
    PMI_PHYSICAL_VIEW PhysicalViewHint[MAXIMUM_PROCESSORS];
    MM_AVL_TABLE AweVadRoot;
} AWEINFO, *PAWEINFO;

你可能感兴趣的:(Win内核,IA-32原理)