bitos 基本实现了文件系统、内存管理、进程管理三大模块。基本实现了32个系统调用,能够通过初赛平台测试。
bitos
├── bootloader/ rust-sbi
├── dependencies/ 各项开源库
├── modify-img/ 将shell程序和其它想测试的程序写入文件系统镜像
├── os/ bitos内核
├── user/ 用户态程序
├── Design.md/ 设计文档
├── Design.pdf/
├── Dockerfile/
├── Makefile/
├── rust-toolchain.toml/ 工具链配置
├── sdcard-riscv.img/ 文件系统镜像
└── README.md
应比赛要求,文件系统目前还仅采用了fat32。同时设计OSinode作为虚拟文件系统的一部分。
目前仅实现单核。调度机制采用的是stride调度,并且可动态地设置优先级。
用户空间和内核空间独立,采用SV39。
主要实现重点在于fat32的移植和改进,以及各种系统调用的实现。
目前主要遇到的困难大多数在于互斥访问、意外地址访问导致系统崩溃。
1.文件系统的松耦合和补充工作:目前bitos文件系统的虚拟文件系统没做好,导致和fat32耦合比较深,需要进行改善来兼容其它文件系统。也意味着需要进一步移植其它文件系统。 2.多核处理:目前bitos采用单核设计,需要拓展到多核。 3.进程管理改善:目前进程管理有些臃肿,代码质量不高。 4.用户管理:目前没有用户管理。 5.网络:目前不支持网络功能。 6.内存空间管理:目前分为用户空间和内核空间,可以增加cache以加速,同时考虑是否可以重新规划内存管理,增加除sv39以外其它的内存分页模式。 7.应用移植:尝试移植一个编辑器和简单的编译器。 8.IO处理:尝试异步内核设计 9.驱动管理:尝试增加其它驱动
bitos主要基于rcore camp的ch6版本进行构建。 上下文切换,很大部分内存管理,小部分进程管理参考于rcore的ch6。 文件系统fat32主要参考了FAT32库,做了部分完善。