- 3
- 0
- 约1.74万字
- 约 15页
- 2016-10-11 发布于浙江
- 举报
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。
您可能关注的文档
- L171液晶显器检验规范(试行)B版.doc
- LB-350S6145中文规格书.doc
- LB-LINK业WiFi广告营销路由器操作指南二.docx
- LCD1286液晶显示器中文说明.doc
- LCDHome坛_PCB布局布线.doc
- LCD液晶显示简介.doc
- LCD白平衡调说明.doc
- LCD相关技术料收集-2010-04.docx
- LC正弦波振荡相关知识.doc
- LC电容反馈三式振荡器.docx
- 2026及未来5年中国水溶性全粒面填充树脂乳液市场数据分析研究报告.docx
- 2026及未来5年中国锅炉门盖市场数据分析研究报告.docx
- 2026及未来5年中国电视屏幕墙市场数据分析研究报告.docx
- 2026及未来5年中国腹股沟层次解剖模型市场数据分析研究报告.docx
- 2026及未来5年中国半自动精密三次元抄数机市场数据分析研究报告.docx
- 2026及未来5年中国粉末冶金成型剂市场数据分析研究报告.docx
- 2026及未来5年中国片状EMI滤波器市场数据分析研究报告.docx
- 2026及未来5年中国谷维素双维B片市场数据分析研究报告.docx
- 2026及未来5年中国运动帽檐市场数据分析研究报告.docx
- 2026及未来5年中国双支架瓷管市场数据分析研究报告.docx
最近下载
- 厦门市同安区事业单位招聘考试题目及答案2025.docx VIP
- 公示A646-0059宗地光明新区观光站综合体项目pdf - 重庆市环境保护.PDF
- 草坪学 全套课件.ppt VIP
- 物理-河南普通高中青桐鸣大联考2024-2025学年2025届高三年级上学期1月期末考试试题和答案.docx VIP
- 弱电工程入侵报警系统(含紧急求助)设计方案全.docx VIP
- 《化学催化催化剂》课件.ppt VIP
- 金相检验二级试题.pdf VIP
- 未遂事故管理制度.docx VIP
- 安徽医科大学2021年春季学期护理专业《健康评估》期末考试试卷.docx VIP
- NB_T 20436-2017压水堆核电厂水化学控制.pdf
原创力文档

文档评论(0)