+ -
当前位置:首页 → 问答吧 → linux X86 分页权限测试!

linux X86 分页权限测试!

时间:2010-08-23

来源:互联网

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>


  4. #define PAGE_SHIFT  12
  5. #define PAGE_SIZE (1u<<PAGE_SHIFT)
  6. #define PAGE_MASK ~(PAGE_SIZE-1)

  7. void test_page(char *pg_start)
  8. {
  9.     memset(pg_start, 'A', PAGE_SIZE-1);
  10.     *(pg_start+PAGE_SIZE-1) = '\0';
  11.     printf("strlen(pg_start) = %u \n", strlen(pg_start));
  12.     return;
  13. }

  14. int main()
  15. {
  16.     char *p;
  17.     char bak[PAGE_SIZE];
  18.     unsigned pg_start;

  19.     p = malloc(1);
  20.     pg_start = (unsigned)p&PAGE_MASK;
  21.     memcpy(bak, (char*)pg_start, PAGE_SIZE);
  22.     test_page((char *)pg_start);
  23.     memcpy((char*)pg_start, bak, PAGE_SIZE);
  24.     free(p);
  25.     return 0;
  26. }
复制代码
linux X86 32位机下故计应该跑不出段错误吧!跑出来的请报告!

作者: zhangsuozhu   发布时间: 2010-08-23

32、64跑了下都没错

作者: hellioncu   发布时间: 2010-08-23

  64位X86 分页也是4K大小

作者: zhangsuozhu   发布时间: 2010-08-23

我记得分页大小可以调的,x86-64下还能调到GB级别的大小。

作者: davelv   发布时间: 2010-08-23

回复 davelv


    linux没开PAE吧

作者: zhangsuozhu   发布时间: 2010-08-23

回复 zhangsuozhu
32位的Linux有PAE内核阿。

作者: davelv   发布时间: 2010-08-23

呵呵开PAE也没问题。开PAE 页大小是2M。比4K还大。

作者: zhangsuozhu   发布时间: 2010-08-23