https://jyywiki.cn/OS/2023/build/lect4.ipynb
理解操作系统的新途径
回顾:程序/硬件的状态机模型
计算机软件
- 状态机 (C/汇编)
- 允许执行特殊指令 (syscall) 请求操作系统
- 操作系统 = API + 对象
计算机硬件
- “无情执行指令的机器”
- 从 CPU Reset 状态开始执行 Firmware 代码
- 操作系统 = C 程序
一个大胆的想法
无论是软件还是硬件,都是状态机
- 而状态和状态的迁移是可以 “画” 出来的!
- 理论上说,只需要两个 API
dump_state()
- 获取当前程序状态
single_step()
- 执行一步
- gdb 不就是做这个的吗!
操作系统 “玩具”:设计与实现
操作系统玩具:API
四个 “系统调用” API
- choose(xs): 返回
xs
中的一个随机选项
- write(s): 输出字符串
s
- spawn(fn): 创建一个可运行的状态机
fn
- sched(): 随机切换到任意状态机执行
除此之外,所有的代码都是确定 (deterministic) 的纯粹计算