免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[实践] 深度探索Linux:系统构建和原理解析大家谈!(获奖名单已公布-2013-11-14) [复制链接]

论坛徽章:
0
31 [报告]
发表于 2013-10-18 15:55 |只看该作者
本帖最后由 lll1985911 于 2013-10-18 15:57 编辑

1、说说您的Linux内核源码的学习经验和感受
作为一个运维人员,也曾经雄心勃勃,想深入源码学习,别人推荐说先看《APUE》,但看了一段时间,感到很吃力就放弃了。


2、对于普通的Linux程序员和运维人员,是否有必要学习Linux系统构成及源码等基础知识
对linux系统构成有了解是很有必要的,尤其是运维人员。在日常工作中,如果对linux系统构成有一定的认识,那么会更得心应手。如果仅仅是停留在对各种系统命令熟悉的程度,那么也仅仅算是合格的操作员。运维人员更强调的是规范化的东西,但是一旦基础的东西发生改变,那么规范化的东西就会动摇。这就好像一座大厦,对大厦本身的管理再怎么好,如果对地基一无所知,那么一旦地基发生变化,那么上层所指定的一切规范都会瞬间化为泡影。
另一方面,对源码我觉得普通运维人员就不用钻研的太深了,因为这些东西是加分项,毕竟运维人员是首先要保证系统的稳定,闲暇时间可以研究下。

论坛徽章:
0
32 [报告]
发表于 2013-10-18 20:27 |只看该作者
搞内核快两年了,现在回想起当初刚开始看内核源码的时候,仍心有余悸!!!!
1、说说您的Linux内核源码的学习经验和感受
感受:刚开始是一片迷茫啊,不知道从哪下手,对操作系统原理也不清楚,对C语言也不是很熟练,硬着头皮看,当时的感觉,用现在的流行语就是不明觉厉(虽然不知道说的是什么,感觉很厉害的样子),后来效率实在太低了,就去看有关OS和内核分析的书籍,见过一段时间的的学习,慢慢由感觉了,再后来随着积累越来越多,看起代码来轻松多了。后来自己由于工作的需要修改了TCP实现的有关代码,凤凰涅槃啊,有了这次实际开发经验之后,再去看内核代码,真是一种享受啊。
经验:学习内核源码不能仅仅看源码,要有相关的基础知识,而且要善于从全局把握代码的架构,然后再去分析主要流程,主要函数,进而才会深入内核源码,真正学到东西。记住:心急吃不了热豆腐。
2、对于普通的Linux程序员和运维人员,是否有必要学习Linux系统构成及源码等基础知识
说实话:个人感觉是有点必要的,但没必要太深入(估计大多数人也没有那个水平,这话绝对不是小看人)。你如果是linux程序员,对内核源码熟悉当然有好处,但是如果是开发应用的,即使不是很清楚可能问题不是很大,但感觉效率和开发的质量肯定不如对内核熟悉的人。
运维人员大体知道简单的实现就可以了,内核的很多机制,是很富有哲理的,能从大局认识一下就可以了。内核源码尽力而为吧。
总之:内核源码庞大,繁杂,需要的基础知识多,有能力的尽量学习,不管是从事linux哪个方向的工作。学习过程中要寻找突破,脚踏实地。

**************************************************老大,求书啊,我最近正好在做有关OS内存管理方面的东东,需要你那本书啊啊啊啊啊。

论坛徽章:
1
未羊
日期:2013-10-18 11:47:51
33 [报告]
发表于 2013-10-19 10:02 |只看该作者
程序员王柏生 发表于 2013-10-15 23:49
回复 1# send_linux

感谢 CU 给这样一个机会和大家交流。我谈不上什么老师了,只是一位普通的程序员。而 ...



我是一名DBA,但DB和OS的耦合度非常高,对OS的理解和掌握需要有一定的深度,以前一直在寻找这样子一本书,昨天下单,正版,希望不会让我失望:wink:

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
34 [报告]
发表于 2013-10-19 13:32 |只看该作者
说说您的Linux内核源码的学习经验和感受
      1, 动手编译内核 2, 精读《Linux内核设计与实现》此外就凭自己兴趣选择吧。常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 我想下面几个基础可能还是需要的,尽管不一定必需:1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,基本概念要知道啊,进程是个什么东西,CPU和系统总线、内存的关系(很粗略即可),等等。2, 关于C语言。不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译器,就可以了。当然,如果已经精通C语言显然是大占便宜的。3, 关于CPU的知识。这块儿可以在学习内核过程中补,但这样的话你就需要看讲解很详细的书,比方《情景分析》。你是否熟悉Intel 80386 CPU?尝试着回答这几个问题来判断一下:1)说出80386的中断门和陷阱门的区别;2)说出保护模式与实模式的区别;3)多处理器机器上,普通的读- 改-写回一块内存这样的动作,为什么需要特殊的手段来保护。等等。讲解基于其它CPU的Linux内核的书,目前好象只有一本《IA64Linux内核: 设计与实现》──也还是Intel的,其它都是讲解基于IA32的。


