《深入理解LINUX内存管理》学习笔记三_第1页
《深入理解LINUX内存管理》学习笔记三_第2页
《深入理解LINUX内存管理》学习笔记三_第3页
《深入理解LINUX内存管理》学习笔记三_第4页
《深入理解LINUX内存管理》学习笔记三_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、郑重声明:未经本人允许,不得用于商业或非商业的转载和使用,如有需要请联系: 页表管理( ) 内核软件架构习惯与分成硬件相关层和硬件无关层。对于页表管理, 以前(包括 )在硬件无关层使用了 级页表目录管理的方式,它不管底层硬件是否实现的也是 级的页表管理:? ( )? ( )? ( )从 开始,为了配合 位 的体系结构,硬件无关层则使用了 级页表目录管理的方式:? ( )? ( )? ( )? ( ) 每个条目中指向一个 , 的每个条目指向一个 , 的每个条目指向一个 , 的每个条目指向一个页面( ) 的物理首地址。因此一个线性地址被分为了 个部分,如下图: , , , 中到底有几个条目,不同的

2、 体系结构有不同的定义。虽然硬件无关层是这么设计的,但是底层硬件未必也是这样实现的。如 体系结构,如果不使用 ( ) 特性,则硬件底层实现的是 级的页表目录管理,事实上,只有 , 才是真正有意义的。中间插段广告 文化 恤,淘宝销售,有兴趣的可以购买。淘宝店面地址: : ? 继续页目录( )每个进程所代表的上下文数据结构中都有一个指针( ),其指向这个进程所使用的 的一个页( )。这个页面中包含了一个类型为 的数组。 的载入到 的方式完全和体系结构相关。 ,进程的页表地址从 载入到 寄存器,载入页表地址的同时,会引起 (快表,是对页目录,页表缓存的缓冲区)也被强制刷新。事实上,这也是 ( ) 函

3、数,实现的机制。 中的每个条目指向一个页( ), 这个页是由类型为 的条目组成的 。 中的每个条目同样指向一个页,这个页是由类型为 的条目组成的 。 的每个条目指向一个页,这个页是由类型为 的条 目组成的 。 的每个条目就指向了真正的数据或指令所在的页面的首地址的了,这也不是 的,如果所需要的页面被交换到磁盘空间去后,这个条目就包含的内容是在当 发生后,传入需要调用的 ( ) 函数,找到包含页面数据的交换空间。将线性地址转换成物理地址, 需要将线性地址分成个部分,其中 个的值是在各级页表中的索引或者也可以看成是偏移( ) ,另外一个是数据在页中的偏移。为了分别析出这 个部分,各级页表和页中偏移

4、都拥有特定的几个宏: , 和 。 宏表示各级页表或页中偏移所占用的 数。 的值和线性地址做 运算,获得一个各级的高位部分,一般用于页面,页表对齐。 宏表示各级所能管理的内存空间的字节数。 和 都是有 计算得到,如 体系结构是这样的: ( ) ( ( ) ) 是线性地址中偏移( ) 的位的位数, 系统是 位。 的字节数计算很简单: (和 是同样的结果)。如果需要对一个地址做页边界的对齐,则使用 ( ) 宏,这个宏将地址加上 再和 做 操作即可。事实上 ( ) 宏是和下一个页的边界对齐的。 是线性地址中第三级页表的所占的位数, 和 是由这个宏计算得到的。 是线性地址中第二级页表的所占的位数, 和

5、是由这个宏计算得到的。 是线性地址中第一级页表的所占的位数, 和 是由这个宏计算得到的。最后介绍 个重要的宏: , , , 。它们用于确定每级页表有多少条目。不使能 特性的 体系结构这几个宏定义如下: 这种情况下 事实不起作用,为了代码的硬件无关性,设置为 。 在 中定义 这种情况下 事实不起作用,为了代码的硬件无关性,设置为 。 在 中定义 页表条目( )页表的每个条目都是一个声明为数据结构的对象: , , 和 分别对应 , , 和 。虽 然这些数据结构常常只有一个无符号整数,它们被定义成数据结构有 个原因:第一,类型保护,防止被不合适的方式使用。第二,容易扩展每个条目所占字节的数量,如 使

6、能 ,则需要另外加入位( 原书是说 位, 但是我觉得应该是错误的, 应该是加入了 个字节) ,以使得能够访问多余 的物理内存。为了保持一些保护位,定义了 数据结构,它保存相关的标志,通常会保持在页表条目的低位区域。为了类型的计算,在文件 或者 中定义了 个宏。传入上述的类型,返回相应的数据结构中的部分数值: ( ) , ( ) , ( ) 和 ( ) 相反的操作的计算的宏: ( ) , ( ) , ( ) , ( ) 和 ( ) 。条目中的状态位,完全是和体系结构相关的。下面解释一下不使能 的 体系结构下,各个状态位的含义。没有使能 的 , 数据结构中只有一个 位的整数。每个 中的类型为 的指

7、针指向一个页面的首地址, 也就是说指向的地址总是页面对齐的。因此,在这个整数中 指定数目的位数,也就是 位,是给页表条目中的状态位。列表如下:比较费解的是 这个状态位, 的体系结构上并不存在这个状态位, 内核借用了 位作为这个来使用。这里还有一个问题如果有 位被设置,则 位的位置就会使用另外一个位置,幸运的是, 内核不会在用户页面中使用 特性。 内核挪 用这个位的目的是:确定一个虚拟内存的页面在物理内存中是存在的,但是用户空间的进程不能访问它,如同对一段内存区域调用 ( ) 函数并传入 标志一样。当一段内存区域被要求保护, 为被清除, 位被置一。 ( ) 宏会同时检测这 位的设置情况,让 能够自己知道对应的 是否可用: ( ) ( ( ) ( ) )如果 正好是用户空间不能访问的页面,这就相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论