当前位置:嗨网首页>书籍在线阅读

06-内存页面大小

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

23.1.4 内存页面大小

一般情况下,内存页面的大小是4KB(即PAGE_SIZE定义为4KB),但是这并非是一定的,实际上,页面大小在一个4~64KB的范围内是可变的,即使在相同的平台下也可以定义不同的PAGE_SIZE和PAGE_SHIFT。

鉴于此,当在内核空间中通过get_free_pages()函数申请内存时,如果它的第二个参数为order,意味着申请PAGE_SIZE * 2order的内存,同样是申请64KB内存,如果PAGE_SIZE为4KB,应该传入的order是4,如果PAGE_SIZE是16KB,应该传入的参数是2。为了保证在申请64KB内存时,在任何PAGE_SIZE的情况下都成立,可以使用如代码清单23.3所示的方法。

代码清单23.3 通过get_order()获得要申请内存的order

1 #include <asm/page.h>

2 int order = get_order(64*1024);

3 buf = get_free_pages(GFP_KERNEL, order);