鱼弦 2017-08-23 00:53 采纳率: 0%
浏览 9

linux学习研究方面的问题

您的专著还没学习,想请教下,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 汇编语言除法溢出问题