-
Notifications
You must be signed in to change notification settings - Fork 26
workshop 20190116
- 加入 lab0 : 学习 Rust => 王润基. 先做一遍 CS140e 的 lab0.
-
rust 重写 bootloader: 可能工作量大得多 cy: 可以选择部分完成, 最后选择部分做的好的 qualify for 大实验
-
xy: 每一个实验至少一个必做, 然后其他的可以设计成挑战
-
bootloader 写一个精简版, 用 Rust
- zw: 精简版也很困难, 要完成完整的中断和 trapframe, 需要 sbi
- cy: 其实就是难度稍微大一点
- jg: 让 lab1 完全跑到 m 态上
- cy: lab1 的目的是知道和硬件打交道的方法而不是写 os
- wrj: 是非常困难的
-
xy: 还有一个办法是不考虑 bootloader, 而是处理 kernel 的中断. 重点工作还是 kernel 的初始化和中断.
-
xy: bootloader 就是要求看懂.
-
xy: 现在不好评估练习难度, 那就出几个让他们选.
-
jg: baremetal 上的 helloworld / echo, 但是不引导
- 支持
-
zw: PMP 和 os 没什么关系. cy: 去掉.
-
xy: lab 里面给出完整手册的链接, 但是和实验极度相关的部分还是提, 否则看手册这件事太 daunting.
-
lc: 重点是否要放到 BBL 中? xy: 不能. 重点要是 boot strapping.
-
zw: 复杂的 from to host 在模拟器中实现.
-
xy: lc 除了 lab1 当白纸, 还要后面来做 SMP.
- xy: SMP 怎么做? 1-4 是单 core 之后变成多 core 并且还要把之前的弄清楚
- wrj: 从最开始都是多核?
- jg: Rust 强制让开发者考虑并行, 因此单核到多核的转移代价并不大.
-
lab1 给 zw. zw 补分析, lc 当白纸并且改进.
-
chyu: 是不是拆成两部分, 一个是简单的全局 pframe alloc.
-
chyu: 用 linked list allocator 的类似接口, 让学生实现 first fit 算法 etc.
-
chyu: lab2.2 是不是绕开自映射? Linux 没有自映射是否可映射?
- 可以考虑线性平移: 类似 Linux.
-
wrj: 置换部分, 比较难的就是: 如何在 Rust 中安全地实现.
-
chyu: 重点是缺页中断, 置换算法倒不是重点.
-
chyu: swap-in 和 swap-out 要说清楚.
- chyu: 其实 mock 硬盘就够了.
-
chyu: copy-on-write 应当放到 fork 之后去讲. 去掉.
-
xy: 算法模块化怎么样? wrj: 没想清楚, 不少 unsafe.
-
zw 来做.
-
chyu: lab4 作为参考, 让学生有总体概念之后, 能够回答实验原理中的问题.
-
xy: 如果用户态就可以接受中断, 是否可以改进?
- zw 弄清楚, 写的更加完善
- 线程创建切换, 支持内核, 还可以讲讲 BBL 处理中断?
-
chyu: 就不搞线程迁移了
- 定期唤醒进程执行: 现在已有, 不过将已有的去掉然后让学生实现
-
jyk 来做.
- 不是特别平台相关因此 jyk 来做, 他也做 ARM.
-
chyu: 练习做什么?
- chyu: 信号? xy: 那是单独的不在这里做
- wrj: 有挑战的一个是 fork 一个是 exec.
- chyu: 动态链接库? 难度太大.
-
xy: lab4, lab5 学生看完文档, 然后自己实现 fork 和 exec.
-
jyk: 是否将 lab4 和 lab5 合成一个?
- xy: 反对.
- 代码实现基本完全一样
- chyu: 希望让学生学到的东西不一样
-
lab4: 更多的是切换. lab5: 更多是加载退出以及 syscall.
-
xy: dzy 验证
-
开始多核了. 多核是第二步的. 最初还是依照现在的实现单队列.
-
现有一个调度框架.
-
练习可以选择
- 调度算法
- CPU 附属
-
jyq 来验证
-
如 spinlock 也许在前面实现的, 但是详细介绍要放到 lab7.
-
原理都差不多.
-
练习
- 用同步互斥的经典问题
- 同步互斥原语本身
-
lc 来验证.
-
基本的测试
-
然后 waht?
-
xy: wrj 来改文档...
-
dzy 来验证.
-
网卡的支持
-
jg 来做
-
按照 chyu 给出的框架, 完善文档
-
代码中注释都是英文