Skip to content

OSH-2024/Rage_of_dUST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rage_of_dUST

这里是中国科大 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下留言,期待你们的宝贵意见!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •