Skip to content

OS 2019 大实验初稿

chyyuu edited this page Mar 28, 2019 · 34 revisions

OS 2019 大实验部分内容

不仅仅局限在下面的题目, 可参考一下 2018年的OS课大实验. 如果有自己很想做的题目, 可以给老师发电邮阐述一下并与老师协商.

扩展和完善rcore对真实应用的支持

支持MIT的Biscuit能支持真实应用

  • 目标
  • 现状 (end)
    • (~2019.03.05)初步支持部分cli apps. 由于musl已经支持redis, nginx,目前对litc的支持暂停,主要精力会放在musl一端。
  • Need To Do,Working In Progress
    • 在物理机上运行rcore
    • 在内核态支持82599 10G网卡
    • 分析,对比并优化rcore性能
    • 在用户态支持82599 10G网卡(为此需要内核支持,用户空间的物理内存映射,用户发起DMA操作,用户态中断等探索)
    • 设计kernel architecture和usr-ker interface,让kernel component运行在用户态,让user component运行在内核态(如fs, tcp/ip, driver)

支持 libc/rust std 运行在rcore rv64/aarch64/x86-64

  • 目标
    • 扩展rcore kernel以支持musl libc需要的syscall, 使得网络,图形等各种rust/c/c++应用(on musl, rust std)能运行在rcore上.
    • 进一步: 支持动态链接库, 支持glibc, 支持rustc在rcore上运行
    • 并列: 把rpi3 OR ...打造成一台有GUI用户界面可玩游戏的PC机 (有点象https://www.redox-os.org/)
    • 并列: 做出有wifi的高级网络设备
    • 并列: 在riscv/FPGA上做出带rcore支持的有网络路由器的的高级网络设备
    • 并列: 在labeled cpu(即pard cpu的升级版)支持带新型硬件隔离机制的rcore支持,实现面向real-time/data center的高确定性的OS
  • 现状
    • (~2019.03.05)初步支持了musl,特别是实现对socket, TLS的支持,可以在其上运行busybox, nginx, redis(有一定的修改)等。为各位做大实验的同学实现对rcore的改进以支持各种syscall,从而为支持各种应用打下了一个很好的基础。
  • Need To Do,Working In Progress
    • 在编译&运行其他APPs(cli,gui,net,... apps)中,可发现kernel缺少或功能不全/有bug的情况,然后进一步改进kernel

将 rcore 移植到 MIPS 平台

  • 大实验目标
    • 将 rcore 完整移植到 MIPS32 Rev II 架构(参加今年龙芯杯)
      • 构建 Rust 在相应平台的工具链
      • 修改所有硬件相关代码(分页,中断等)
      • 移植硬件驱动(首先基于 QEMU 以及 virtio)
      • 保证上述成果(musl on rcore)在 MIPS 上依旧能够正常运行,测试一些程序支持
  • 远期
    • 在龙芯实验箱上进行系统设计(DDR 控制器、网络控制器、显示控制器)
    • 使得系统能够在龙芯实验箱上启动
    • 为龙芯实验箱的硬件移植驱动(包括显示屏、网卡等)

safety on rcore

  • 目标
    • 参考hyperkernel等国际科研成果, 用rust lang 写规范并验证rcore符合规范
    • 可参考2018 os课程大实验1 2

autotest, unwinde, debug on kernel(rcore/ucore...)

  • 目标
    • 参考syzkaller,kAFL的国际科研成果, 调试分析rcore
    • 可参考2018 os课程大实验1
  • 现状
    • (~2019.03.05)支持初级的unwind kernel calling stack
    • 正在添加autotest的支持
  • Need To Do,Working In Progress
    • 动态死锁检测,可参考linux kernel的实现

参考资料/相关项目

问题思考

  • 基于哪些应用场景,应该放置哪些(传统内核/用户)软件或功能到特权级/用户级?
  • 特权级与用户级的界限如何划分?
  • 如何在用户态实现全局优化?
  • 如何高效实现内核态与用户态的交互?
  • 现有硬件下,如何实现用户态中断?
  • 内核态软件需要支持多种应用麽?

paper/project/info list