Linux中有关宏数据结构的思维导图,包括表项的定义、线性地址域的定义、对页目录及页表的处理
树图思维导图提供 宏数据结构思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 宏数据结构思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6dc7327a53cc5209f1826c3784359fef
宏数据结构思维导图思维导图模板大纲
PGD、PMD 及 PT 表的表项都占 4 个字节
定义为无符号长整数
PGDIR_SHIFT 是页表所能映射区域线性地址的位数
PGDIR_MASK 为 0xffc00000,用于屏蔽偏移量位与页表域的所有位
同样的代码在 32 位系统和 64 位系统下都能使用
表项值的确定
pgd_none()函数
直接返回 0
示尚未为这个页目录建立映射,所以页目录项为空
pgd_present()函数
直接返回 1
映射虽然还没有建立,但页目录所映射的页表肯定存在于内存(即页表必须一直在内存)
子主题 3
pte_present 宏
表项不为 0,标志位为 0
映射已经建立,但所映射的物理页面不在内存
清相应表的表项
pgd_clear 宏
为了保持编程风格的一致
对页表表项标志值进行操作的宏
Set_pte()
把一个具体的值写入表项
Pte_read()
返回 User/Supervisor 标志值(由此可以得知是否可以在用户态下访问此页)
Pte _write()
Present 标志和 Read/Write 标志都为 1,则返回 1(此页是否存在并可写)
Pte _exec()
返回 User/Supervisor 标志值
Pte _dirty()
返回 Dirty 标志的值(说明此页是否被修改过)
Pte _young()
返回 Accessed 标志的值(说明此页是否被存取过)