forked from rcore-os/rCore
-
Notifications
You must be signed in to change notification settings - Fork 27
OS 2019 大实验初稿
chyyuu edited this page Mar 28, 2019
·
34 revisions
不仅仅局限在下面的题目, 可参考一下 2018年的OS课大实验. 如果有自己很想做的题目, 可以给老师发电邮阐述一下并与老师协商.
- 目标
- 不修改测试用例,同时在rcore和Biscuit上运行基准测试用例,并对比性能
- https://github.com/mit-pdos/biscuit/blob/master/biscuit/user/c/litc.c
- 现状 (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)
- 目标
- 扩展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 完整移植到 MIPS32 Rev II 架构(参加今年龙芯杯)
- 构建 Rust 在相应平台的工具链
- 修改所有硬件相关代码(分页,中断等)
- 移植硬件驱动(首先基于 QEMU 以及 virtio)
- 保证上述成果(musl on rcore)在 MIPS 上依旧能够正常运行,测试一些程序支持
- 将 rcore 完整移植到 MIPS32 Rev II 架构(参加今年龙芯杯)
- 远期
- 在龙芯实验箱上进行系统设计(DDR 控制器、网络控制器、显示控制器)
- 使得系统能够在龙芯实验箱上启动
- 为龙芯实验箱的硬件移植驱动(包括显示屏、网卡等)
- 目标
- 参考syzkaller,kAFL的国际科研成果, 调试分析rcore
- 可参考2018 os课程大实验1
- 现状
- (~2019.03.05)支持初级的unwind kernel calling stack
- 正在添加autotest的支持
- Need To Do,Working In Progress
- 动态死锁检测,可参考linux kernel的实现
-
从零开始用rust写blog_OS on x86_64
- 浅显易懂,step by step,手把手地教你用RUST写OS on x86-64
- 从零开始用rust写OS on riscv32
-
rcore labs
- 助教与老师写的手把手地教你用RUST写OS on rv32 (alpha,初级,需要不断完善和大家的参与)
- 还有一个可在树莓派物理硬件上跑的(pre-alpha, 初级,需要不断完善和大家的参与)
- alpine linux with musl libc
- janus linux with musl libc
- musl-cross-make
- pre-built musl-gcc for all archs
- 基于哪些应用场景,应该放置哪些(传统内核/用户)软件或功能到特权级/用户级?
- 特权级与用户级的界限如何划分?
- 如何在用户态实现全局优化?
- 如何高效实现内核态与用户态的交互?
- 现有硬件下,如何实现用户态中断?
- 内核态软件需要支持多种应用麽?
- Extensibility, Safety and Performance in the SPIN Operating System
- FlexSC: Flexible System Call Scheduling with Exception-Less System Calls
- The benefits and costs of writing a POSIX kernel in a high-level language
- Rethinking the Library OS from the Top Down
- LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation
- Process-in-Process: Techniques for Practical Address-Space Sharing
- To FUSE or Not to FUSE: Performance of User-Space File Systems
- The FUSE Wire Protocol
- When eBPF Meets FUSE
- Performance and Extension of User Space File Systems
- Buffered FUSE: optimising the Android IO stack for user-level filesystem
- Performance Improvement with Zero Copy Technique on FUSE-based Consumer Devices
- SafeFS: a modular architecture for secure user-space file systems: one FUSE to rule them all
- Optimizing Local File Accesses for FUSE-Based Distributed Storage
- Diving into SDCardFS: How Google’s FUSE Replacement Will Reduce I/O Overhead
- IXY user space network driver in high-level langs
- LKL: The Linux kernel library
- mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems
- Why do we use the Linux kernel's TCP stack? & discuss in hacker news & other why ...
- Why Fastly loves QUIC and HTTP/3