标题: 内核日记
gqhua
小试牛刀
Rank: 2
注册用户



UID 42295
精华 1
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2003-4-17
来自 华南理工大学
状态 离线
发表于 2003-4-25 12:12  资料  个人空间  短消息  加为好友 
源代码是在变,但内核的设计思想不变,重要的算法不会变(还是数组和链表)
实际上我感觉只要弄懂设计思想和重要的数据结构,至于那些函数方法,自已都能想出应该怎样去写,只不过可能考虑的没有原代码那么周全而已,之所以要读函数,也应该是看看别人写得和自己想得大致上一样不一样。所以我感觉:
设计思想第一,读函数第二,否则只能永远跟着老外的屁股后头走。





宝剑锋从磨砺出,梅花香自苦寒来 积硅步至千里 , 集小流成江河
顶部
不容错过的IBM 集群技术资源汇总
blueflame
实习记者
Rank: 5Rank: 5
荣誉版主



UID 24711
精华 2
积分 0(积分有什么用?)
帖子 744
阅读权限 10
注册 2002-9-18
来自 BJ
状态 离线
发表于 2003-4-25 15:30  资料  个人空间  短消息  加为好友 
重要的算法也在变,比如vma搜索算法变成红黑树,还有调度算法变化也比较大了.等等等等,其实就是学好数据结构和算法我看就形了[/Color]





依然记得从你口中说出再见坚决如铁,昏暗中有种烈日灼身的错觉; 依然记得从你眼中滑落的泪伤心欲绝,混乱中有种热泪烧伤的错觉....
顶部
不容错过的IBM 集群技术资源汇总
unix1998
自由撰稿人
Rank: 4
荣誉版主



UID 5331
精华 4
积分 0(积分有什么用?)
帖子 2177
阅读权限 10
注册 2001-10-24
状态 离线
发表于 2003-4-25 16:26  资料  个人空间  短消息  加为好友 
别暂停啊

to gqhua:

这里很需要你的日记。网上关于内核分析的文章有的是,不过那么长的文章我是看不进去,我喜欢短小精悍的,特别是个人的经验。估计别人和我一样吧。你的日记不仅仅是知识上的帮助,更是带动大家一起学习的榜样:)
现在blueflame不是在和你讨论吗,相信慢慢会有其他人参与进来的。


顺便讨论一下我的经验,我感觉那么厚的书(情景分析)必须要快速看完,不可能一次读懂,多读几遍才能懂。理想的情况是对内核有了整体理解,有些细节不会不要紧,在网上讨论,明白的给个解释,这样能达到事半功倍的效果。
所以你说书想往后翻的想法应该没什么错误吧。

顶部
不容错过的IBM 集群技术资源汇总
unix1998
自由撰稿人
Rank: 4
荣誉版主



UID 5331
精华 4
积分 0(积分有什么用?)
帖子 2177
阅读权限 10
注册 2001-10-24
状态 离线
发表于 2003-4-25 16:30  资料  个人空间  短消息  加为好友 


QUOTE:
最初由 blueflame 发布
[B]重要的算法也在变,比如vma搜索算法变成红黑树,还有调度算法变化也比较大了.等等等等,其实就是学好数据结构和算法我看就形了[/Color] [/B]

blueflame兄忙吗?我感觉你对代码的理解有一定深度,有意当版主吗?我向otto推荐。
我太忙了。

顶部
不容错过的IBM 集群技术资源汇总
gqhua
小试牛刀
Rank: 2
注册用户



UID 42295
精华 1
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2003-4-17
来自 华南理工大学
状态 离线
发表于 2003-4-25 20:53  资料  个人空间  短消息  加为好友 
2003.04.25读核日记--感谢大家的关心

谢谢大家的关心.我会继续读下去,把感慨发下去的。其实我只是想休息一两天,修整修整,看看电影,不亦乐乎.

通过这些天读内核管理,我感觉无论是内存的分配还是缓冲的管理,用的数据结构不是链表就是数组。而且为了更加有效的管理一群对象,采用的方式无外乎是
:1。通过增加索引级数。如slab分配器:就通过3级来管理,最高一级是kmem_cache_s,接下来是kmem_slab_t,再下来是kmem_bufctl_s,最后是对象本身.(试想它为什么会用3级,其实本来可以用一级的,即用hash或一条链串起来便可它最终就是要取个对象,中间级对外是隐藏的)只要能想通了这个,以后一看到要讲数据结构,我就首先看看它是用几级索引。然后我就能推断出它的基本组织结构,即不同级别之间如何关联。
2。在同一级别的组织,采用的形式也无外乎:要么是用链表串起来,要么是数组,要么用hash,要么用树(如AVL)。前两种是基本形式,后两种只不过为了增加速度。
注意到数组和链表的不同效果没有?比如串数组是用偏移作指针,而链表却只能用地址作指针啦。
3。对分配来的空间进行二次分割时,也有两种基本策略,一种是管理空闲块法,即把空间离散块串起来,典型的就是buddy,slab,别一种是把分配出去的串起来,典型的就是vma_area_struct,vma_struct;

