V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
petelin
V2EX  ›  分享发现

终于发现了适合自己的学习模式,现在在学操作系统,学的嗖嗖的

  •  1
     
  •   petelin · 2016-10-01 13:45:19 +08:00 via Android · 9579 次点击
    这是一个创建于 2761 天前的主题,其中的信息可能已经有所发展或是发生改变。
    并不是什么捷径,而是之前学不懂的东西现在可以学懂了,而且感觉比书上,公开课上讲的更明白。

    整个故事是这样的,我想学操作系统了,然后看书,失败,妈的,这东西在讲鸡毛啊,是完全不懂,看不下去,


    然后看公开课,失败,恩,有感觉了,讲的不错,为啥一加电跑到 fff0 哪里了?我是说为什么那么算, cs 左移 4 位?实模式在搞毛啊? gdt 又是毛?看不下去了,夹生饭不是我风格

    然后看汇编,这个是转折点,王爽的汇编原理,看得真爽啊,很多人说这个简单,要的就是简单,我看这个最大收获不是学会了汇编,而是学会了中断,学会了机器的组成,尤其是在 dos 下用的那些工具,很真实, turbo c 也很简单,编译连接过程也懂了,指针也明白了。
    他最后的几个关于 C 的实验收获更大,他教如何去思考,比如为什么 c 入口函数是 main ,怎么改为其他函数名字,这个都是在他知道下我自己找出来的,当然是在简单的环境下

    然后再回过头来看操作系统,我直接找了一个最简单的书,看不懂就扔,看不懂就扔,最后找到了国外一个超级简单的内核,然后自己看着文档写 bootloader....不懂的就看他的实现,想很多东西,比如我能不能不给 u 盘文件格式,而直接把操作系统写进去,工具是什么,为什么内核生成为 elf 格式的?可不可以直接是二进制指令的,像 bootloader 一样?这些问题我都能自己想出来答案了,这真是一个质变。


    如今,看那些书感觉很轻松了,我 bb 这么多,一个是高兴,一个是分享

    1. 看不懂的书就扔了,别管他有多大的知名度

    2. 书可以挑着章节读,别从前往后一个一个看了,我以前的习惯是错误的。

    3. 学习是个循环的过程,只有知道 A 才能更好的理解 B ,一些资料看不懂没关系,突然那天就明白了,不懂是他没说清楚,不是你的错,你得找你能看清楚的接着看。比如那本简单书里说的 ebp 可以找到所有的调用过程,我就不理解,今天看难一点的公开课,他讲的就懂了。

    4. 学习接受的过程一定是从简单到难的,具体实现可能自顶而上,或者自下而上。

    要是能匿名就好了。。。只是分享一下,可能很浅薄,或者只跟我自己有关。大家随便看看,国庆快乐,打把无线火力去
    35 条回复    2016-10-11 12:48:58 +08:00
    misaka19000
        1
    misaka19000  
       2016-10-01 14:06:33 +08:00 via Android
    感谢楼主分享
    sfqtsh
        2
    sfqtsh  
       2016-10-01 14:12:09 +08:00 via Android
    国外一个超级简单的内核是什么?
    scnace
        3
    scnace  
       2016-10-01 14:14:12 +08:00 via Android
    王爽的汇编书确实不错 是我们汇编课的教材 可惜并没有去深入 老师也不按书上的讲 :(
    got
        4
    got  
       2016-10-01 14:23:11 +08:00
    直接看归纳好的书, 细节是用来查的
    jigloo
        5
    jigloo  
       2016-10-01 14:24:25 +08:00
    小伙子不错啊,又肯钻研,又能分享,态度友好,不骄不躁。
    长江后浪推前浪,雏凤清于老凤声。加油啊。
    vghdjgh
        6
    vghdjgh  
       2016-10-01 15:03:35 +08:00   ❤️ 2
    有个学习理论是把内容分为舒适区、学习区、恐慌区,现在看不懂的就属于现在的恐慌区,随着学习、理解的深入,会逐渐变成学习区。
    misaka19000
        7
    misaka19000  
       2016-10-01 15:12:40 +08:00 via Android
    @vghdjgh 这个挺有意思,感觉还蛮有道理的
    FreeDog
        8
    FreeDog  
       2016-10-01 15:56:00 +08:00
    有的书动辄 1000+ 页,而且事无巨细,初学很容易花费很多时间,但很快就会忘掉大多数细节。一开始的确应该从简单的入手,不然很打击自信,也不利于建立整体印象。
    rockpk008
        9
    rockpk008  
       2016-10-01 16:02:29 +08:00 via iPhone
    第三点深以为然。
    qfdk
        10
    qfdk  
       2016-10-01 17:00:09 +08:00 via iPhone
    以前也是看不懂的东西 我就学别的了 过一阵子 看到了别的知识一结合就明白了
    txlty
        11
    txlty  
       2016-10-01 17:03:28 +08:00
    那本汇编语言我也啃过。然后向 80386 进发。结果被辞海一样厚的书籍吓回来了。
    petelin
        12
    petelin  
    OP
       2016-10-01 17:31:57 +08:00 via Android   ❤️ 2
    @sfqtsh 《 JamesM's kernel development tutorials 》,中文 http://hurlex.0xffffff.org/

    他用的 grub,,,我是直接照着 ucore(github 上有,很详细) 写的 bootloader
    pandachow
        13
    pandachow  
       2016-10-01 17:57:49 +08:00
    对,是这样的。
    教材的编排都是按照作者和编辑的心思来编写的,即便是专门针对初学者、进阶、高手的书籍也是没法照应到个性化的编排。更别说每个人对每个小的知识点的已有理解水平和需求的差异了。

    所以,看不懂就扔这一招是绝对正确的。
    XDXX
        14
    XDXX  
       2016-10-01 18:00:01 +08:00
    upczww
        15
    upczww  
       2016-10-01 18:17:57 +08:00 via Smartisan T1
    感谢楼主,感同身受啊,我也要改改学习方法了,初学的时候拘泥于细节有时候不是好事。
    sfqtsh
        16
    sfqtsh  
       2016-10-01 19:00:25 +08:00 via Android
    @XDXX 楼主 12 楼说啦
    refresh
        17
    refresh  
       2016-10-01 19:11:09 +08:00
    读书,不求甚解,看完能懂的,不懂的以后再回溯
    guanaco
        18
    guanaco  
       2016-10-01 21:26:25 +08:00 via iPhone
    操作系统是要读过一台机器的 BIOS 源码,才可以完全搞清楚。最好再配上电路图 :)
    peneazy
        19
    peneazy  
       2016-10-01 21:27:53 +08:00 via Android
    楼主的学习思路和我很像。最近正好在研究 js 编译的过程,发现需要好好学一下编译原理。
    prondtoo
        20
    prondtoo  
       2016-10-01 22:05:16 +08:00
    还要一个很重要的原因是现在很多书要么是复制粘贴东拼西凑骗稿费的;要么就是以 XXX 教授编写的名义,实际上是请下面学生来写的,水平很一般,估计那些学生也半桶水;要么就是翻译得很匪夷所思的,生硬的中文不知在 up 乜。
    prondtoo
        21
    prondtoo  
       2016-10-01 22:06:35 +08:00
    有个找书的方法不错,京东搜关键字看销量,大概也就那基本经典的,然后记下 ISBN 码,去图书馆搜去...haha
    tscat
        22
    tscat  
       2016-10-01 22:10:38 +08:00
    看视频可以快速让人从恐慌区过度到舒适区
    Felldeadbird
        23
    Felldeadbird  
       2016-10-01 23:45:54 +08:00 via iPhone
    后来某天突然懂了,其实已经消耗了很多时间去寻找答案。
    不过,书的内容其实真的可以选择看。
    chiu
        24
    chiu  
       2016-10-02 08:10:26 +08:00 via Android
    感谢分享
    feather12315
        25
    feather12315  
       2016-10-02 08:58:34 +08:00 via Android
    一看就是计算机组成原理没学,不仅仅是没学好
    bk201
        26
    bk201  
       2016-10-02 09:10:44 +08:00 via iPhone
    看不懂的去搜索下难道没有解释?
    petelin
        27
    petelin  
    OP
       2016-10-02 10:58:32 +08:00 via Android
    @bk201 请搜索 “我能不能不给 u 盘文件格式,而直接把操作系统写进去,工具是什么,为什么内核生成为 elf 格式的?可不可以直接是二进制指令的,像 bootloader 一样?”
    或者,人生有什么意义,我想说每个人差的地方都不一样,即使别人回答了,也解决不了你的困惑,一篇文章能讲明白了,那些大书要有何用?
    我并不是否认搜索的价值。分情况,分技术和知识。
    GreatMartial
        28
    GreatMartial  
       2016-10-02 11:41:47 +08:00
    我也觉得看不懂的就别管它了,跳过去看后面的
    cbais7890
        29
    cbais7890  
       2016-10-02 12:01:38 +08:00   ❤️ 2
    学习学习的方法是学习中很重要的一环
    感觉这句话说出来很绕...但确实是这个理
    xieyudi1990
        30
    xieyudi1990  
       2016-10-03 04:56:53 +08:00 via Android
    不错,继续下去。当年也差不多和 lz 一样的想法,不过我大学期间一般都是直接看美国的原版 /影印版教材。

    其实那些老师,老师的老师,教材的作者,很可能自己就那样(教材还不算那些请那些很可能学了四年找不到工作考研的研究生代笔的那种)。在那要么吹牛,要么念课本。有多少是参与过现代 cpu 开发的。如果不是那几家 top 的学校。。。自己都没搞过还要教别人。二流教材加三流老师,结果就是这样。

    我毕业时也和那些老师谈过。他们上课感觉更像是完成政治任务。一方面大趋势是, cs 都往互联网靠,不是那么几家学校出来的,现实点一辈子接触这些知识的机会很渺茫,大家来这读学位大部分是为了找工作,没鸟用的东西大家也不想学;另一方面培养计划又是上面订的,再差的大学也是大学啊,所以又必须开这门课。结果就是老师装着讲一讲,学生装着听一听,期末放放水,也就过去了。 lz 和我这种杠真的,不多。

    另外体系结构我推荐这本:
    https://www.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269

    我现在的工作(第一份)就是天天弄这个。不过我这个更底层,一边直接从 _start 往上写测试程序,一边在仿真器 /模拟器里对着 rtl 看 cpu 里的信号。你能通过编程看到的,只是做 cpu 的暴露给你的接口而已。

    我现在能一口气答出来这些问题。
    gdt ldt 什么的都在 intel 那三卷 pdf 里。
    elf 头格式, mbr/fat 格式什么的网上到处都是。
    要 binary 直接 objcopy 就好了,得到 plan binary dd 就好了。 man objcopy 。
    如果想找例子, Linux 内核, osdev ,还有各种学校的 os final project 都可参考。
    petelin
        31
    petelin  
    OP
       2016-10-03 09:35:34 +08:00 via Android
    @xieyudi1990 膜拜真大神,谢谢指导。看您给出的答案是真的折腾过啊,嘿嘿😜
    bravecarrot
        32
    bravecarrot  
       2016-10-03 15:54:59 +08:00 via iPhone
    1. 道破天机
    2. 确实,有很多之前怎么看也不懂的内容,现在一看就懂
    3. 看网上人家说看某某书就学会了 xx ,不可轻信,也不要气馁,毕竟各人姿势水平不一样
    wizardforcel
        33
    wizardforcel  
       2016-10-03 20:37:20 +08:00 via Android
    不是你的错,大部分讲 os 的教材都是盲人摸象。
    likeunix
        34
    likeunix  
       2016-10-08 15:04:53 +08:00 via Android
    NB 楼主,我最近也在学操作系统,你的"最后找到了国外一个超级简单的内核"给我看看好吧~~
    petelin
        35
    petelin  
    OP
       2016-10-11 12:48:58 +08:00 via Android
    @likeunix 上面回复有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3273 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 13:41 · PVG 21:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.