免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 126091 | 回复: 218

也谈谈这四年来对内核的研究 [复制链接]

论坛徽章:
0
发表于 2011-06-30 15:29 |显示全部楼层
本人刚从事嵌入式领域的开发,也是刚从校园步入社会,但是对于内核并不陌生,接触内核已经4年多了,对于研究内核来讲,四年的时间其实不算长,也不算短,可是自己对于内核的理解也就局限于一小部分,我相信也很少有人对整个内核的细节都非常熟悉,刚开始接触内核时候觉得很神秘,就像男人第一次接触女人一样,可是时间长了,总会有厌倦的时候,我接触内存管理的时间最长,也是本人自认为研究的比较深的一个点了,因为曾经参与过一个项目,给一个微内核的操作系统设计了并实现了虚拟内存管理,当时为了这个项目把Linux虚拟内存管理的源代码和相关书籍至少看了7-8遍,其实从启动部分开始看起的,惭愧的是现在居然忘了一大半了!当然,这个项目也花了我们不少时间,5个人,2年左右!说实在话,这两年的时间痛苦的滋味只有自己知道,因为,我们发现内存管理是Linux系统最复杂的部分,她和其他的模块的关系非常紧密,到目前为止,还有许多流程我不清楚,在什么情况下会触发。最痛苦的是:遇到问题的时候没有任何人给你任何的答复,尤其是一些流程性的细节,这些流程在什么情况下发生,为什么要考设计这样的流程?因为,这不仅需要你了解程序的设计基本思想,也要你了解硬件的体系结构,比如slab的设计,就是典型的代表!
这两年来:我们不光研究了,Linux内存管理的架构,而且也去研究了其他一些实验性的操作系统架构,典型的的是CMU的mac的虚拟内存管理系统的架构,这样对于我们后来设计自己内存管理的架构起了很大作用,现在回首看看,发现自己对于内存管理的代码基本忘了差不多了,但是架构还是很清晰,依然清晰的记得linux内存管理的几大模块之间的关联!
对于刚准备做内核的兄弟们,结合自身这几年的经历,提出几点经验性的参考:
第一:首先,做Linux内核不能光局限于软件本身,要结合硬件去思考一些问题,比如:流水线,什么是指令冒险,它解决了什么问题?每种CPU在这方面的处理都不一样
第二:要经常去动手验证自己的想法,刚开始,我们花了一年的时间做了理论方面的研究,主要是从代码的角度,架构,模块的设计方面,突然发现,很容易忘记自己看过的东西,但是通过自己动手验证的东西,不太容易忘记
第三:一定要记得静下心来,尤其是遇到复杂的流程处理的时候:因为,对于内核来讲,有可能一个流程的处理,代码量可能达到数千行,甚至万行,而且代码写的都非常精简,非常优化,所以读起来会觉得非常困难
第四:一定要有女朋友!这个大家都懂的,哈哈!
今天在论坛上,看到一个兄弟提的问题,说10个基础而深刻的问题来了解内核,其实我对于这样的兄弟,我身同感受,因为,我当时也是这么想的,可是当你对内核了解越来越多的时候,你会有觉得内核越来越复杂,越来越难懂,和你刚接触内核不同的是,你也许不会那么陌生!这样说的目的并不是夸大内核就是洪水猛兽不可克服,我想说的是,这其实就是我们做研究,搞技术的人所经历的过程,兄弟,我尽量从10个问题的角度回答你的问题,
10个问题来概括内核的基础,那是不可能的,但是了解内核的设计思想,我觉得应该从下面几个点去深刻了解:
1.        硬件体系结构
2.        程序设计的基本思想
3.        程序优化的基本思想
4.        系统的架构思想
个人觉得上面四点在很多情况下都联系在一起的
其实还有很多,我暂时想这么多,还希望大家继续补充,在此,我就全当抛砖引玉了!
那好了,废话少说,我尽量从这几个方面,给出一些所谓的深刻的问题:

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
发表于 2011-06-30 15:30 |显示全部楼层
本帖最后由 chenrvmldd 于 2011-06-30 15:32 编辑

第一题:
有关slab方面的:
在大学的操作系统课程上:在提到内存管理的时候:会强调两点:解决好外部碎片和内部碎片!
1.        slab是为了解决内部碎片提出的,还是外部碎片?
2.        Slab算法的核心思想是什么?请简述
3.        在什么情况下,会用到slab,请你举几个具体的例子!
4.        Slab中算法中提到了着色,请问着色问题,主要是解决什么的?
5.        你觉得slab算法有什么缺点,如果让你来设计,你怎么去改进它的缺点?
第一个小问,是考察slab提出的背景是什么,基于一个什么样的前提提出的,
第二个小问,是考察对slab算法思想,整个算法架构的理解
第三个小问,是考察slab在系统中实际中的应用,提供给其他模块的接口
第四个小问,考察了slab算法中的一个技术细节,这个细节背后的知识
第五个小问,这个难度稍微有点大
关于答案,没有具体的,希望大家积极响应,到时候我会按照我的理解,将我自己理解的东西贴出,今天先搞一个问题,明天把第二个问题贴出来!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-06-30 15:43 |显示全部楼层
回复 1# chenrvmldd
对后来人有很好的指导意义啊!!!

论坛徽章:
0
发表于 2011-06-30 15:51 |显示全部楼层
被楼主问住了,努力学习ing

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
发表于 2011-06-30 16:07 |显示全部楼层
唔,学习了!楼主一言,醍醐灌顶啊

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-06-30 16:28 |显示全部楼层
回复 2# chenrvmldd
没有人回答,我就先抛砖了
1.        slab是为了解决内部碎片提出的,还是外部碎片?
        伙伴系统算法是为了解决外碎片问题,slab是为了解决内碎片的问题。
2.        Slab算法的核心思想是什么?请简述
        slab的核心思想是以对象的观点来管理内存
3.        在什么情况下,会用到slab,请你举几个具体的例子!
         进程控制块task_struct_cachep、数据包skbbuff_head_cache等都是SLAB高速缓存。对于频繁申请和释放的小内存区,内核倾向于使用SLAB。
4.        Slab中算法中提到了着色,请问着色问题,主要是解决什么的?
         SLAB中的着色是为了解决硬件高速缓存命中的问题。
5.        你觉得slab算法有什么缺点,如果让你来设计,你怎么去改进它的缺点?
          这个没考虑过。

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-06-30 16:32 |显示全部楼层
回复 1# chenrvmldd

感谢 LZ 的分享。很有意义的话题。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-06-30 16:33 |显示全部楼层
回复 6# 瀚海书香

瀚海书香 兄对 MM 很有研究啊

论坛徽章:
0
发表于 2011-06-30 16:35 |显示全部楼层
好帖,进来学习学习,

论坛徽章:
0
发表于 2011-06-30 16:45 |显示全部楼层
回复 6# 瀚海书香


第四个回答,太泛了,能不能详细一点,再深入一点,结合cache的结构来解答了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP