复习
本次课回答的问题
本次课主要内容
一万行代码得到一个真正的、好用的操作系统
接近完整的 UNIX Shell 体验
它真的是一个 “可用” 的操作系统!
21 个系统调用 (参考 sh-xv6.c 使用的系统调用)
这是一份包含了很多 Good Practice 的代码
RTFM
RTFSC
RTFSC: Makefile
make -nB
复习:“程序的执行 (状态变化序列) 有时比代码 (状态机) 更容易理解”
compile_commands.json
?回顾:进程 = 运行的状态机 (user/)
init.c
和 sh.c
(sh-xv6.c 的真身)MAXVA 处有两个神奇的页面
试一试 init 进程
proc.c
中包含一段 initcodeb *0
)_init
add-symbol-file user/_init
加载调试信息使用 QEMU
info mem
p/x $stvec
b *$stvec
)RISC-V user-level ecall 指令
在 xv6 中
trampoline.S (汇编代码)
struct trapframe
tf->kernel_trap
struct proc *p = myproc()
p/x *p
p/x *p->trapframe
(a7 = 0x7)scause == 8
(syscall)usertrapret()
返回