V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shine_lee
V2EX  ›  程序员

学习Linux内核源代码需要一些什么基础?

  •  
  •   shine_lee · 2012-05-28 11:17:46 +08:00 · 7125 次点击
    这是一个创建于 4594 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在正在看的书是鸟哥linux,几本c,汇编,还需要哪些基础知识?
    再推荐几本书吧
    非常感谢!
    13 条回复    2017-01-18 14:13:12 +08:00
    shiweifu
        1
    shiweifu  
       2012-05-28 11:22:27 +08:00   ❤️ 1
    tcpl看完了,再看《现代操作系统》,再学习一些att汇编、数据结构,就可以了吧……


    PS:我买的linux源码解析之类的书现在还在吃灰……祝lz好运
    sivacohan
        2
    sivacohan  
       2012-05-28 11:53:42 +08:00
    组队一起看。
    ipoh
        3
    ipoh  
       2012-05-28 11:54:25 +08:00
    现代处理器的工作原理
    zellux
        4
    zellux  
       2012-05-28 11:59:40 +08:00   ❤️ 1
    对 C 和汇编有一定基础的直接看《Linux 内核完全剖析》(http://book.douban.com/subject/3229243/) 就好了,这本书分析的是 0.12 版本的内核,适合入门。看完了再看 ULK 就容易理解了。
    liwei
        5
    liwei  
       2012-05-28 12:06:52 +08:00
    我觉得最好有实际的需求或者跟工作有关这样看起来才不会觉得无聊

    linux内核方面有很多书可以参考:
    linux kernel development 是对内核的整体概览对内核重要的部分都有所涉及,但是深度不够 可以作为入门内核的开始

    linux内核情景分析 中文的看起来比较舒服,讲解也很详细,不过是讲2.4内核的 其实影响也不大 代码虽然有变化但是基本的思想还是一致的,这个作为入门和深入都是不错的

    understanding the linux kernel 对内核的几个子系统都有比较深入的描述 啃起来比较难 需要随着对内核的不断理解多看几遍

    linux device driver 这是一本偏重实践的书 主要讲解llinux的驱动开发

    对内核熟悉了之后 你就可以选择自己感兴趣的方面来深入啦

    understanding linux network internals 讲网络方面比较权威的一本书

    understanding linux virtual memory menagement 内存管理方面

    当然对内核最详细的描述莫过于内核代码本身
    ipoh
        6
    ipoh  
       2012-05-28 12:09:57 +08:00
    读内核最好有硬件基础、学过操作系统原理。现代大学里教os原理都与实际脱节,但是不学这个只会C和汇编去看源码也会很痛苦。不懂得硬件知识在读源码时候又会有很多疑惑。
    而且这个东西很难实践,往往看了后面前面的东西会忘记。不过看完收获会很大,是一种内力的提升。
    shine_lee
        7
    shine_lee  
    OP
       2012-05-28 12:19:21 +08:00   ❤️ 1
    @ipoh @liwei 确实对学习内核有点缺乏动力呀...有没有什么实践的方法能提升兴趣的??
    shine_lee
        8
    shine_lee  
    OP
       2012-05-28 12:20:18 +08:00
    @shiweifu
    @sivacohan
    @ipoh
    @zellux
    非常感谢!
    liwei
        9
    liwei  
       2012-05-28 12:31:22 +08:00
    @shine_lee 内核中各个子系统之间分的还是比较清晰的 找个自己感兴趣的子系统研究一下

    先不急着看代码,先要搞清楚找个子系统是要解决什么问题,解决这个问题一般有哪些方法,linux中是如何解决的,内核代码中有个Documents目录可以参考

    弄清楚上面那些然后就可以读读代码看看,订阅一下这个方面的邮件列表,看看大家在讨论的关于这个子系统的问题 一开始你很有可能看不懂他们在讨论什么 不用着急随着你对这个子系统的了解的深入 你就会慢慢看懂啦 然后就可以从简单的问题开始为linux做贡献了
    shiweifu
        10
    shiweifu  
       2012-05-28 12:58:57 +08:00
    http://book.douban.com/subject/3670621/

    lz先看看这个培养点兴趣?
    Ranler
        11
    Ranler  
       2012-05-28 13:05:06 +08:00
    比较新的Kernel书是Professional Linux Kernel Architecture,基于2.6.24版本,我也断断续续在看
    shine_lee
        12
    shine_lee  
    OP
       2012-05-28 13:07:17 +08:00
    @shiweifu 兴趣相当大,但是有点遥不可及的感觉...
    vultr
        13
    vultr  
       2017-01-18 14:13:12 +08:00
    Professional Linux Kernel Architecture 能坚持把这本书看完的,英文水平一定很好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4324 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:33 · PVG 13:33 · LAX 21:33 · JFK 00:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.