Target
项目重构计划
物理内存管理
- 实现伙伴系统管理物理页
- 规范位图分配器的实现和接口
- 调整slab系统的分配大小,允许调整上限值
- 设计实现类似
vmalloc
的内核内存分配接口,2MB-4MB大小由伙伴系统直接分配,4MB大小大小以上的从虚拟地址空间分配
虚拟内存管理
- 重构
page-table
的实现,规范接口- 使用来自
Arceos
的实现,添加了额外的函数可以更灵活管理页表
- 使用来自
- 添加内核缺页异常处理
-
[x] Copy on Write Lazy allocation - fork - -> Cow
- mmap/sbrk –> Lazy
Device
- Cache layer
锁
- 规范互斥锁和睡眠锁的实现
- 自旋锁
- 睡眠锁
- 考虑是否需要关中断
- 考虑多核上的锁与单核的差异
- 考虑如何在其它独立模块中引入锁:独立模块不依赖内核,但是使用的锁有可能需要内核支持
- 锁的抽象层
中断处理
- 多核启动
- 处理多核上的外部中断事件,比如串口
- 只在启动核设置外部中断
进程/线程管理
- 添加合适的数据结构并修改相关方法,在进程已有的抽象上添加线程抽象,需要保证两者使用同一个数据结构,参考linux系统与另一个同学实现的
Maturin
- 添加多核调度的支持
- 内核线程支持
同步
- 信号量
文件系统
- 修复已知错误
readdir
函数mount
- 实现
devfs
- 规范内核的设备文件系统实现,将探测得到的设备或者其他可抽象的数据结构创建为设备文件
Special
- GUI
embedded-graphics
较为底层,需要在此基础上构建slint
较为成熟,并且可以在裸机器上运行,可以配合embedded-graphics
使用- 简易显示程序
- 键盘、鼠标事件(需要更好的支持)
- shell
- Network
- smoltcp
- Board
- VisionFive2
- unmatched
- 华山派 :页表项有特殊设置,暂时不管
- Arch
- riscv
- loonarch64