极客时间已完结课程限时免费阅读

编辑手记 | 升级认知,迭代自己的操作系统

编辑手记 | 升级认知,迭代自己的操作系统-极客时间

编辑手记 | 升级认知,迭代自己的操作系统

讲述:宇新

时长12:55大小11.80M

你好,我是宇新,《操作系统实战 45 讲》的专栏编辑。
除了负责更新课程里的内容,我也一直关注着小伙伴们的留言。这次,终于有机会自己也留一回言了,很开心能用编辑手记的方式,和你聊一聊我的想法。

这门课的独特之处

细心的小伙伴可能发现了,我们的开篇词标题是“为什么要学写一个操作系统?”注意,不只是学操作系统,而是学着去“写”一个操作系统。
你可能还会想,平时我们接触不到的“黑盒子”,现在却要我们自己写代码实现,听起来很有挑战啊?为什么会这样设计呢,且听我慢慢道来。
操作系统博大精深,甚至每个子模块单拿出来讲,都有无数的知识点,太容易只见树木不见森林。但用一个实战项目连起来的话,就能很好地帮助我们聚焦关键问题。
看似“写”操作系统,这是把难度升级了,其实是为了控制我们的作战范围。写操作系统的时候,涉及哪些关键要点,我们就相应地学习研究这部分内容。
现在成熟的操作系统,像是 Linux 系统,它的源码量级已是今非昔比,我们去看源代码总会晕头转向。但老师的课程像是一条线,把实战需要的东西都展示出来,想要深入研究的同学建议对照查漏补缺,然后继续跟着课程走,这样才能实现“螺旋式”进步。
如果你也喜欢玩游戏的话,估计有这样的体验,把游戏调成了无敌模式,很容易就会索然无味。没错,有挑战的游戏才好玩。有时候卡在某一处确实很痛苦,但是突破以后也会爽。你不妨把自己当作玩家,去攻克一个个操作系统的关卡。当然了,你也不是孤军奋战,遇到疑问,还可以通过学习、交流和讨论去解决。
课程的思路我就说到这里,如果你感兴趣,还可以看看我们的课程设计文档
更多课程设计的缘起,也可以看看 LMOS 老师好友 Yason Lee 的解读:《大咖助场|以无法为有法,以无限为有限》

怎样学习这门课

