读核日记(六)

2016-01-29 19:46 1 1 收藏

读核日记(六),读核日记(六)

【 tulaoshi.com - Linux 】

 

我们讲完了分段机制。接下来我们需要分析保护模式的第二种存储管理机制:分页方式。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

在前面我们提到过转台和控制寄存器组。他们包括EFLAGS、ELP。和4 个32 位的控制寄存器CRO CR1CR2 CER3。其中CRO中有一位PE 用于标志是使用保护模式还是实模式的。有一位PG定义是否使用分页方式(1或0)。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

当PG=1 时,系统使用分页机制。80386使用大小位4K的页,并且每一个页的边界队奇。即每一个页的起始位置都可以被4K整除。这样4G的字节就被分成了1M 页。分页机制把线性页映射成物理页。真正的起到了转换作用

下面我们看一下LINUXE得分页结构:

1.多级页表结构

在LINUX中含有1M个页。其中每个页表占4个字节。则需要占用4M的连续内存因此LINUX引入了2 级页表结构。在线性地址中的后10 位(22-32)定义了二级页表。

二级页表有1K 个字节,页正好存在]一个4K 的页中。并且通过前20位进行索引,从而实现实际的物理地址。

这个地方我说不太清楚。大致可以这样理解。

如:有N 个链表。每一个便是一页。可最后一页的内容是指向另一个二级炼表的指针(或者是索引项)

2,页面项和页目录项

对于每一个页。都会存在一个页面项。用来表示该页的使用状况,是否空闲。是否在内存中等等。而这些相会存储成一个连标。以减少使用表时的查询时间等。

而每一个页表,会存在1024个页面项,这才是真正的“页“。

3,线性地址到物理地址的切换

CR 包含页目录的起始地址,用32 位地址中的31-22位的内容作页目录的页目录项的索引,于CR3种的页目录的起始地址相加。得到相应页表的地址 从指定的地址中取出32 位页目录项。它的提12 位是0用这32 位地址中21-12位作为页表中的页面的索引。将它乘以4和页表的起始地址相加,得到32位地址 奖11-0位作为相对一页面地址的偏移量,于32位页面地址相加。形成32 位的物理地址。

 

4,页面CACHE

当然,系统频繁的访问二级页表,会造成很大的时间浪费,因此引入了页表CACHE,用来保存最近使用的页面,或者频繁使用的页面,关于CACHE 的原理这里不再详细讲解,有兴趣的朋友可以查一些,计算机专业的基础教材

至此,LINUX使用的836保护模式,基本上讲解完毕。至于控制转移和任务切换。和一般的汇编编程差不多少,本人汇编水平太低。不在献丑

总的说来,多任务的切换,以及保护模式的应用。虚拟存储系统的实现,是建立在硬件的技术支持之上的。

个人认为,LINUX的存储管理。在不同的机器上是完全不同的,至于linux是否为他们提供了统一的接口。我还不太清楚。可以参见其他机型的源码

 

来源:http://www.tulaoshi.com/n/20160129/1510059.html

延伸阅读
标签: 宝宝
成长日记宝宝发育:第2周 成长日记宝宝发育第2周 宝宝的眼里只有你 现在你的宝宝看东西还是模模糊糊的。小宝宝天生是个近视眼,只能看清眼前20~25厘米左右的东西,所以只有你紧紧抱着他时,他才能看清你的脸。 如果宝宝一开始没看你的眼睛,也不必担心,刚出生的宝宝可能会更注意你的眉毛、刘海或你正在动的嘴巴。在月子...
胶囊日记怎么删除日记?   胶囊日记怎么删除日记? 胶囊日记可以删除吗?胶囊的规则是只有当天写的日记可以修改和删除。过去的都是历史,不能被改变。 只有当天可以修改删除,过了晚上12:00就不能再删除了。 等到日记本过期的时候可以查看,过期了的也不能修改删除。
标签: 健康养生
樱桃是营养价值很高的水果,不仅可以生吃,还可以制作果酱来使用。可是大家总是在去核这里犯了难,那么怎么才能快速去核呢?我马上就把方法分享给大家!   怎样轻松去除樱桃核 1.首先就是把樱桃统统洗干净,然后把樱桃把给摘掉。 2.拿一根筷子洗干净。 ...
标签: 生活常识
痔核怎么消除 痔核怎么消除 第一,患上了痔疮以后,要注意自己每天的饮食,特别是要多吃一些排毒和促进肠胃蠕动的食物,这样才能够让痔疮的症状慢慢消失。 第二,不能因为我们工作忙碌,从而忽略了对痔疮的护理,要保持清洁,卫生。 第三,要多摄取水分及纤维,便秘是造成痔疮的最大诱因,因此,为防治便秘,须多喝水及多吃富含纤...
奶酪怎么设置已读消息为未读          不小心查看了好友的消息?但是不想好友知道你查看了TA的消息?没关系,小伙伴们可以把已读消息设置为未读,现在就跟小编一起操作,看奶酪怎么设置已读消息唯爱未读。 打开奶酪,点击长按要设置为未读的消息,然后点击即可。

经验教程

427

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部