数字系统 = 状态机
数字系统的设计 = 描述状态机
C/Java/Python 程序 = 状态机
编程 = 描述状态机
write(fd, buf, size)
持久化数据指令集体系结构
编译器 (也是个程序)
操作系统 (也是个程序)
M1 - pstree
M2 - libco
M3 - sperf
M4 - crepl
M5 - freov
“操作系统” 课给了你程序的 “最底层” 的状态机视角
a.out
是什么?a.out
执行的第一条指令在哪里?printf
是如何被调用的?a.out
执行了哪些系统调用?a.out
执行了多少条指令?perf stat -e instructions:u
操作系统实现选讲
刷一下手机,你的计算机系统经历了非常复杂的过程
操作系统课给这个稍显复杂的过程一个清晰的轮廓
Operating systems (最重要的那个 piece): you're delighted
你不再惧怕任何 “system”
也不再惧怕任何 “需求” 的实现
“一切皆状态机”
“死锁检测: lockdep 在每次 lock/unlock 的时候插入一条 printf”
“文件系统是磁盘上的一个数据结构”
如何为网络上的多台计算机提供统一的应用程序接口?
Microkernel, Exokernel, Unikernel
文件系统没能解决的需求
“数据库”:虚拟磁盘上的数据结构
std::map
)在课堂上时,你可以思考一些已经很清楚的基本东西。这些知识是很有趣、令人愉快的,重温一遍又何妨?另一方面,有没有更好的介绍方式?有什么相关的新问题?你能不能赋予这些旧知识新生命?……但如果你真的有什么新想法,能从新角度看事物,你会觉得很愉快。
学生问的问题,有时也能提供新的研究方向。他们经常提出一些我曾经思考过、但暂时放弃、却都是些意义很深远的问题,重新想想这些问题,看看能否有所突破,也很有意思。
学生未必理解我想回答的方向,或者是我想思考的层次;但他们问我这个问题,却往往提醒了我相关的问题。单单靠自己,是不容易获得这种启示的。 —— Richard Feynman
课程主线
代码
课程主线
其他
Bill Gates 在 1975 年开发 Altair BASIC 时在 Harvard 的大型机上实现了全系统模拟器 (Intel 8080A)
任何颠覆性的技术,在诞生的那一刻都是 “简单” 的
大型项目持久的竞争力和生命力
高考:为大众提供了阶级跃升的途径
代价:过度强化的训练和 (部分) 扭曲的价值观
“我也想去改变世界,但拿什么去改变呢?”
重新定义 “专家”。
我们的征途是星辰和大海。
(没什么前途的老学长对你们的期待)