课程上线以后啊,LMOS 老师跟我都在关注大家的留言反馈。
学习这门课的同学身份各异,从学生党到已经退休的朋友都有,但共同特点就是对操作系统充满热情,因为这样一个专栏而结缘。无论是在课程交流群,还是课程留言区里,这两个疑问算是高频出现的。
学习这门课,我需要什么前置知识?
某个问题 / 知识点好难啊,我该怎么办?
这里我就从编辑的视角说说我的看法吧。
先说第一个问题,需要什么基础。我一直在琢磨这个问题背后的含义。同学们的水平参差不齐,有畏难心理这很正常,你学习课程的时候,其实是明确了自己哪里“不会”,换个角度想,这样学习的时候不就能有的放矢了么?
不少同学担心自己不是科班出身,其实 LMOS 也不是科班出身的,这些历史问题还是翻篇更好,你过去怎么样,并不代表你之后不可以学习、研究操作系统。而且,就算是计算机相关专业的同学,可能学生时代上的操作系统课程也没留下特别深刻的印象,考完试就还给老师的,也大有人在。
现在还没有看完的同学也不要着急,因为更新的速度肯定要比你们的学习速度快上不少。你需要做的是按照课程顺序持续学习,慢慢来,遇到不懂的,就多看几篇,多看几遍。
课代表陈诚同学说过一句话,我记得特别深,他是这么说的:
“其实,我觉得我们想学写操作系统,有时候是为了一碟醋包了一顿饺子,但是最终饺子是自己的了。”
我注意到有不少小伙伴为了打牢基础,为了跟上课程,去补充了汇编、C 语言,以及计算机组成原理方面的知识,我要给这些人点赞。
但是,就算你没有把那些图书从头看到尾,其实也同样可以跟着课程,循序渐进地学习。建议你边学边练,动手跑起来。哪怕最初你只能复制老师给的配套代码,但是只要肯用心,也会对操作系统有更深的理解。与其苦恼于自己基础不行,不如踏踏实实去学习精进。
为了让你明确每个模块的内容重点和难易程度,我为你整理了一张表格,你可以做个参考。
如果你还是想把操作系统的相关资料也都一并啃下来,那可以看看 LMOS 提供的参考书单,在学有余力的情况下拓展阅读。
1. 关于编译工具:LD 手册、GAS 手册、GCC 手册nasm 手册make 手册
2. 关于 GRUB:GRUB 手册
3. 关于 CPU:Intel 手册
4. 关于汇编:《汇编程序设计》;
5. 关于 C 语言:《C 语言程序设计现代方法》;
6. 关于操作系统:《操作系统设计与实现》。
如果你想参考优秀课代表的学习经验与方法,可以参考后面这些用户故事。
1. 零基础 yiyang 同学的课程实战经验
2. 优秀课代表 pedro 的技术学习方法
3. 技术发烧友 spring Xu 的课程学习思考
4. 安全产品研发 leveryd 的动态调试学习法
5. 课程优质笔记分享达人 neohope 的访谈加餐:技术学习与职业成长方法论
下面我再说说第二个问题,当你具体学习的时候,觉得某个知识点很难,应该怎么办?对于这个问题我想给你分享三个小建议。
第一个建议就是做好心理建设。
就拿不少同学都觉得头疼的内存管理来说吧。其实当时我在看这部分稿件的时候,也觉得压力山大。记得当时 LMOS 老师还鼓励我说,挺过去就好了。现在你看到的内存章节,其中 16~18 讲原先是一整块的内容,我们经过讨论优化,考虑让大伙儿更容易跟上,才拆分细化成了三节课。
内存是内核的内核,肯定很难。不过就像英语单词不能永远背到“abandon”一样,想要深入地探索操作系统,这关必须迎难而上。
第 19 课如何管理内存对象为例,不知道你看没看到置顶评论中“neohope”同学的学习笔记,建议重点关注一下他抓“关键”内容的能力。
古语说,不积跬步无以至千里。你可能会怀疑自己,但不必过度焦虑。如果咱们因为差距过大,而陷入弃疗状态,那就太可惜了。哪怕是“大佬”,也曾有萌新时期,基础不好就慢慢跟进。
第二个建议就是明确自己的需求,按需学习。
虽然没有什么“跳关”秘籍,但还是有些技巧让你快速掌握一节课内容的。没错,就像数据结构一样,每节课也有“内容结构”,想要快速消化,可以着重理一理后面这几点:
这个模块 / 这节课要解决什么问题(What)
思路是什么 / 为什么要这么解决(Why)
具体如何用代码实现(How)
你还可以自己动手用流程图画一下(pedro 同学推荐了此方法,你可以试试绘图工具 Graph-Easy),这样不容易迷路。
当然,如果你已经有不少的学习积累,或者目的不在于“全景浏览”和“扫盲”,而是想要更加深入,那你必然要花费更多苦工。操作系统是星辰大海,建议以你困惑的问题为导向,进行专项突破。
比如,第 23 节课 Slab 内存对象,来自课程交流 1 群的 zzyj 同学就分享了 Slab 作者写的参考文献,你不妨搭配使用。
我的第三个建议是,积极交流,在反馈和记录中激励自己。
虽然学习方法重要,但我们也不要沉迷于把时间消耗在“找方法”上。很可能“优质方法”给你节省的时间,还赶不上你在找方法这件事上花掉的时间。
一人计短,众人计长,我们课程开设留言区,在部落开话题(推荐你在话题下分享自己的学习收获,晒一晒实战截图),搭建用户交流群,就是为了让你的学习之旅不再孤单,让我们在分享交流中一同进步。
除了多交流,我也强烈推荐你学习留痕,把你的阶段性学习成果、经验记录下来,这些都能激励自己坚持学习。都说闻道有先后,术业有专攻。百科全书式的人毕竟是少数,但爱学习的小伙伴总会遇到志同道合的朋友。
今天的提问者,也许明天就有能力给别人解答问题了,这就是教学相长。我们的助教 Jason 提到:
“教别人是个沟通的过程,各种感官都会调度起来。调度越多,大脑参与理解记忆的部分就越多,以后回忆起来,搜索路径就越多。光看的话,只是眼睛。这跟实践出真知,道理类似。”
古语有云“读书有三到:谓心到,眼到,口到。”有了主动输出,可以带动你整理自己的理解,还锻炼了表达沟通能力,一举多得。
总之,你可以把这个专栏作为导航,但驾驶位你必须自己坐。临渊羡鱼,不如退而结网,坚持学习和实践,相信你会不虚此行。

1 号用户的独家体验

说了这么多,最后我还想说说做这门课的感受。从 5 月 10 日上线到现在,这个专栏已经伴随你 3 个月的时间了。不过,作为享受了抢先阅读福利的编辑,我这个 1 号用户跟这个专栏共度的时间要更久一些,算上专栏的前期沟通、筹备、打磨这些环节一共 8 个月。
记得 LMOS 跟我说过,当年他写书的时候,用了 13 个月写完了 22 万字,而专栏里只算课程内容文字就超过了这个数字,但我们却是用了 8 个月跑完了这场“马拉松”。当然,老师的工作量远不止这些,就比如 Cosmos 配套代码的设计跟实现,同样是一个极具挑战的大工程。
说句题外话,LMOS 兴趣广泛,爱好文学、音乐。日常写代码之余,他还会拍各种好看的照片(能当壁纸的那种),还是一个被代码“耽误”的摄影师。
但是他一旦进入工作状态,就会非常负责。操作系统的知识体量很大,为了把内容讲得更清楚,就需要老师花很多功夫对内容反复修订。除了对内容品质的高要求,老师也非常乐意回应大家的问题,在课程交流群里也很活跃。
LMOS 身体力行地给我上了一课,我确实被他的热情打动了,也希望这份热情能够通过专栏传递给你。
最后我想和你说的是,积极学习,但不要盲目轻信。我们在第 4 节课分析各种操作系统特点的时候,老师有条留言回复是这样说的:
“保持中立,务实求真,对比之下,方见真章。”
这让我发现,学习就是我们把自己当作一个“操作系统”,保持理性,客观公正,而且要不断优化自己对外界信息的整合能力,升级自己的思考方式。
知识不懂,借助搜索工具就能较快填补,但思维方式的迭代,还有经验洞见的积累,却需要长时间的努力。课程更新结束了,但我们的学习之旅还很漫长。升级认知,迭代自己的操作系统,这需要长期坚持。
另外,Cosmos 项目现在已经开源,也欢迎大家加入其中。希望《操作系统实战 45 讲》成为一座灯塔,为你指路,给你带来新鲜的认知,成为你探索星辰大海的引路者,加油!
分享给需要的人,Ta购买本课程,你将得20
生成海报并分享

赞 111

提建议

上一篇
开篇词 | 为什么要学写一个操作系统?
下一篇
01 | 程序的运行过程:从代码到机器运行
unpreview
 写留言

精选留言(17)

  • LockedX
    2021-09-22
    666,满分作文

    编辑回复: 哈哈哈,感谢你的鼓励啊,这个专栏交付下来让我成长很多。真心希望这个专栏对你有帮助,加油加油!

    17
  • 功夫熊猫
    2022-01-15
    为考研准备,书是看懂了,但感觉还是啥都没会。要不是专业课要考,我才不学呢,哼

    编辑回复: 你先想想看自己的学习优先级哈。另外说一下,操作系统专栏里的内容,更重在演示如何写操作系统,设计与实现操作性系统的思路、方法,不一定匹配考研考理论知识的需求。

    共 3 条评论
    2
  • 糊涂娃
    2022-07-05
    做了应用开发八年. 操作系统是心中的易筋经,是时候啃了. 感谢老师们的付出. 课程很好👍

    作者回复: 感谢支持

    1
  • doos
    2022-04-15
    我买了倪鹏飞的性能优化课程,但是里面很多内容看的比较费劲,虽然看了很多遍了,但是仍然有不懂的地方,所以我来补补底层系统级别的知识

    编辑回复: 加油哦,这门课也有点“硬”,需要耐心,加油,希望对你有帮助~

    1
  • wang_acmilan
    2021-12-27
    购买的很早,一直没有下定决心学习起来。 先动起来再说,哪有说一学就学会并掌握很好的知识。 “为了一包醋,包了饺子;最后饺子是自己的” 这个留言太形象了。

    编辑回复: 说了这么多你就记住了饺子么……哈哈,加油吧兄弟,有疑问欢迎留言区讨论。

    1
  • 李建飞
    2023-01-20 来自山西
    买了好久了,开始打卡学习

    编辑回复: 期待后面留言区里看到你的更多笔记或提问!

  • kingnk
    2022-11-30 来自湖北
    现在学校在上操作系统的课,发现自己真的蛮有兴趣的,但学校老师讲的实在是一言难尽,无法实战,真心希望能够通过这门课学习后手写一个简单操作系统!!

    作者回复: 多看几遍 就会了

  • 图·美克尔
    2022-10-25 来自北京
    我都不知道买了几年了,我以为我买了就是学了,结果不是,老老实实回来看

    编辑回复: 哈哈哈哈,买的是入场券,知识没法自行剪切复制到脑袋里,需要辛苦老铁亲自学习啦。 21年5月上线,如果你是刚上线就买了,那就是1年零5个月。 总之欢迎回归,继续努力。

  • 砥砺奋进
    2022-07-21
    加油加油,一季二季争取都啃下来

    作者回复: 加油

  • Silver heard
    2022-06-20
    真的买了好久了,假期到了,好好学习一下

    编辑回复: 加油!期待你后面在留言区里提问、打卡~

  • Le.Leon
    2022-06-03
    前来学习一番 祝我好运!

    编辑回复: 加油啊~

  • Geek_00618e
    2022-05-24
    优秀!!

    编辑回复: 学习加油~

  • 宇毛
    2022-05-05
    操作系统45讲简直就是马哲的一次实践课一样啊

    编辑回复: 我当赞扬理解啦,总之需要知行合一哦。加油~

  • 卖薪沽酒
    2022-03-08
    买了一直没空看, 还是要回来学

    作者回复: 哈哈

    共 3 条评论
  • ifelse
    2022-02-05
    开始学习

    作者回复: 加油

  • 蒲公英小孩
    2022-01-06
    我来喽,开始猛学

    编辑回复: 加油

  • Fan
    2021-12-17
    👍

    编辑回复: 谢谢认可,希望这门课对你有帮助!