- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核入门 西邮的
走近Linux内核
作者:[王聪]
不要理会任何一个告诉你内核开发是困难,特别或者不同的人。它是一个大的程序,而且bug修复或驱动编写是一个最佳起点。它也没有什么魔力,也不是使用只有留着络腮胡的老手才能读懂的语言编写。
──Alan Cox
[编辑] 简介
这篇文章是专门写给那些对Linux内核感兴趣,却又不知道如何着手去读懂那么多代码的内核新手。也许你刚刚了解Linux,又急于探索Linux的内部秘密;也许你是一个Linux开发者,熟悉应用程序的开发,又雄心勃勃准备 向内核世界进发。那么这篇文章正是你需要的,它会带你走进内核的世界,伴你渡过危险的沼泽。通过分享我们自 己的经历,希望有更多的人能够加入到Linux内核开发者行列。内核开发向来被视为非常神秘的工作,仿佛只有传说中的留着长长的络腮胡的黑客们才能从事它。其实不然,Linux内核的开发和其它大型项目没有多少差别,只不过它的调试确实有点特别,需要一些特别的技巧。不要恐慌(Dont Panic!),只要你下功夫,你也能参与内核的开发,它的确是一件非常好玩的事。
[编辑] 需要准备什么
当然,你首先要有一台可供支配的电脑,最好装有Linux。如果可以,最好再有一台专门供你调试代码的机器,因为没人能保证调试内核的过程中不会让你的文件系统崩溃。或者,至少有一块专门给调试内核使用的硬盘。最好还有一个固定的互联网接口,毕竟Linux内核开发是在网络上进行的,而且你也会经常在互联网上搜索一些有用的信息。如果你是一位超级geek的话,再准备一根双机串口线,它能帮助你从一台机器上“聆听”另一台机器上内核运行中的“抱怨”。嗯,有点像是外科医生给病人听诊,这看起来很酷,不是吗?如果你准备在一台非计算机设备上调试你的内核(这没什么奇怪的,Linux早已经被移植到千奇百怪的系统上),那么你还需要准备相应的硬件,或者它的模拟器,或者其它一些工具。如果你有在非计算机设备上调试Linux内核的经验,请在这里自由添加相应的内容。
[编辑] 开始
我们假设上面的东西你都准备好了,整装待发,现在可以正式进军内核了。当然了,如果你对Linux上的开发已经很熟悉了,你可以安全地跳过这一节。好了,出发,水手们!
[编辑] 1. 精通C语言编程
不是我们一味推崇C语言,而是C语言的的确确太适合做内核开发了。C语言的诞生源于编写Unix内核代码,它精练的设计哲学确实做到了这一点。甚至有人这样评价C语言──“它联合了汇编的所有威力。”如果你还不懂C,赶快去学吧。如果你是一名编程新手,不推荐用C作为你的入门语言,原因如下:
编程新手最需要了解的是编程的概念和对编程的基本认识,而过多的接触C语言往往会把你引出这一目的,会让你把注意力集中到一些奇怪的语言特性上,而不是编程语言本身。
编程新手往往对计算机了解不够深刻,不清楚计算机的内部结构,而C语言恰恰就是和计算机内存/编码/CPU打交道,最起码,调试那些“隐晦”的错误时如此。(想想你是不是没有把一个指向指针的指针的指针指向正确的位置。)
学好C语言需要下很大的功夫,最起码不能低于两年。(当然如果你不打算学好那得另说了。)
所以,最好先学一门比较简单的编程语言作为铺垫。不妨试一下Python,它比Java还要简单。当然了,这并非绝对,因人而异。如果你真的决定开始学习C语言,那么推荐的入门书籍仍然是KR的《The C Programming Language》。过去这么多年了,它仍然被奉为入门的首选,可见其有多么经典。不过仅仅了解C的语法,能编写一些小的程序是远远不够的。你必须能够熟练地操纵C语言,了解它的一些缺陷和陷阱,让它变成你的利器。有句话说得好:“C语言就像一把刻刀,简单,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能驾驭它的人。”读一读《C Traps and Pitfalls》和《Expert C Programming》吧,它们能让你有一个大的提升,成为一名C语言高手。如果碰巧你是一位C++的推崇者,那么下面的一些引用或许能说服你开发Linux内核不使用C++(摘自LKML FAQ)。
Linus在2004年说:
In fact, in Linux we did try C++ once already, back in 1992.
It sucks. Trust me - writing kernel code in C++ is a BLOODY STUPID IDEA.
他认为:
C++编译器是不可靠的,1992年的时候更糟,有一些基础性的东西没有改变:
C++的异常处理是broken(不知道怎么翻译这个词好)的,对内核来说它更是broken。
任何一个
您可能关注的文档
- 2015届高三复习章节的测试题:高考热点集训3.doc
- 2015届高三生物一轮的总复习单元滚动检测:第七单元+生物的变异、育种和进化(含2014年模拟题,含答案解析).doc
- 2015年3月7日鲍时华的、余震波胎停育讲座文字版.doc
- 2015年5月心理咨询实摩三级理论知识真题及答案.doc
- 2015年5月心理咨询实摩三级理论知识真题及详解.doc
- 2015年专技人员公需的科目培训(初级)考试试题及答案.doc
- 2015年临床医学检验的学主治医师考试大纲—微生物和微生物学检验部分.doc
- 2015年临床医学检验的主管技师考试大纲-临床血液学.doc
- 2015年会计继续教育的考核及答案.doc
- 2015年公卫执业医师的《临床综合》考试大纲.doc
- 固收转债分析-瑞可转债定价:首日转股溢价率32%-37%-251117-东北证券.pdf
- 胰岛素皮下注射团体标准临床实践指南.pptx
- 北交所定期报告:本周北证50波动平缓,固态、锂电材料等关注度显著提升-251116-东吴证券.pdf
- 策略观点:波动仍是市场底色,保持战略定力-251117-中邮证券.pdf
- 钢铁行业25Q3业绩综述:盈利修复,关注供给侧变革-251117-银河证券.pdf
- 2026年汽车行业投资策略:科技赋能下的换道再提速-251118-申万宏源.pdf
- 高频半月观:价格改善的信号进一步增强-251116-国盛证券.pdf
- 房地产开发行业2026年度策略:调结构待转型,提质量新发展-251119-银河证券.pdf
- 固收点评:茂莱转债,全球高端光学科技创新标杆-251119-东吴证券.pdf
- A股投资策略深度报告:自主可控产业链国产替代率逐步提升-251112-华龙证券.pdf
最近下载
- DL/T 5352-2018 高压配电装置设计规范.docx VIP
- 沥青三大指标计算.xls VIP
- 关于社区卫生服务中心五年发展规划十五五发展规划2025.docx VIP
- 初中物理学法指导.pptx VIP
- 一种双烯醇酮醋酸酯的超高纯精制方法.pdf VIP
- 正式版股权委托代管协议范本.pdf VIP
- HG∕T 4336-2012 玻璃鳞片防腐涂料.pdf VIP
- 苏教版小学数学五年级上学期公开课教案-解决问题的策略(一一列举)(市级公开课教案)56075.pdf VIP
- 运用PDCA提高科室护理不良事件上报率.pptx VIP
- 关于五一社区卫生服务中心“十五五”五年发展规划(完整版).docx VIP
原创力文档


文档评论(0)