您的专著还没学习,想请教下,linux 如何深层次的研究和使用
1条回答 默认 最新
- 笨叔叔 2017-08-23 01:49关注
我觉得有如下几点:
1. 要有一颗热情的心和对Linux充满了兴趣和好奇心。如果想在学习内核可以赚大钱,那真不必了,因为连Linux校长linus同志都没发大财。虽然这几年Linux内核的热情被云计算、AI、自动驾驶等新兴热点超越了,可是Linux内核作为基础设施未来几年还是很难被替代的,无论云计算、AI、自动驾驶还是ARM服务器等等,这些应用场景大部分还是运行在Linux内核之上,因此学习和掌握Linux内核还是必不可少的一门手艺。Linux内核像股市中的白马股和蓝筹股,虽然不在是被爆炒的热点,但依然星光璀璨。可以读读Linus同志的自传《Just for fun》。
2. 要有实际动手的机会。如果公司里有实际的Linux驱动或者内核项目,那是很好的锻炼机会。如果没有,那可以自己创造一个。比如可以按照《奔跑吧Linux内核》第6章的实验内容,采用Qemu+gdb+eclipse+O0调试方法来对感兴趣的内核模块进行单步调试,这样可以加深对内核代码的理解。另外也可以参与一些其他的开源项目,github上有不少很不错的内核开源项目
3. “笨氏吊打法”即要带着问题去看内核代码。这些问题可以是自己工作上遇到的问题,也可以是自己阅读代码中产生的疑问,总之你有疑问就不要放过,被客户吊打的问题更不能让它轻易溜走。内核代码变得越来越庞大,不带着好奇心和问题去看代码很容易在代码中迷失了方向。这也是《奔跑吧Linux内核》推崇的做法。拿mmap来说,相信很多驱动开发者或者应用开发者都用过这个API,可是有没有想过mmap是怎么实现的?使用mmap需要注意哪些方面?如果用户程序采用只读的方式来mmap文件内容到用户空间然后往这段进程地址空间写入,会发生什么情况?再比如get_user_page()这个函数,有不少驱动程序使用了它,你有没有想过它是如何实现,又是如何pin住物理页面的?
4. 参与内核社区开发。在这一点上,我给自己打分的话一定是0分。我自己没有参与过内核社区的开发,也没有一个patch,虽然定阅了Linux-mm的mailist,可是真的没有时间很认真的参与讨论。希望读者朋友们如果有时间和精力可以订阅自己感兴趣的mailist,尽可能的参与社区的讨论,这样对自己的提高是显著的。能参与开源社区的开发固然是好事,如果你是做产品研发的部门,没有时间和精力参与到社区里,其实也不用伤心,很多Linux专家也不在社区里混。参与一款好产品的研发也是一件很了不起的事情,因为好产品不仅仅是开源技术,还涉及好多方面。总之一句话,带着问题去看内核代码,然后撸起袖子动手实践吧,这也是《奔跑吧Linux内核》给大家推荐的做法。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题