LINUX内核中计算页面号
来源:互联网 发布:爱弹幕最新域名后缀 编辑:程序博客网 时间:2024/06/06 02:49
Linux主要采用分页机制来实现虚拟内存管理。内存页的大小为PAGE_SIZE字节,而不是4 KB。在不同的平台上,页大小范围可以是4 KB到64 KB。
关于页号和页内偏移量有关的三个个宏如下:
(1) PAGE_SHIFT 宏
#define PAGE_SHIFT
#define PAGE_SHIFT
#define PAGE_SHIFT
#define PAGE_SHIFT
…………………
作用:PAGE_SHIFT的作用是通过对地址右移PAGE_SHIFT得到一个地址所在页的页号。
(2) PAGE_SIZE 宏
#define PAGE_SIZE
我们以 #define PAGE_SHIFT
1UL << PAGE_SHIFT 即:0x0000 0001<<12
页面的大小即为4K。
(3) PAGE_MASK宏
#define PAGE_MASK
我们以PAGE_SHIFT=12为例来说明PAGE_MASK的值,当PAGE_SHIFT=12时,PAGE_SIZE =4K = 0x0000 1000.
PAGE_SIZE -1 = 0x0000 1000 -1 = 0x0000 0FFF
~(PAGE_SIZE-1) = ~0x0000 0FFF = 0xFFFF F000
也就是说,任何地址与上PAGE_MASK,结果为这个地址所在的页面的页面号。PAGE_MASK用于屏蔽掉偏移量域的所有位,而只剩下页面号域。
总之,得到一个地址所在页面的页号有两种方法,一种方法就是用这个地址与PAGE_MASK相与,相与得到的结果就是页号;第二种方法就是把这个地址右移PAGE_SHIFT,移位的结果就是页号。
- LINUX内核中计算页面号
- Linux中计算一个地址所在页面的页号
- linux内核计算时间差
- Linux内核中crc16_table与crc32_table的计算
- 在linux内核中使用整数运算模拟浮点运算计算三角函数
- tcp中RTO的计算及相关开源实现(Linux内核、unbound)
- linux内核中container_of
- linux内核计算时间差以及jiffies溢出
- Linux内核启动-开启页面映射
- Linux内核启动-开启页面映射
- Linux内核页面换入换出
- linux内核虚拟内存之物理页面分配
- Linux内核中读写文件
- Linux内核中GET_CURRENT()函数
- Linux内核中sk_buff分析
- linux内核中读写文件
- linux内核中读写文件
- linux内核中读写文件
- UML 基础: 类图
- 阿里入股新浪 叠加效应或带来购物新模式
- LPC23xx开发板通过同一按键实现短按复位和长按恢复出厂设置
- android设置各种字体样式
- Json解析
- LINUX内核中计算页面号
- CMDN CLUB#26期:数字渠道营销主题沙龙(成都站)PPT 下载
- Silverlight中的TabControl如何绑定数据
- Verilog HDL 学习笔记1-data type
- 教你如何把控版式第四季 (造型、构成)
- Android中的Activity的生命周期
- 传阿里IPO估值保守 防止股价步Facebook后尘
- 红外摄像机晚上图像雪花的原因和解决方法
- document.body.clientHeight 和 document.documentElement.clientHeight的区别