V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
weishao666
V2EX  ›  问与答

普通人能读完 Linux 的源码么

  •  2
     
  •   weishao666 · 2022-09-02 14:24:00 +08:00 · 3602 次点击
    这是一个创建于 817 天前的主题,其中的信息可能已经有所发展或是发生改变。

    35.1m 的代码行数,普通人能读完 linux 的源码么。读完需要多久,读完是不是就无敌了

    30 条回复    2022-09-05 09:51:45 +08:00
    hay313955795
        1
    hay313955795  
       2022-09-02 14:30:42 +08:00
    读完记不住也没用啊..哈哈
    LxnChan
        2
    LxnChan  
       2022-09-02 14:33:44 +08:00
    光读完有啥用,读完你要是能完整的说出来整个系统的运行流程和机制还差不多,更进一步的读完了能再以自己的理解写出来一份,甚至受此启发能够研发出更高级的东西才是有用,才是无敌了
    WOLFRAZOR
        3
    WOLFRAZOR  
       2022-09-02 14:37:01 +08:00
    能说出流程和机制比记住有用多了。
    eason1874
        4
    eason1874  
       2022-09-02 14:37:41 +08:00
    跟看顶尖论文差不多,每个字都认识,就是不知道在说什么 🤣
    AoEiuV020CN
        5
    AoEiuV020CN  
       2022-09-02 14:37:58 +08:00
    能清楚每一行代码的作用以及是否可以改进,就无敌了,
    ipwx
        6
    ipwx  
       2022-09-02 14:39:29 +08:00   ❤️ 1
    有没有一种可能,普通人不会把辞海记下来,而是在需要的时候根据目录去翻。
    libook
        7
    libook  
       2022-09-02 14:40:03 +08:00   ❤️ 1
    假设美秒读 5 行,35.1m/5/3600=1950 小时,如果每周看 40 个小时,就是 48.75 周,也就是差不多一年。当然,只能走马观花地看,基本看不明白而且也记不住。

    我认识一个人在阿里做内核方面的开发,有时候为了实现一个需求要看一大堆文档和源代码,一个星期只改了一行代码。
    ipwx
        8
    ipwx  
       2022-09-02 14:40:04 +08:00   ❤️ 1
    p.s. 如果你问我有没有人把 Linux 几乎所有代码都读过了,那 Linus 一定是其中一位。
    lakehylia
        9
    lakehylia  
       2022-09-02 14:40:40 +08:00
    一般都是碰到某个问题,然后去翻源码
    Jooooooooo
        10
    Jooooooooo  
       2022-09-02 15:35:33 +08:00
    windows 系统也很庞大, 当然没有人可以全部读完.
    darksword21
        11
    darksword21  
       2022-09-02 17:00:08 +08:00
    可以,转我钱教你量子速度 (
    alect
        12
    alect  
       2022-09-02 17:04:40 +08:00
    有没有可能 linux 不是一个人写的,而是非常多的人共同协作出来的? ::doge
    xinhero123
        13
    xinhero123  
       2022-09-02 17:26:59 +08:00   ❤️ 1
    大部分的代码都是重复的,没必要读完,理解代码后面的核心思想和流程是最重要的。相对于通读代码,更推荐通读 Documentation+核心代码
    Nitroethane
        14
    Nitroethane  
       2022-09-02 17:30:58 +08:00 via iPhone
    大部分代码应该是设备驱动,如果不涉及设备的话这部分驱动代码不用碰。但是内核的核心代码还是有很多,不过是分成几个子系统的,比如内存管理子系统、进程调度子系统、kvm 等。专注哪个领域读哪部分代码,不过得熟悉每个子系统的大致设计原理以及暴露出来的接口
    daimubai
        15
    daimubai  
       2022-09-02 17:47:07 +08:00
    “读完是不是就无敌了”。那要看读的时候有没有带脑子了
    nevin47
        16
    nevin47  
       2022-09-02 17:53:57 +08:00
    丢开驱动的话,然后核心 arch 以 x86 为基础

    全部读完的人应该存在,但是不多。绝大多数的 Kernel 工程师会读一些和自己强相关的,少数的研究者会研究整体宏观架构,但是又不会彻底深入进去

    我和我司有几个在 kernel 上有个人分支的大牛们也交流过,基本上就算是他们这种过去或者现在正在当 maintainer 的大神,也很难说自己完全走读完过内核的所有核心代码。

    退一万步,即便你现在基于当前的 commit 把核心代码给读完了,如果没有持续跟进,你会发现过不了半年,有些东西就完全陌生了
    signalyc
        17
    signalyc  
       2022-09-02 17:56:31 +08:00
    0.01 版,Dr 赵写了一本书
    swsh007
        18
    swsh007  
       2022-09-02 18:53:56 +08:00 via Android
    国内出版的有 0.12 版的解析
    作者最早是发布的电子版
    当年看到的第一个介绍 linux 的书
    好像是松岗出的,内核是 0.69
    justanetizen
        19
    justanetizen  
       2022-09-02 18:56:46 +08:00   ❤️ 2
    第一遍,跟着书读,读对应版本的内核
    第二遍,跟着事读,读对应子系统的源码
    第三遍,跟着心读,读自己觉得掌握了的源码
    aneureka
        20
    aneureka  
       2022-09-02 19:36:57 +08:00 via iPhone   ❤️ 1
    看 xv6
    glouhao
        21
    glouhao  
       2022-09-02 19:43:30 +08:00 via Android
    我用字母的方式读完还是单词的方式读完
    levelworm
        22
    levelworm  
       2022-09-02 20:36:22 +08:00
    @libook 这种才是有意思的活
    hankai17
        23
    hankai17  
       2022-09-02 20:40:54 +08:00
    只看最初的几个版本就可以了
    secondwtq
        24
    secondwtq  
       2022-09-02 21:15:12 +08:00
    自己读起来会比较麻烦,你可以写个程序帮你读。然后找个云租个几十核服务器跑一跑去睡觉,做个梦你就是精通 Linux 源码的人了
    leimao
        25
    leimao  
       2022-09-03 08:42:51 +08:00
    量子阅读,读完只需要三秒。然而并不无敌。
    FrankHB
        26
    FrankHB  
       2022-09-03 12:38:55 +08:00
    @ipwx 只是读的最多的,几乎所有就不太可能。

    也不要指望什么 Linus 定律。
    随便举个例子:fs/cifs/trace.h 这种瞎定义 TRACE_INCLUDE_PATH 的合了也就是合了,并没几个人会看清楚。
    这 bug 还不就只是这一个地方:android.googlesource.com/kernel/msm/+/3f74f6ec717e320a8fe1d108d1e0812e352b4ee8%5E!
    weishao666
        27
    weishao666  
    OP
       2022-09-04 12:19:34 +08:00
    @secondwtq 这个项目可以,我去请王多鱼投
    weishao666
        28
    weishao666  
    OP
       2022-09-04 12:21:23 +08:00
    @Nitroethane 就是想知道这个预估要多久
    zhdi
        29
    zhdi  
       2022-09-04 17:26:10 +08:00 via iPhone
    都是驱动代码,核心代码没那么多
    sdfh8412
        30
    sdfh8412  
       2022-09-05 09:51:45 +08:00
    linus 说过世界上没人全看完
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:35 · PVG 16:35 · LAX 00:35 · JFK 03:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.