数字系统 = 状态机
数字系统的设计 = 定义状态机
C/Java/Python 程序 = 状态机
编程 = 描述状态机
write(fd, buf, size)
持久化数据指令集体系结构
编译器 (也是个程序)
操作系统 (也是个程序)
M1 - pstree
M2 - plcs
M3 - sperf
M4 - crepl
M5 - freov
“操作系统” 课给了你程序的 “最底层” 的状态机视角
a.out
是什么?a.out
执行的第一条指令在哪里?printf
是如何被调用的?a.out
执行了哪些系统调用?a.out
执行了多少条指令?刷一下手机,你的计算机系统经历了非常复杂的过程
操作系统课给这个稍显复杂的过程一个清晰的轮廓
Operating systems (最重要的那个 piece): you're delighted
你不再惧怕任何 “system”
也不再惧怕任何 “需求” 的实现
“一切皆状态机”
“死锁检测: lockdep 在每次 lock/unlock 的时候插入一条 printf”
“文件系统是磁盘上的一个数据结构”
如何为网络上的多台计算机提供统一的应用程序接口?
Microkernel, Exokernel, Unikernel
文件系统没能解决的需求
“数据库”:虚拟磁盘上的数据结构
std::map
)