#### sv6 + commuter

##### sv6 on riscv

1. 链接生成可启动代码（运行时库，Code Model， 原子操作）
2. 单核中运行（页表，trapframe和context，中断和系统调用等）
3. 多核(BBL，每一个核要有自己的数据结构)
4. 真实硬件上运行(真实硬件内存的内容是随机的，真实硬件有缓存和TLB)

##### commuter

- Analyzer：符号化执行
- TestGen：生成测试代码，寻找潜在的并行化问题
- Mtrace：运行TestGen的测试代码

##### 知识点

RV64, X86-64, 符号化执行， Z3 SMT求解器， Commuter设计

#### Rustable on Raspberry3(Rust)

[Stanford CS140e](https://web.stanford.edu/class/cs140e/)

#### Ucore on X86_64(Rust)

参考的rust_os, [redox](https://github.com/redox-os/redox), [blog_os](https://github.com/phil-opp/blog_os)

#### Ucore on X86_64(Rust)王润基

参考Blog: Writing an OS in Rust

Rust的安全哲学，正确性证明放在语言本身。

#### 在小脚丫FPGA上跑OS

#####  CPU

指令集类似于MIPS，19个寄存器

##### 模拟器设计

加载img->检查->取址->循环

##### recc OS

有8个进程：3号进程监听串口，4号进程处理串口输入

##### LLVM后端修改

后端：指令选择->指令调度->寄存器分配->指令优化->目标代码生成

链接器的实现

#### Ucore with GUI(Raspberry PI Zero)

##### VideoCore IV驱动的移植

VC4渲染管线，Control Lists(BCL和RCL)，着色器

Linux + Mesa框架的实现

##### OpenGL ES的实现

#### Kernel Bug

Dr.checker框架

#### OS正确性

测试用例 or 形式化验证

##### Hyperkernel on Riscv

- 链表修改为数组
- MMU：内核不用，用户使用
- 使用HVM
- Syscall：6个无用，11个小改，6个大改

##### 形式化验证

#### 文件系统正确性

#### 应用程序稳态测试系统

#### Ucore+ on Riscv64

##### 移植到Riscv64

##### LKM

##### SMP

资源层次化很重要

#### Syzkaller in Ucore

Syzkaller=Manager+Fusser+Executor