再说vfs吧,说白了,系统根本目的就是为了实现按名存取(为了提高效率那叫改进,linux为了提高效率都改进了好几年啦,所以不要指望马上就学会人家的效率,所以我感觉一个软件能实现它是第一步,其次才是改进它,cpu本身不也改进了好多年吗?还在改进中。看看linux以前的版本,你就知道linus也不是什么神仙,他的以前的版本的算法有许多也是很烂的,只不过后来才改进的),一句话,本来是一级管理的本质问题.但若用一级索引,那文件不多如牛毛吗,所以才有了,按目录,按逻辑盘,按进程等等的多级层次。所以想通了它。那整个数据结构也就历历在目了。


请大家补充指正!
再次感谢大家对我的关心。





宝剑锋从磨砺出,梅花香自苦寒来 积硅步至千里 , 集小流成江河
顶部
不容错过的IBM 集群技术资源汇总
blueflame
实习记者
Rank: 5Rank: 5
荣誉版主



UID 24711
精华 2
积分 0(积分有什么用?)
帖子 744
阅读权限 10
注册 2002-9-18
来自 BJ
状态 离线
发表于 2003-4-25 22:17  资料  个人空间  短消息  加为好友 
"我感觉一个软件能实现它是第一步,其次才是改进它"这句话真是太有同感啦。[/Color]





依然记得从你口中说出再见坚决如铁,昏暗中有种烈日灼身的错觉; 依然记得从你眼中滑落的泪伤心欲绝,混乱中有种热泪烧伤的错觉....
顶部
不容错过的IBM 集群技术资源汇总
gqhua
小试牛刀
Rank: 2
注册用户



UID 42295
精华 1
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2003-4-17
来自 华南理工大学
状态 离线
发表于 2003-4-26 22:41  资料  个人空间  短消息  加为好友 
2003.04.24读核日记--真的遇上了拦路虎

2003.04.24读核日记--真的遇上了拦路虎

从今天开始,我开始学习VFS,结果发现:VFS只不过是文件系统的一张漂亮的面孔。与它相关的IO设备管理,磁盘高速缓存,内存交换,具体文件系统EXT2,及文件的映射与读写才是真正让人望而生畏的。它们所用的数据结构之多,数据结构联系千丝万缕,真让人不知所措。说真的,把人读睡着了好几次。

良好的性能将意味着复杂度的提高。高水平将意味着必须付出更大的代价。

贴个笑话给大家解解闷(我知道,这里本不合适贴笑话,就算我日记的一部分吧,请大家抱函)
三人同行(搞笑)  
一个中国人和一个美国人一个俄罗斯,三人在沙漠中相遇一块同行。走呀!走着忽然间遇到一个神仙,神仙告诉他们“我是幸运之神,你们遇到我是你们的福,你们每人有三个愿望我能给你们实现……”话没有说完美国人就开口啦!!!我先说……。神仙说到“好吧!!你有什么愿望你就说吧!”美国人就说啦“我在美国我穷呀!!我想要美圆”好神仙就给了他很多的美圆。神仙又问他了你的第二个愿望呢??美国说到“我还要很多很多的美圆”神仙又给他很多很多的美圆,我的第三个愿望是:给我一个很大的美丽的地方我去享受啦!!
美国人走啦!!!

中国人还没有来的急开口俄罗斯人说到“我很丑请你给我美女这是我第一个愿望”神仙给了他一位美女,俄罗斯人看看美女只流口水说到“我的第二个愿望是请你在给我很多的美女”神仙又给啦他很多的美女问到你第三个愿望呢??俄罗斯人想啦想说到“请你也给我一个人间天堂我带着美女享受去”神仙答应啦他。

俄罗斯人走啦!!

神仙看拉看中国人问到“你有什么愿望呀”

中国人想拉想说“给我一瓶二锅头”

神仙就给拉一瓶二锅头,中国人就喝开了

神仙又问他你的第二个愿望呢???在给我一瓶二锅头”神仙又给啦他一瓶二锅头,神仙心想中国人就是傻

中国人拿着二锅头喝啦个满面红光。

神仙问他了你的第三个愿望呢???

中国人想啦想说到“叫……叫他们俩回来”

神仙就叫美国人和俄罗斯人回来啦!!神仙就走啦!!!美国人和俄罗斯人心想叫中国人给操啦!!!

他们三人继续往前走。

走着走着又遇到一位神仙,神仙说“到我也是幸运之神,你们每个人也有两个愿望,你美国人和俄罗斯人们谁先说”。美国人和俄罗斯人心想这回叫中国人先说我们看他还这么操我们哈哈……

那好吧!!神仙说到“中国人你先说吧你的第一愿望是什么??”中国人说到“给我一瓶二锅头”

好的神仙给啦他一瓶二锅头,神仙又问到“那你的第二个愿望呢”

中国人喝拉一气二锅头对神仙说到:你可以走啦!……





