这里是中国科大 OSH 课程 Rage_of_dUST 小组的大作业仓库,我们的目标是使用 Rust 语言改写 HuaWei LiteOS 的内存管理单元(MMU),利用 Rust 语言极高的安全性和并行性能,使得 LiteOS 中的 MMU 单元的安全性得到提升。
- 储溦
- 汪睿
- 杨译博
- 张博厚
项目阶段 | 阶段时间 | 阶段工作 | 工作分工 |
---|---|---|---|
第一次会议讨论 | 3.4 | 根据往届学长的项目特点和近几年操作系统的研究热点,初步确定以下几个选题方向:AIenpoweredOS;Rust改写OS的某个模块;Unikernel;分布式文件系统的搭建及文件系统特定性能的优化,决定每人负责一个方向进行调研 | 储溦:分布式文件系统的搭建及文件系统特定性能的优化; 汪睿:Unikernel; 杨译博:Rust改写OS的某个模块; 张博厚:AIenpoweredOS |
初步调研及选题 | 3.5-3.15 | 见工作分工 | 储溦:经过为期几天的调研初步确定了如下方向: 基于特定应用场景下通过参数调优的方法优化Ceph分布式存储系统的性能;借助已有的分布式存储和计算框架搭建一个分布式存储系统。 汪睿:Uni-Kernel是一种功能单一,仅加载必要库文件的内核.API齐全. 如MirageOS中利用vpnkit对docker进行改进. 可以仿照这种思路利用MirageOS的工具链对其他系统进行优化。 杨译博:用Rust改写文件事件监控系统fanotify。该系统特点:GO语言,监控进程, 以数据库形式做交互, 代码量较为友好(6700行)。 张博厚:MemGPT: 参考操作系统的虚拟内存设计大模型中的"虚拟上下文", 延长大模型可以使用的上下文数量。 |
第二次会议讨论 | 3.15 | 将这些天四个人的调研结果进行了汇总,并对每个方向的可行性和创新性进行了讨论,最终舍弃掉了AIenpoweredOS这一方向,因为将大模型嵌入操作系统对硬件要求最大, 已知Google Gemma(2B)会把4060显存跑满, 对LiteLlama-460M-1(460M), 本地部署建议仍为3090以上, 难以满足需求.学习难度大.需要兼顾操作系统内核与大模型相关知识, 且大模型一般用python语言编写,还需要学习python语言转换,建立与C(或其他语言)接口.综合考虑舍弃.最后整理好相关记录请教指导老师 | 无 |
与老师进行交流并进一步更细致调研 | 3.15-3.29 | 老师对我们给出的方向给出了评价和风险评估,指出我们在文件系统方向相关调研还不够充分,我们根据老师的建议,继续深入调研,并把Rust改写OS的一个模块作为主要方向 | 不做细致分工,大家一起对Rust可以改写的OS做一个整理和汇总,并评估改写代价和可行性。 |
第三次会议讨论 | 3.29 | 在指导老师的帮助下,确定选题为使用Rust改写LiteOS的其中一个极小内核,并根据LiteOS的代码树结构和具体代码量查看决定改写的模块为MMU,确定调研报告编写思路和分工 | 储溦:相关工作部分 汪睿:前瞻性/重要性分析, 杨译博与张博厚:项目概述与项目背景 |
选题确定,进行相关方向的调研学习,编写调研报告 | 3.29-4.1 | 进行调研报告的编写 | 同上 |
进行Rust语言的学习,并学习Rust与C的相互调用 | 4.2-4.11 | 系统学习Rust语言的语法,并寻找在C工程中替代一部分C源文件为Rust源文件后进行编译的方法,学会Rust与C的相互调用,准备先选择一个小部分进行改写探索可行性 | 集体学习Rust |
第四次会议讨论 | 4.12 | 确定可行性报告的分工,并且确定了准备先进行试验改写的部分:los_membox.c los_multipool.c los_memstat.c,其中multipool为MMU中内存池相关代码,memstat为MMU中内存状态相关代码,membox为静态内存相关代码,这三个模块较为独立且代码量均在200-300行的两级,适合试改写,并且由于多人改写同一文件的不方便性,所以我们挑选了三个小部分分别改写 | 储溦:仓库主页README的补充和可行性报告中理论依据的编写。 汪睿:改写membox 杨译博:改写memstat 张博厚:改写multipool 然后统一进行编译的尝试 |
可行性报告的编写及中期汇报的准备 | 4.12-4.19 | 由于初次改写,略显不顺,我们临时决定,放弃改写memstat , multipool , membox 的原计划,改为集中改写multipool.c,并进行改写后的测试,来说明改写的可行性,同时准备中期汇报的材料 | 储溦:对改写后的multipool模块进行整理并编写测试文件验证可行性 汪睿:进行可行性报告技术依据部分的编写 杨译博:继续探索Rust与C相互调用的更好方法 张博厚:对期中汇报ppt进行调整和修改,并进行汇报的准备工作 |
中期汇报结束,继续修改LiteOS源代码 | 4.20-5.5 | 中期汇报结束后,我们再一次进行了分工和改写尝试,决定在五一假期结束前将除los_memory.c之外的部分进行分工和修改,以便于后期进行los_memory.c的改写。 | 储溦:改写los_memory_internal.h 汪睿:完善los_multipool.c,改写los_multipledlinkhead.c 杨译博:改写los_membox.c 张博厚:改写los_memstat.c |
初步改写完除los_memory.c外的代码,并进行了初步的编译与语法错误修改,准备着手进行los_memory.c的修改 | 5.6-5.19 | 在这段时间,我们将各自五一分配的任务初步改写完,然后进行了编译报错的修改和调试,然后进行了los_memory.c的分工 | 储溦:1763--最后 汪睿:586--1221 杨译博:1--585 张博厚:1222--1762 |
四人均改写完los_memory.c的代码,并准备着手进行语法错误修改和报错 | 5.20-6.27 | 在这段时间,我们将各自之前分配的los_memory.c的任务改写完,然后准备统一进行编译报错的修改和调试, | 储溦:1763--最后 汪睿:586--1221 杨译博:1--585 张博厚:1222--1762 |
线下讨论进度和今后的计划安排 | 6.29 | 我们进行了详细的讨论,决定先拿出几天时间进行各自模块的报错和修改,然后统一进行汇总,再着手进行功能测试 | 储溦:修改1763--最后 汪睿:修改586--1221 杨译博:修改1--585 张博厚:修改1222--1762 |
首次模块合并,并准备功能测试 | 6.30-7.2 | 这几天时间,我们进行了进行了各模块的合并和调整,并将所有头文件包含,准备分别对动态内存(los_memory_all.rs)和静态内存(los_membox)进行实机的功能测试 | 储溦:进行模块整合和错误修改 汪睿,杨译博:进行los_membox的测试demo的编写 张博厚:进行los_memory_all的测试demo的编写 |
修改报错,完成功能测试,准备期末汇报 | 7.3-7-5 | 这几天时间,我们完成了对动态内存(los_memory_all.rs)和静态内存(los_membox)的实机功能测试 | 储溦:进行错误修改,维护头文件的版本 汪睿,杨译博:进行los_membox的demo测试 张博厚:进行los_memory_all的demo测试 |
如果对该项目有任何疑问和意见,欢迎联系我们!
联系方式:qq群869897150
或者在issues
下留言,期待你们的宝贵意见!