开发人员对系统了解的越多,越能开发出高效的程序,同时对排查故障也有很大的帮助

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
35 [报告]
发表于 2013-10-19 17:19 |只看该作者
在本人的工作经历当中,有很多时候都接触了Linux的一些实现。
从底到高来说说经历吧:
1。做过仿真软件,运行于Linux操作系统之下。这个层次对硬件的规范需要很了解,同时也需要看懂驱动程序的实现。对Linux的系统启动也需有一定的了解。
2。内核,驱动。在这个层次就直接涉及到操作系统源码的应用了。同时也需要了解一些硬件相关的知识。不过纯做驱动的话,只需了解几个关键的内核模块就能应付了。
3。文件系统。在这个模块上工作,主要关注于VFS层的接口,以及对磁盘的管理。当然也要了解一下机械磁盘的特性(那会SSD)还没流行起来。不过这时候对操作系统的内存,中断,并发之类的就都要设计到。
4。应用。这一层就主要是C/C++的应用。主要了解一些系统接口,语言的规范和技巧。除了学好语言,那本《Unix环境高级编程〉也需很熟悉。

在几年的职业生涯中,书看了不少,弯路也走了不少。当年学Linux的时候,没有太多的宏观上的意思。拿着书就看,后来慢慢总结一下,大致能得出一些有用的规律。
1。学习Linux本身,建议还是先从应用程序的开发入手,自己是从一本不知名的Unix编程书籍开始了解这些知识的。不过现在觉得有个好的规划可以省不少时间。这层推荐《Linux程序设计〉,《Linux高级程序设计〉,《Unix环境高级编程〉。(至于语言方面的书籍就略过了,但是要熟悉Unix/Linux,C是必须的,另外一两本Linux系统管理方面的书也是前提条件)。
2。学习操作系统及内核原理。现在<操作系统>这本书已经到9版了,这个必看。<Linux内核编程>也是入门必看,不过这本书适合于了解一些原理性的东西。然后深入地看下《professional linux kernel>,(如果有精力,《情景分析》还是应该看看,对于疏通代码,这套上下册的书还是最详细的)。在这之后应该能够局部地看懂大部分内核代码了。之后再推荐看一两本驱动方面实战的书,否则依然无法去动代码。
    如果想再研究深一点,建议看看算法和数据结构的书。有几个主要的内容在内核里应用颇多。
    面向对象的东西能了解一下,有助于理解Linux内部的一些设计思想。这几年内核里有很多变化,都体现了抽象和面向对象的一些思想,虽然只是C语言实现的。
3。最后,Linux From scratch,及一些嵌入式Linux的实战操作。作为全局上的补充,应该就比较完整了。

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
36 [报告]
发表于 2013-10-19 21:11 |只看该作者

在书店翻了翻,只想问问,为啥一本400页的国产书,居然标价89?

论坛徽章:
0
37 [报告]
发表于 2013-10-20 08:39 |只看该作者
本帖最后由 zhanglong71 于 2013-10-20 09:15 编辑

回复 30# friendmine

进入linux世界的经历几乎一样啊!做了3,4次lfs,只成功过一次 !为公司做的kernel module,回过头来看,结构不合理,全速跑个7天7夜没出现故障,算可以用吧!


计算机专业,先做了几年的mcu应用开发,对数据访问的同步深有感触。自我感觉,理解了内核同步后,就很容易掌握内核软中断,tasklet, workqueue等的使用条件,相应的那些信号量,自旋锁的,什么时候用就不是问题了。

没做过运维。个人觉得运维人员玩下lfs还是可以的,学习Linux源码就不必了。


   

