| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3373 人关注过本帖
标题:Linux 0.11
只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
下面的内容不是对0.11内核的讨论。是对更一般的linux的讨论

在保护模式中,逻辑地址由一个16位的段选择子(Segment Selector) 和一个32位的偏移量(Offset)构成,

而段寄存器(Segmentation registers)只能存储16位的段选择子(Segment Selector).

所以为了加快从逻辑地址到线性地址的转换,80x86处理器提供了额外的不可编程(nonprogrammable)寄存器,

每个不可编程寄存器(nonprogrammable register)里面都是一个8字节的段描述符(Segment Descriptor),

这8字节的段描述符是由相应段寄存器(segmentation register)中的段选择子(Segment Selector)决定的。

每次当一个段选择子(Segment Selector)被 加载到一个段寄存器(segmentation register)中时,

相应的段描述符(Segment Descriptor)就会从内存中被加载到相应的不可编程(nonprogrammable)CPU寄存器中


之后,对段(Segment)的逻辑地址的转换工作就不需要依靠再去访问主内存中的GDT或是LDT了。

因为段描述符(Segment Descriptor)为8字节,

所以它在GDT或者LDT中的相当地址可以通过用 8 乘以 段选择子(Segment Selector)中的那13位来获得。

比如GDT的地址为0x00020000(GDT的地址存储在gdtr寄存器中)并且段选择子(Segment Selector)的那index 的13位 指定的值为2,

于是相应的段描述符的地址就是 0x00020000 + (2 * 8 ) , 结果是0x00020000。

GDT的第一个入口(first entry)永远都被设为0,这就保证了一个空的段选择子(null Segment Selector)会被认为是无效的,

并且引起 processor exception。 GDT中可以存储的最多 8191个 段描述符(Segment descriptors)因为, 2^13 -1 为 8191


图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 madfrogme 于 2012-9-29 17:27 编辑 ]

The quieter you become, the more you can hear
2012-09-29 16:25
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用有容就大在2012-9-29 12:16:09的发言:

  全局描述表(GDT Global Descriptor Table)是一个数据结构?
是个数组吗?他的下标索引就是segment selector 的前13位吧 我这个理解有没错?

对的,目有错,段描述符位置的计算方法 是 下标(比如2)* 8 再加上 gdtr 中的值,就可以算出来了,

至于具体是什么样的数据结构,我看晚上能不能把它写出来,我也是在一点一点摸索

The quieter you become, the more you can hear
2012-09-29 16:32
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
还用看这个么 有专门的讲描述符表的书啊。。。
2012-09-29 16:35
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用zklhp在2012-9-29 17:35:25的发言:

还用看这个么 有专门的讲描述符表的书啊。。。

我在这里写的都是从四面八方搜集来的我觉得有用的东西,总体说来也算是归纳起来,给自己理清思路用的。

这几天我会主要看地址转换,过几天也就换主题了,就是人们说的好记性不如烂笔头

[ 本帖最后由 madfrogme 于 2012-9-29 19:02 编辑 ]

The quieter you become, the more you can hear
2012-09-29 17:30
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
[ 本帖最后由 madfrogme 于 2012-9-29 18:32 编辑 ]

我这里怎么才17点50呢
2012-09-29 17:47
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用信箱有效在2012-9-29 18:47:37的发言:

[ 本帖最后由 madfrogme 于 2012-9-29 18:32 编辑 ]

我这里怎么才17点50呢

真细心啊,我确实快一个小时

The quieter you become, the more you can hear
2012-09-29 18:00
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用madfrogme在2012-9-29 18:00:30的发言:

 
真细心啊,我确实快一个小时

还在日本岛吧

梅尚程荀
马谭杨奚







                                                       
2012-09-29 18:17
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用madfrogme在2012-9-29 17:30:09的发言:

 
我在这里写的都是从四面八方搜集来的我觉得有用的东西,总体说来也算是归纳起来,给自己理清思路用的。
 
这几天我会主要看地址转换,过几天也就换主题了,就是人们说的好记性不如烂笔头

好记性不如烂笔头!
确实
发个帖子在论坛上很有用啊 像我现在做东西经常去翻自己的老贴 里面有很多东西讨论过 比较重要 但是记不住。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-29 18:18
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
勇敢接分
2012-09-29 18:49
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用有容就大在2012-9-29 19:17:31的发言:


还在日本岛吧

暑假回国呆了40天,这个星期刚回来,苦逼了

The quieter you become, the more you can hear
2012-09-29 20:18
快速回复:Linux 0.11
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026388 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved