li
  当前位置:主页 > 操作系统Redhat Linux > 文章内容
li
探索Linux 操作系统内存模型和管理(5)
来源: www.ixdba.net  作者: IXDBA.NET技术社区    时间:2008-02-23   阅读:6  

在 Linux 中,分页单元的使用多于分段单元。前面介绍 Linux 分段模型时已提到,每个分段描述符都使用相同的地址集进行线性寻址,从而尽可能降低使用分段单元将逻辑地址转换成线性地址的需要。通过更多地使用分页单元而非分段单元,Linux 可以极大地促进内存管理及其在不同硬件平台之间的可移植性。

分页过程中使用的字段

下面让我们来介绍一下用于在 x86 架构中指定分页的字段,这些字段有助于在 Linux 中实现分页功能。分页单元进入作为分段单元输出结果的线性字段,然后进一步将其划分成以下 3 个字段:

●Directory 以 10 MSB 表示(Most Significant Bit,也就是二进制数字中值最大的位的位置 —— MSB 有时称为最左位)。

●Table 以中间的 10 位表示。

●Offset 以 12 LSB 表示。(Least Significant Bit,也就是二进制整数中给定单元值的位的位置,即确定这个数字是奇数还是偶数。LSB 有时称为最右位。这与数字权重最轻的数字类似,它是最右边位置处的数字。)

线性地址到对应物理位置的转换的过程包含两个步骤。第一步使用了一个称为页目录 (Page Directory) 的转换表(从页目录转换成页表),第二步使用了一个称为页表 (Page Table) 的转换表(即页表加偏移量再加页框)。图 6 展示了此过程。

图 6. 分页字段

开始时,首先将页目录的物理地址加载到 cr3 寄存器中。线性地址中的 Directory 字段确定页目录中指向恰当的页表条目。Table 字段中的地址确定包含页的页框物理地址所在页表中的条目。Offset 字段确定了页框中的相对位置。由于 Offset 字段为 12 位,因此每个页中都包含有 4 KB 数据。

下面小结物理地址的计算:

●cr3 Page Directory (10 MSB) = 指向 table_base

●table_base Page Table (10 中间位) = 指向 page_base

●page_base Offset = 物理地址 (获得页框)

由于 Page Directory 字段和 Page Table 段都是 10 位,因此其可寻址上限为 1024*1024 KB,Offset 可寻址的范围最大为 2^12(4096 字节)。因此,页目录的可寻址上限为 1024*1024*4096(等于 2^32 个内存单元,即 4 GB)。因此在 x86 架构上,总可寻址上限是 4 GB。

扩展分页

扩展分页是通过删除页表转换表实现的;此后线性地址的划分即可在页目录 (10 MSB) 和偏移量 (22 LSB) 之间完成了。

22 LSB 构成了页框的 4 MB 边界(2^22)。扩展分页可以与普通的分页模型一起使用,并可用于将大型的连续线性地址映射为对应的物理地址。操作系统中删除页表以提供扩展页表。这可以通过设置 PSE (page size extension) 实现。

36 位的 PSE 扩展了 36 位的物理地址,可以支持 4 MB 页,同时维护一个 4 字节的页目录条目,这样就可以提供一种对超过 4 GB 的物理内存进行寻址的方法,而不需要对操作系统进行太大的修改。这种方法对于按需分页来说具有一些实际的限制。




  上一篇: 探索Linux 操作系统内存模型和管...   下一篇: 探索Linux 操作系统内存模型和管...
li
 §相关评论  
 热点文章

·使用pam_abl防止SSH遭暴力破解
·redhat linux 5上telnet的开启
·linux命令行下如何更换使用的s
·xhost unable to open display
·文件系统出现不一直的原因和基
·linux系统下磁带机的简单操作命
·tar与磁带机操作命令
·linux系统建立终端和登录系统
·如何配置/etc/fstab或autofs让
·如何安装和升级一个RPM软件包?
·如何在新添加的磁盘上创建EXT3
li
 编辑推荐
·使用pam_abl防止SSH遭暴力破解
·redhat linux 5上telnet的开启
·linux命令行下如何更换使用的s
·xhost unable to open display
·文件系统出现不一直的原因和基
·linux系统下磁带机的简单操作命
·tar与磁带机操作命令
·linux系统建立终端和登录系统
·如何配置/etc/fstab或autofs让
·如何安装和升级一个RPM软件包?
·如何在新添加的磁盘上创建EXT3
li
 相关篇章
·探索Linux 操作系统内存模型和管...
·探索Linux 操作系统内存模型和管...
·探索Linux 操作系统内存模型和管...
·探索Linux 操作系统内存模型和管...
·linux操作系统修改共享内存的简单...
·使用U盘安装Linux(Debian/Ubuntu...
·Linux系统在存储技术中的几项应用
·Linux 2.6.x内核是如何改进而来的
·新手搭建网站服务器(Ubuntu LAMP...
·Linux内核2.6简介
·探索Linux 操作系统内存模型和管...
·Linux操作系统的内存管理特性简介
·探索Linux 操作系统内存模型和管...
·初学者该如何熟悉 Linux 内存管理
·剖析RedHat Linux中三个重要内核...
·Linux 环境下的高级隐藏技术
·探索Linux 操作系统内存模型和管...
·从源代码打造一个最小化的Linux系...
·Linux 内核开发者的实用技巧
·Mandrake Linux7.2的中文化
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接