复习
本次课回答的问题
本次课主要内容
这次支持了分页和图形界面 (似乎是搬运了一些素材?)
发扬大学生 RTFM & RTFSC 的光荣传统
The Open Group Base Specifications Issue 7 (2018 Ed.)
API 意味着可以互相模拟
操作系统默默帮你承载了更多
理解老系统是如何实现、遇到怎样的问题
公理:没有完美的程序员。
推论:
越小的系统,错误就越少。
C 作为一个有 Undefined Behavior 的语言,是复杂系统的灾难
Microkernel (微内核) 应运而生
sh-xv6.c 到底执行了哪些 “就算丢给另一个进程,还得请求操作系统” 的操作?
微内核 (microkernel)
听说 “微内核” 有更好的可靠性?
seL4
首先,用适合描述行为的语言建一个模型 (seL4 有两层模型)
def rr_sched(cpu):
cpu.threads = cpu.threads[1:] + cpu.threads[:1]
assert anything_you_need
return cpu.threads[0]
再写一份 C 代码
就可以去证明操作系统的 functional correctness 啦!
“The essential observation about abstractions in traditional operating systems is that they are overly general.”
操作系统就不应该有任何策略
今天我们有虚拟机 (和硬件虚拟化) 了
Unikernel: 内核可以非常小 (应用不需要的特性都直接删除)
本次课回答的问题
Take-away messages