论坛徽章:
0
38 [报告]
发表于 2013-10-20 12:57 |只看该作者
1、说说您的Linux内核源码的学习经验和感受

    也许和论坛里的各位大牛不同,作为一个90后,刚刚参加工作3个月而已,也是在参加工作的3个月时间,才与Linux有了一些接触。(本科专业电子类,学习过C语言,操作系统,但是都是皮毛),在此我也说下我的学习经历,不是经验,只能算是菜鸟的一些感受吧。
    在这家公司任职,职位是技术支持,以我这三个月的理解,我们所谓的技术支持主要的任务是”解BUG”。公司总部在台湾,做SOC,在SOC基础上也提供一些简单的解决方案。我们的平时的工作主要是在公司自己研发的EVB上面写一些简单的Simple Code,还有就是客户在研发中遇到的一些问题,反馈给我们,我们做一些实验、分析,看是底层驱动的问题,还是用户APP的问题,如果是底层的问题反馈给台湾总部,如果是APP的问题反馈给客户,客户如果不容易解决再由我们和总部沟通,看看能不能给客户提出一些好的解决方法。好的,以上其实都是题外话,下面说下纯菜鸟的学习经历。
    我学习的第一步是从搭建嵌入式环境开始。第一次接触就是问题多多,还好网上资料比较多也比较详细,一番周折后也基本一一解决。剩下第一个月的时间,公司给的任务是看文档,了解下产品相关的知识。第一阶段的考核目标是编写一个最简单的Simple Code,最后也顺利通过了,然后就莫名其妙转正了(因为说好的试用期是3个月)。
    第二月,公司给安排的任务,测试。测试客户的程序,新产品开发阶段,客户问题多多。刚开始测到的问题基本都是直接找公司里面的负责人,负责人会对问题多一些讲解,渐渐的自己开始学习问题,看Log信息,但是很多问题到现在也不能正确的分析出根本。后来分析了下自己不懂的原因,主要是对Linux系统的了解过于欠缺,还有就是公司产品的了解也有欠缺。所以后来的时候经常抓人问一些问题,无论是产品还是Linux相关的。自己也买了第一本关于Linux的书籍:Linux内核设计与实现。
    第三个月,自己分到了一些Bug,就是可以直接和总部联系或者和客户联系,联系的过程中感觉是对公司的产品,以及一些功能上的实现与了进一步的了解。每天下班的时候看一下书,刚开始看的时候主要是一些概念性的东西,像是时间管理,进程线程概念等之知识。看的时候感觉受益良多,但是渐渐的发现,只是看的话,很容易忘记,而且理解不够深入,在公司工作的时候,很多又得不到验证,所以遗忘很快。看着看着就变成翻书了。感觉这样下去也不是办法,准备从实践入手,然后对照书本验证,就又从同学那里借来了闲置的MINI2440了开发板和Linux设备驱动程序那本书。相比公司的EVB,MINI2440的资料比较多,想先移植下简单驱动,看下内核代码,书也会继续的看下去。暂时只到这一步。

2、对于普通的Linux程序员和运维人员,是否有必要学习Linux系统构成及源码等基础知识
        
    对于普通Linux程序员,还不是太理解这个概念,运维人员暂时也不太清楚。就不发表评论了。

    目前的理解,只要是想搞Linux ,从内核开始学,应该比较好一些,理解系统会比较深入些,对于想在Linux 上长远发展有益无害。不过可能会耗费一些精力。

    小弟论坛第一次发帖,废话较多,本人是希望在Linux上有一个长远的发展。如果哪位前辈看到能对小弟方法或者方向上指点一二,不胜感激。如果有志同道合的Linux初学者看到,也可以加下小弟的QQ:86066881,希望可以共同学习,共同进步。谢谢。

目前手上资源:        友善之比MINI2440开发板, Linux内核设计与实现, Linux 设备驱动程序

论坛徽章:
0
39 [报告]
发表于 2013-10-21 14:23 |只看该作者
从技术角度看,了解内核,无论做驱动/内核还是应用,都可以高屋建瓴,游刃有余。特别是遇到需要综合运用应用层,接口层,内核层等相互协助才能够完成的任务时,尤其有用(比如上面的网友提到的3D显示)。

不过个人觉得,基础好不好,都没有问题,只要有非常偏执的兴趣,庞大的内核也是能拿下的。

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-24 13:05:332015亚冠之西悉尼流浪者
日期:2015-10-09 16:03:47fulanqi
日期:2016-06-17 17:54:25
40 [报告]
发表于 2013-10-22 18:30 |只看该作者
高山景行,虽不能至,然心向往之。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP