免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1078 | 回复: 0
打印 上一主题 下一主题

Linux内核中分页机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-20 21:21 |只看该作者 |倒序浏览
页式管理用以将线性地址转化成物理地址,并对访问权限进行检查。每个页面都是一个大小为4KB的连续空间,并按4KB对齐。从80386开始,Intel处理器开始支持页式管理,CR0寄存器的PG标志位用来表示是否支持分页。
1、标准分页
i386采用二级分页,其线性地址的结构如下:
Dir
Page
Offset
其中,Dir有10位,表示页表目录项的下标,指向一个页表;Page有10位,表示一个具体页表中的目录项的下标,指向一个物理页面;Offset有12位,表示在物理页面中的偏移量(单位为字节)。
i386中,从线性地址到物理地址的映射过程为:
(1)从CR3寄存器中取得页目录(页目录中包含1024条记录,每个记录4字节,正好为4KB,占用一个页面)的基地址;
(2)以线性地址中的Dir为下标,从目录中取出相应页表的基地址;
(3)以线性地址中的Page为下标,从页表中取出相应的页面描述结构;
(4)将页面描述符中的基地址与线性地址中的Offset偏移量相加,获得实际的物理地址。
2、页描述表项
在i386中,页目录和页表的结构相同,页描述表项的结构如下:
Address
Avail
G
PS
D
A
PCD
PWT
U/S
R/W
P
其中,Address有20位,表示对应页表或页的物理地址的高20位(由于页总是按4KB对其,故低12位恒为0);Avail有3位,供系统程序员使用;G只有1位,在页目录项中表示该页是否为全局页,在页表项中忽略;PS只有1位,在页表目录项中为1表示为4MB的页,为0表示为4KB的页;D只有1位,在页表目录项中未使用,在页表项中表示该页是否已被更改;A只有1位,表示该页是否已被访问过;PCD只有一位,表示该项是否禁止被缓存;PWT只有一位,为1表示使用write-through缓存策略,0表示使用write-back缓存策略;U/S只有一位,为1表示访问该页是否可以在用户态下访问;R/W只有一位,表示该项是否可写;P只有1位,表示该项是否在内存中。
如果要使用4MB的扩展分页,则要求CR4寄存器中的PSE标志被置1。此时,系统仅采用一级分页策略,线性地址前10位为页表项,后22位为偏移量,且页按4MB对齐,页描述表项中Address仅有高10位有效。
3、物理地址扩展(PAE)分页机制
从Pentium Pro开始,Intel处理器的地址总线宽度增加到了36位,共支持访问64GB的内存。同时,Intel提供了PAE和页大小扩展(PSE-36)两种机制用以将32位的线性地址转化成36位的物理地址。其中,后者从Pentium III开始提供,且未在Linux内核中使用。
要启用PAE机制必须将CR4寄存器中的PAE标志置位。PAE启用后,处理器会对分页机制做如下更改:
(1)将64GB的内存空间划分成2^24个不同页面,页表项的体积扩展为64位,物理地址域扩展为24位;
(2)引入新的最高一级页表,称为页目录指针表(PDPT),其中包含4个64位的项;
(3)CR3寄存器中包含27位的PDPT的高位地址(其低5位地址为0);
(4)当将线性地址映射到4KB的页面时,CR3由高位到低位依次为2位PDPT索引,9位页目录索引,9位页表索引,12位页内偏移;当将线性地址映射到4KB的页面时,CR3由高位到低位依次为2位PDPT索引,9位页目录索引,21位页内偏移。
但是,PAE机制并未增大单个进程能够访问的地址空间,仅仅将内核能够访问的地址空间增加到了64GB。
4Linux内核中的分页
Linux内核对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页,即页全局目录、页上层目录、页中层目录和页表。
对于不同的体系结构,Linux采用的四级页表目录的大小有所不同:对于i386而言,仅采用二级页表,即页上层目录和页中层目录长度为0;对于启用PAE的i386,采用了三级页表,即页上层目录长度为0;对于64位体系结构,可以采用三级或四级页表,具体选择由硬件决定。




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27624/showart_218809.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP