(How) 怎样学操作系统?

(How) 怎样学操作系统?

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

其实这个问题是提给我的






怎样教操作系统?

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

“教” 与 “学”:反思

高考给了大家站在这里的机会,但也让大家学会:

  • 在短期有益、长期无益的小事上付出大量时间
  • 本能拒绝高风险、高回报的事物

center

2024 南京大学《操作系统:设计与实现》
center
(How) 怎样学操作系统?

“Just for Fun” 是一个遥远的梦想?

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

“教” 与 “学”

每个人都向往大学的新生活

但迎接你的是当头一棒:“我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期的体验彻底粉碎了。”——CS 自学指南

热情且聪明的学生……听说相对论、量子力学……但是,当他们学完两年以前那种课程 (斜面、静电这样的内容) 后,许多人就泄气了——The Feynman Lectures on Physics

那个点亮大家心中梦想的人在哪里?

Education is not the filling of a pail, but the lighting of a fire ——William Butler Yeats

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

我读书的时代 (AD 2009):教

老师们都说操作系统很难教

  • 使用豆瓣评分高达 5.7/10 的 “全国优秀教材”
    • 没有正经的实验 (16-bit code)
    • 错误的工具链、调试全靠猜
    • 大家为了微不足道的分数内卷
      • 为失去 integrity 获得分数的行为沾沾自喜
      • 国家的脖子已经在那个时候卡断了

同时,课堂教学是最容易被改善的

  • 抄国外的就行了
  • 但他们竟然连这个都不会
2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

我读书的时代 (AD 2009):学

发现了一些惊为天人的好东西!

center

有了一点点梦想,不想再做一个咸鱼了

  • 每天晚上床上刷 Wikipedia (管它看得懂看不懂)
  • PhD 开始坚持阅读 Communications of the ACM 杂志 (至今)
2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

我教操作系统的时代 (AD 2018):教

海量的前端程序员重塑了开源生态

  • “编程” 不再是少部分 geek 的特权
  • 海量的开源资源、爱好者项目……

有了一本合适的新教材

也看到了 bar 在哪里

  • 至少有希望可以和外国人一样好了!

但迎接你的是当头一棒:领导竟让我跟在老教师屁股后面先学着?脾气暴躁的我当然是不会允许这样的事发生的!

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

我教操作系统的时代 (AD 2018):学

Altair 8800: The Machine That Launched the PC Revolution

  • 1975 年,Bill Gates 和 Paul Allen 在 Havard 的 PDP-10 上实现了 Altair 8800 的 Full System Emulator,并开发了 Altair 8800 上的第一个 BASIC 解释器
  • 带着打孔纸带飞机去了 MITS 公司演示 (并获得了成功!)
    • 它们都是退学青年 (极高风险,极高回报)

我们花了 40 年,赶上了!

  • 今天人人都能实现 Full System Emulator
  • 有了一套很不错的编程实验
2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

今天,时代又变了 (AC 3):教

我竟然进入了南京大学计算机系教学委员会

  • 似乎是一个从未投过反对票的组织

变好了

  • 看到了受到过良好训练年轻人的努力

也没完全变好

  • 竟然有老师在上课用秒懂百科讲概念!
  • (看来是时候应该去投点反对票了)
2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

今天,时代又变了 (AC 3):学

“学习” 从未如此高效;“因材施教” 终得以实现

GPT-4-turbo:……分子是由很多小颗粒组成的……电子会与这些小颗粒相撞,并反弹回来,就好像你向一个山丘丢石头,石头会弹回到你跟前一样……就好比你闭着眼睛,通过听石头落地的声音判断山丘的形状一样……(Cost: ~$0.01)

center

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

操作系统……






到底怎么教、怎么学?

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

《操作系统》课希望我们成为的人

试着去成为一个有 CS 梦想的人

  1. 是一个合格的操作系统用户
    • 会 STFW/RTFM/ATFAI 自己动手解决问题
    • 进而,不怕使用任何命令行工具
      • vim, tmux, grep, gcc, binutils, ...
  2. 不怕 (或者爱上) 写代码
    • 能管理一定规模 (数千行) 的代码
    • 在出 bug 时默念 “机器永远是对的、我肯定能调出来的”
      • 然后开始用正确的工具/方法调试

“学渣” 们:不要 “架空学习”,先回头练习核心素质

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

0. 学术诚信 (Academic Integrity)

Academic integrity 不是底线,而是 “自发的要求”

  • 对 “不应该做的事情” 有清楚的认识
    • 不将代码上传到互联网
    • 主动不参考别人完成的实验代码
    • 不使用他人测试用例 (depends)
  • 因为你有梦想,所以才会挑战自己
    • 高风险、高回报
    • Academic misconduct: 低风险、得到分数、失去训练

我们有一些预防措施

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

1. 成为 Power User

center

(该漫画已经成为历史)

感到 Linux/PowerShell/... 很难用?

  1. 没有建立信心、没有理解基本逻辑 → 系统性自学
  2. 没有找对材料 → 多问 “能不能再做点什么”
  3. 没有用对工具 → 请教别人 (包括人工智能)
2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

1. 成为 Power User: 新时代、新方法

center

2024 南京大学《操作系统:设计与实现》
(How) 怎样学操作系统?

2. 开始写代码

命令行 + 浏览器就是全世界 (例子:聊天室)

center

  • 不需要讲语言特性、设计模式……编程中自然而然会有体会

开始你的《操作系统》课旅程!

  • (或者退课)
2024 南京大学《操作系统:设计与实现》