- 微信id:chyyuu ,limingth
- email:yuchen AT tsinghua.edu.cn ,limingth AT gmail.com
欢迎感兴趣做下面题目(过程和结果开源)的朋友,联系我们,我们会定期组织自学习和讨论组件化内核设计与实现。
- easyfs
- fatfs
- lose-net-stack 已经实现了
udp
等 - smoltcp
- embedded-graphics (2D graphics library)
- virtio-blk
- nvme
- virtio-net
- e1000
- virtio-input(键盘/鼠标)
- virtio-gpu(图形显示)
- pci
- rcore-tutorial-v3
- rcore-tutorial-in-single-workspace
- aceros
- Rust-for-Linux
- RVM
- (入门)改进virtio-drivers crates,支持virtio协议的各种虚拟外设/功能模块
- (入门)把新的crates组合入rcore-tutorial-v3 或 rcore-tutorial-in-single-workspace
- (中级)把已有crate组合入新的OS中,如aceros
- (高级)把已有crate组合入新的OS中,如Rust-for-Linux
- (中级)log xv6fs文件系统
- (高级)ext2文件系统
-
lose-net-stack 已经实现了
udp
等,可以对lose-net-stack
进行扩展 -
(中级)添加
lose-net-stack
tcp
支持 -
(高级)添加
lose-net-stack
ipv6
支持 -
(中级)添加
lose-net-stack
icmp
支持
或者基于 lose-net-stack
编写相关的用例.(也可以使用 smoltcp
)
- (中级)基于
lose-net-stack
的dns
client
(udp
协议) - (中级)基于
lose-net-stack
的ntp
client
(udp
协议 网络时间协议,可以通过网络同步操作系统时间,可以补全很多个人编写的os
时间不准或者不支持的问题。)
基于 virtio-gpu
在rcore-tutorial等
-
(中级)利用字库显示文字(unicode)
bmp
文件的解析和显示ico
文件的解析和显示jpg
文件的解析和显示png
文件的解析和显示
-
(高级)在有对图片的和字库的支持下,可以再结合
virtio-input
实现鼠标的移动和键盘输入的显示。
- (初级)支持virtio协议的各种虚拟外设/功能模块
- (中级)各种Qemu中模拟设备的驱动程序crate
- (初级)扩展/改进rcore-tutorial-v3,支持各种内核crates
- (初级)扩展/改进rcore-tutorial-in-single-workspace,支持各种内核crates
- (中级)扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。
- (高级)设计实现TPU/GPU/APU driver crate on rcore-tutorial..Rust for Linux,可运行在RISC-V or ARM开发板上
- (高级)扩展 Rust for Linux,更好地支持跨OS的内核相关crates
- (高级)扩展 Rust for Linux on RISC-V 32/64
- (高级)扩展RVM,支持可调度/多核支持的Hypervisor,可运行在ARM上
- (高级)移植各种OS/Hypervisor在x86-64\RISC-V64/AARCH64\LoongArch上
- 线程调度算法
- 内存分配算法(优化现有的buddy system)
- 同步互斥机制(支持线程的阻塞机制:即有等待队列的条件变量或信号量)
- 移植到ARM上
- 文件系统(高性能嵌入式实时日志文件系统,可参考xv6fs )
- 基于virtio-gpu的framebufer driver(可参考rcore tutorial v3的ch9 branch 中给的OS)
- e1000网卡驱动(可参考 rcore/zcore中的e1000网卡驱动)
- sd卡驱动(基于qemu或树莓派)
- nvme驱动(参考zcore的nvme驱动)