全部博文(77)
分类:
2012-08-07 16:58:38
原文地址:《深入理解Linux内核》内存寻址学习心得2 作者:lsy011025
1. 页相关:PAGE_SIZE使用PAGE_SHIFT返回页大小,PAGE_MASK(0xfffff000)用来屏蔽PAGE_SHIFT(Offset字段)。PAGE_SHIFT=log2PAGE_SIZE,所以PAGE_SHIFT的值一般为12。212=4096
2. PMD相关:PMD_SIZE使用PMD_SHIFT返回页中间目录项可映射区域大小。PMD_MASK用来屏蔽Offset字段和Table字段的所有位。
当PAE被禁用时,PMD_SHIFT的值为22,PMD_SIZE为222或4M,PMD_MASK(0xffc00000)。
当PAE被激活时,PMD_SHIFT的值为21,PMD_SIZE为221或2M,PMD_MASK(0xffe00000)。
当使用扩展分页时,LARGE_PAGE_SIZE=PMD_SIZE,LARGE_PAGE_MASK=PMD_MASK。
3. PUD相关:PUD_SIZE使用PUD_SHIFT返回页上级目录项映射的区域大小,PUD_MASK用来屏蔽Offset字段、Table字段和Midddle Air字段的所有位。在80x86处理器上PUD_SHIFT=PMD_SHIFT,PUD_SIZE=PMD_SIZE。
4. PGD相关:PGDIR_SIZE使用PGD_SHIFT返回页全局目录项映射的区域大小,PGD_MASK用来屏蔽Offset字段、Table字段、Midddle Air字段和Upper Air字段的所有位。
当PAE被禁止时,PGDIR_SHIFT=22=PMD_SHIFT=PUD_SHIFT,PGDIR_SIZE=222=4M,PGDIR_MASK(0xffc00000)。
当PAE被激活时,PGDIR_SHIFT=30,PGDIR_SIZE=230=1GB,PGDIR_MASK(0xc0000000)管理员在2009年8月13日编辑了该文章文章。