首页 > 其他 > 详细

保护模式及其编程——分页机制

时间:2014-02-20 11:51:02      阅读:284      评论:0      收藏:0      [点我收藏+]
摘要:分页机制是实现虚拟存储的关键,但是它的实现比较简单。传统的页都是4K大小,当然,在最近的内核中,分页机制因为一些原因而比较繁琐。在这里,我们仅仅浅谈最简单的分页机制,在其他的文章中,我们将讲解现代新linux内核中的分页机制。

我们通过设置cr0PG位来开启分页机制。页大小是4K,并且是4K对齐的。线性地址到物理地址的转换中,可能某些线性地址是无效的。如果某个线性地址对应的页不存在,那么访问的时候将产生一个异常。分页和分段最大的不同就是分页是固定大小的。为了减少地址转化需要的总线周期数量,我们使用TLB缓存最近使用的页表。

1.页表结构

1.1两级页表结构

页表中,每项的大小是32b,其中20b用来存放页面的物理地址,12b用于存放属性信息。 页表含有1M个表项,每项4B.第一级表是页目录,存放在14k页面中,含有1K个表项。第二级是页表,也是1K个表项。二级页表的查找过程如下图 bubuko.com,布布扣

1.2.不存在的页表

页目录表的每个表项都有一个present属性,这个属性可以节省存放页表所需要的空间。另外,这个属性还可以用于在虚拟内存中存放二级页表。这意味着,任何时候只有部分二级页表在物理内存中,其余可以保存在磁盘上。

2.页表项格式

页表项格式如下图: bubuko.com,布布扣 其中属性位包含如下信息: P——b0,存在位标志 R/W——b1,读写位标志 U/S——b2,用户/超级用户标志 A——b5,已经访问标志 D——b6,脏位标志 AVL——保留字段

保护模式及其编程——分页机制

原文:http://blog.csdn.net/trochiluses/article/details/19504389

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!