读核日记(六)

蟹老板yea

蟹老板yea

2016-01-29 19:46

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

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

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

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

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

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

1.多级页表结构

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

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

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

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

2,页面项和页目录项

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

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

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

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是否为他们提供了统一的接口。我还不太清楚。可以参见其他机型的源码

 
展开更多 50%)
分享

猜你喜欢

读核日记(六)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(六)

读核日记(三)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(三)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

读核日记(一)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(一)

读核日记(四)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(四)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

读核日记(五)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(五)

读核日记(二)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
读核日记(二)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

读核日记(七) --linux的内存管理机制(1)

读核日记(七) --linux的内存管理机制(1)

Photoshop教程:抠出晶莹剔透的水花

Photoshop教程:抠出晶莹剔透的水花
下拉加载更多内容 ↓