| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3365 人关注过本帖
标题:Linux 0.11
取消只看楼主 加入收藏
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
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用zklhp在2012-9-29 21:37:39的发言:


日本は良い場所です

Z版,なかなかやるんじゃないですか、^^
あしたひとり韓国の友達と一緒にあるおばあさんの家を訪ねに行くから、楽しみにしてる~

The quieter you become, the more you can hear
2012-09-29 20:57
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

一点一点向前进,先说23 位上的G,G是0还是1 和Segment Limit有很大关系

Segment Limit 加在一起有20位 (2^20 就是 1MB)

如果G为0,且Segment Limit 为 0xFFFFF, 则段(Segment)的大小为 1MB(这时的单位为字节

如果G为1, 且Segment Limit 为 0xFFFFF, 则段(Segment)的大小为 4GB(因为这时单位为4K
所以2^20 * 4K = 1MB * 1024 * 4 = 4GB

// This structure contains the value of one GDT entry.
// We use the attribute 'packed' to tell GCC not to change
// any of the alignment in the structure.
struct gdt_entry_struct
{
   u16int limit_low;           // The lower 16 bits of the limit.
   u16int base_low;            // The lower 16 bits of the base.
   u8int  base_middle;         // The next 8 bits of the base.
   u8int  access;              // Access flags, determine what ring this segment can be used in.
   u8int  granularity;
   u8int  base_high;           // The last 8 bits of the base.
} __attribute__((packed));
typedef struct gdt_entry_struct gdt_entry_t;


[ 本帖最后由 madfrogme 于 2012-10-10 17:22 编辑 ]

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


gf ? bf?

我勒个去,你表太着急,慢慢来,我说明天和一个韩国人去一个老奶奶家拜访了!
晕了

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


问的好。。

我觉得有历史的原因 286的时候实现了保护模式 但386的时候才实现了32位的保护模式罢 好像是这样具体我也忘了。。

既然是历史原因,看来那就把它们看成是连续的,也不妨碍理解了

The quieter you become, the more you can hear
2012-09-29 21:17
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
这里说的应该是80386吧 ,顺便问一下谁有没有 M.J.Bach 的《UNIX操作系统设计》这本书。

虽然很老,但想读一下

好吧,我在新浪的iask上找到了,不过质量堪忧


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

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

没一直看完所有帖子。不过讨论内存模型的时候,有时得分清哪些是 linux 对内存模型的抽象。哪些是底层硬件对系统编程的要求。

我的概念是,GDT 之类的这些寻址机制,理解成 x86 架构的知识比较好。它不属于 linux 的范畴。在其它架构下运行的 Linux 可能完全不是这个样子的。书一般会就 x86 这个架构讲 Linux,讲的寻址都是硬件上的东西。换句话说,windows 要想用 x86 的处理器也得这么写,和 linux 没什么关系。
由于我学得也是 x86 架构下的 Linux,所以我也很难界定 Linux 和硬件之间的界线。但 linux 为了能在各种硬件平台上运行,这两者之间的界线应该是特别清晰的。linux 内核对内存有个很明确的模型抽象,然后底层就是在所有硬件上实现了内核要求的这个内存模型。Linux 的模块化做得很好,内存模块和其它模块的耦合性有限,所以这块的知识一般也非常容易拎出来单讲。一般就 x86 这个架构讲的书,往往也有模糊这个界线的倾向,把内核模型和硬件模型讲的水乳交融。不过我感觉应该不是这样的。

版主所言极是, 0.11内核好像无法在80286上运行,至少要是80386,不知道GDT这个东西,随着intel CPU ,比如 386 ,486, 奔腾,这样升级,是不是GDT也会有一些变化

The quieter you become, the more you can hear
2012-10-01 19:55
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用信箱有效在2012-10-1 21:05:03的发言:

胖丁所言好象很有道理,我前天看了这个帖子,也有这个感觉。

前段时间看深入解析windows操作系统,在内存管理这块也基本上是这样实现的。
这部分感觉是linux比win先进。 win64上才和linux一样。

欢迎提供具体细节

The quieter you become, the more you can hear
2012-10-01 20:30
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
如果不开启分页,下面一图让人豁然开朗,物理地址是从segment descriptor中可以定位的
图片附件: 游客没有浏览图片的权限,请 登录注册

The quieter you become, the more you can hear
2012-10-01 23:32
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 43楼 pangding
嗯,我也来看看从实模式转换到保护的的工作流程

The quieter you become, the more you can hear
2012-10-02 22:24
快速回复:Linux 0.11
数据加载中...
 
   



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

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