Skip to content
Wang Runji edited this page Mar 12, 2019 · 1 revision

record:dzy

  • 加入 lab0 : 学习 Rust => 王润基. 先做一遍 CS140e 的 lab0.

lab1:

  • 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 当白纸并且改进.

lab2

  • chyu: 是不是拆成两部分, 一个是简单的全局 pframe alloc.

  • chyu: 用 linked list allocator 的类似接口, 让学生实现 first fit 算法 etc.

  • chyu: lab2.2 是不是绕开自映射? Linux 没有自映射是否可映射?

    • 可以考虑线性平移: 类似 Linux.

lab3

  • wrj: 置换部分, 比较难的就是: 如何在 Rust 中安全地实现.

  • chyu: 重点是缺页中断, 置换算法倒不是重点.

  • chyu: swap-in 和 swap-out 要说清楚.

    • chyu: 其实 mock 硬盘就够了.
  • chyu: copy-on-write 应当放到 fork 之后去讲. 去掉.

  • xy: 算法模块化怎么样? wrj: 没想清楚, 不少 unsafe.

lab4

  • zw 来做.

  • chyu: lab4 作为参考, 让学生有总体概念之后, 能够回答实验原理中的问题.

  • xy: 如果用户态就可以接受中断, 是否可以改进?

    • zw 弄清楚, 写的更加完善
    • 线程创建切换, 支持内核, 还可以讲讲 BBL 处理中断?
  • chyu: 就不搞线程迁移了

    • 定期唤醒进程执行: 现在已有, 不过将已有的去掉然后让学生实现

lab5

  • 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 验证

lab6

  • 开始多核了. 多核是第二步的. 最初还是依照现在的实现单队列.

  • 现有一个调度框架.

  • 练习可以选择

    • 调度算法
    • CPU 附属
  • jyq 来验证

lab7

  • 如 spinlock 也许在前面实现的, 但是详细介绍要放到 lab7.

  • 原理都差不多.

  • 练习

    • 用同步互斥的经典问题
    • 同步互斥原语本身
  • lc 来验证.

lab8

  • 基本的测试

  • 然后 waht?

  • xy: wrj 来改文档...

  • dzy 来验证.

lab9

  • 网卡的支持

  • jg 来做

Oths

  • 按照 chyu 给出的框架, 完善文档

  • 代码中注释都是英文