《深入理解LINUX内存管理》学习笔记 (四)
2008-06-13 16:35
591 查看
郑重声明:未经本人允许,不得用于商业或非商业的转载和使用,如有需要请联系: yrj1978@hotmail.com
页表条目的操作
X86体系结构的情况下,在include/asm-x86/pgtable.h文件中,定义了“析出”或者“检查”页表条目中的值的几个宏(在2.6.24版本的内核中,由于体系结构的关系,这几个宏可能分布在几个相关的头文件中)。通过
4
个宏,把一个线性地址从第一级页目录表
(Page directories)
追巡最后一级页目录表。
pgd_offset:
通过线性地址
(
其中的一部分指出了需要访问的内存地址在的
PGD
中的索引
)
和进程的
mm_struct
数据结构对象,返回一个指向
PGD
条目的地址,内容是某个
PUD
页面的首地址。
pud_offset:
通过线性地址(也是索引)和指向
PGD
条目的地址,返回一个指向
PUD
条目的地址,内容是某个
PMD
页面的首地址。如果硬件系统并不支持
PUD
,
则直接返回指向
PGD
条目的地址。也就是通过巧妙的直接返回
PGD
的方式,使得不同体系结构下,统一的软件架构。
pmd_offset:
通过线性地址(也是索引)和指向
PUD
条目的地址,返回一个指向
PMD
条目的地址,内容是某个
PTE
页面的首地址。如果硬件系统并不支持
PMD
,
则直接返回指向
PUD
条目的地址。也就是通过巧妙的直接返回
PUD
的方式,使得不同体系结构下,统一的软件架构。
pte_offset:
通过线性地址(也是索引)和指向
PMD
条目的地址(内容是
PMD
页面的首地址),返回一个指向
PTE
条目的地址,内容是某个需要访问的数据内存页面的首地址(物理地址),这个地址和线性地址的低位部分的数据在内存页面中的偏移相加,就获得了数据真正所在的物理地址了。
第二组宏,用于检测页表条目是否存在或者是否可用的信息。
pte_none(), pmd_none(), pud_none(),pgd_none()
,如果对应的条目不存在,则返回
1
。宏的定义只是检测条目的内容是否全
0.
pte_present(), pmd_present(), pud_present(),pgd_present(),
如果条目中的
PRESENT
位被设置,则返回
1.
pte_clear(), pmd_clear(), pud_clean(),pgd_clear(),
对相应条目清零。
pmd_bad(), pud_bad(),pgd_bad(),
相关文章推荐
- 《深入理解LINUX内存管理》学习笔记 (三)
- 深入理解LINUX内核---学习笔记02
- 深入理解LINUX内核--学习笔记
- 深入理解Linux网络内幕学习笔记
- 深入理解Linux内核学习笔记
- 《深入理解 Java 虚拟机》学习笔记(1)—— JVM 运行时数据区
- [深入理解计算机系统 学习笔记] 01 系统漫游
- 韩顺平 javascript教学视频_学习笔记23_js事件驱动机制深入理解_js常用事件_js版计算器
- 深入理解Java虚拟机---学习感悟以及笔记
- Html学习笔记 --- html 中深入理解语义化
- 深入理解Linux中内存管理
- arm-linux内存管理学习笔记(3)-页表前戏
- 深入理解Linux内存管理机制(一)
- 深入理解JVM学习笔记-自动内存管理机制
- [学习笔记]守护进程深入理解
- 读深入理解Linux内核 (第8章 内存管理, 第三部分 --- 虚拟内存分配)
- java学习笔记-------对卡片布局管理器的深入理解
- 深入理解Linux中内存管理
- 学习笔记——深入理解计算机系统——启动
- Android系统架构(简述)——《深入理解(I)》学习笔记1