宝剑锋从磨砺出,梅花香自苦寒来 积硅步至千里 , 集小流成江河
顶部
不容错过的IBM 集群技术资源汇总
gqhua
小试牛刀
Rank: 2
注册用户



UID 42295
精华 1
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2003-4-17
来自 华南理工大学
状态 离线
发表于 2003-4-28 22:14  资料  个人空间  短消息  加为好友 
2003.04.28读核日记--高速缓存的数据结构的理解

今天读了<<深入理解linux内核>>第14章磁盘高速缓存,对它的数据结构基本理解了。这使我对VFS这一块的阅读有了很大的信心。
现将理解表述如下(本来想画一张图,但觉得太费事)
1。高速缓存主要有3种:目录高速缓存,缓冲区高速缓存和页高速缓存。
其实我觉得书中称“缓冲区“及缓冲首部(buffer_head)这个词不好。我觉得应该换个名字更好:比如叫:块对象(block object)和块描述符(block descripter)。
2.缓冲区高速缓存的整个数据结构
1)创建一块”缓冲区”和“缓冲区首部”,两个来源不同
缓冲区来源于BUDDY,即BUDDY给分一个页框,它再把这个页框分成几个等大的缓冲区。而缓冲区首部来源于SLAB分配器。
每一个缓冲区都要有一个缓冲区首部来描述它。一个页框中的这几个缓冲区你可称它为兄弟,它们用一个链串起来的。
2)创建完后,它们是空闲的,就必须把它管理起来,用作”周转资金“,如何管理呢?
因为不同的设备可能定义不同的块大小,所以缓冲区的块大小是不统一的。方法是把相同大小的缓冲区的缓冲区描述符(即缓冲区首部,但我还是喜欢叫它缓冲区描述符)串成一条链,这样因为块大小的可能情况是:512,1024,2048,4096,8192,16384,32768,所以共生成7条链。但一个块大小不能超过一页,所以PC机只用前4条链。7条链的链头用一个数组free_list统一存放。好啦,空闲块已经管理起来了,以后用,就可先从这里取,若不够,再新创建。
3)把分配出去的管理起来:因为这些缓冲区可能是干净的,脏的,或正要写入磁盘。就把它们分成3条链串起来。3个链头放在一个数组lru_list中。好啦,分配出去的也管理起来了。但为了快速查找,再给它加个hash表,表为:hash_table
用hash就必须提供键,缓冲区的检索就是用设备号和块号来作键的。
至于那些函数,只要脑里有这个数据结构框架,则一看就懂。

3。页高速缓存的数据结构很相对简单。不说了,但要注意的是他是
用索引节点和文件偏移作hash键的.还有要注意的是缓冲页最终要分割成几个缓冲区,并给这些块缓冲区分配缓冲区描述符,利用缓冲区的写回和读取函数来完成磁盘的操作。(因为磁盘只认块,不认页),书中有几幅很好的图。能促进人理解这些结构。

欢迎指正。





宝剑锋从磨砺出,梅花香自苦寒来 积硅步至千里 , 集小流成江河
顶部
不容错过的IBM 集群技术资源汇总
blueflame
实习记者
Rank: 5Rank: 5
荣誉版主



UID 24711
精华 2
积分 0(积分有什么用?)
帖子 744
阅读权限 10
注册 2002-9-18
来自 BJ
状态 离线
发表于 2003-4-29 15:28  资料  个人空间  短消息  加为好友 
我总觉得Linux对内存资源的控制不够好,比如一般还有多少freememory的时候才启用交换.我记不清楚了,反正这个限制是很低的.512M总内存,它要到几M的时候可能才会回收一些暂时不用的东西.还有就是对进程的内存没有什么有效的限制.我机器上的tripwire不知道怎么回事情,也许是没配置好,每次总是要占400多M内存.恐怖[/Color]





依然记得从你口中说出再见坚决如铁,昏暗中有种烈日灼身的错觉; 依然记得从你眼中滑落的泪伤心欲绝,混乱中有种热泪烧伤的错觉....
顶部
gqhua
小试牛刀
Rank: 2
注册用户



UID 42295
精华 1
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2003-4-17
来自 华南理工大学
状态 离线
发表于 2003-4-29 18:32  资料  个人空间  短消息  加为好友 
我也有同感,有时,我什么也没做,硬盘就狂转不停,我想肯定是在交换,可又好象没必要,我没做什么呀。

光看内核讲解的书,我感到有点累了,没有实践,那么多数据结构总记不住。所以我有点想换换方式,想学一段系统和模块编程,从外部观察linux内核的行为。同时,也想把以前学过的内核原理好好消化一下,再前进,我感到与设备有关的这块不好弄,前面的BH又忘的差不多了,所以看起来有点吃力。

哎,学内核真是苦呀。简直就是对人的毅立的考验。





宝剑锋从磨砺出,梅花香自苦寒来 积硅步至千里 , 集小流成江河
顶部
 



当前时区 GMT+8, 现在时间是 2008-5-17 00:54

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.048568 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP