Skip to content

OSH-2024/mkdir

Repository files navigation

mkdir:用 Rust 改写 Linux

mkdir Logo 欢迎来到 mkdir 团队的官方 GitHub 仓库,我们的项目致力于用 Rust 语言改写 Linux 操作系统中的部分模块。我们的目标是利用 Rust 的安全性和性能,为世界上最具影响力的操作系统之一带来全新的视角。

团队成员

  • 潘铂凯 - 组长
  • 胡揚嘉 - 组员
  • 王翔辉 - 组员
  • 刘宇恒 - 组员
  • 金培晟 - 组员
  • Saint XK - 技术顾问

关于项目

Linux 一直是开源世界的基石,其多功能性和稳定性使得其应用广泛。随着 Rust —— 一种为安全和速度而设计的语言的出现,我们看到了将 Linux 引入新时代的机会。我们的目标是保持 Linux 的本质,同时充分利用 Rust 的现代特性。

为什么选择 Rust?

  • 内存安全:Rust 的所有权模型确保了安全的内存管理,降低了错误和漏洞的风险。
  • 并发性:Rust 对并发的处理方式允许更安全、更高效的多线程编程。
  • 性能:Rust 提供与 C 相媲美的性能,使其成为系统级编程的理想选择。
  • 社区支持:Rust 拥有日益增长的社区,并在各个领域越来越多地被采用。

项目进度

项目阶段 阶段时间 阶段简介/阶段成果 工作分工
初步选题调研阶段 3.3-3.9 在这一阶段,我们小组通过对各自心仪的方向进行调研,结合操作系统的实验工作方向以及目前大模型应用、Rust改写等计算机领域研究趋势进行资料查找与阅读,最终在3.9号的交流分享中总结出了一下几个初步选题方向,为下一步的确定选题工作奠定基础。

方向[1]: 用Rust写一个loongarch64、mips或者RISC-V的微内核
方向[2]: 用Rust优化linux内核的一部分,如kvm相关的部分,或者优化loongarch的linux系统的一部分
方向[3]: 借助网上现有开源的大模型,通过租用云服务器(如AutoDL)进行大模型的训练以及调整(将训练重点放在操作系统这一指定方向来避免难以想象的工作量)使之可以适用于并优化现有操作系统的交互接口
方向[4]: 探索操作系统虚拟化技术的实现与优化。侧重于两种主流的开源虚拟化技术——XEN和KVM,理解它们的工作原理、优缺点以及适用场景。核心是使用Rust语言实现一个虚拟化环境,并尝试进行优化。
方向[5]: 使用Rust语言来重新实现和优化ROS的MMU,利用Rust语言的内存安全性和无需垃圾回收的特性,以期提高ROS在内存管理方面的效率和可靠性。侧重于理解ROS中MMU的工作原理、当前存在的优缺点以及适用场景,并尝试通过改进和优化来提升其性能。
方向[6]: 在ROS中,通信是一个至关重要的组成部分,其安全性和性能直接影响着ROS系统的稳定性和效率。故我们计划重新设计和优化ROS的通信模块,以提升通信的安全性和性能。
方向[7]: 用RUST改写分布式文件管理或计算系统,使其在原有基础上完善安全性相关问题并且一定程度上实现性能提升。
各成员依据各自感兴趣的方向进行调研,故不做过多任务分配要求
分析筛选选题调研阶段 3.10-3.16 在这一阶段,我们对以上提及的七个方向进行了进一步的可行性方案调研,并且与指导老师沟通了初步的选题思路,最后,在老师的指导帮助下以及通过我们的调研分析,我们综合考虑了硬件基础、潜在挑战、功能实现、性能优化、安全性等因素,决定优先考虑方向[2](用Rust优化linux内核的一部分,如kvm相关的部分)以及方向[5](使用Rust语言来重新实现和优化ROS的MMU)这两个选题,以待下一步的调研。 由于各问题无明显分割,需要整体看待,集体解决,故不做过多任务分配要求
深入专项分析两大选题调研阶段 3.17-3.23 通过了一周的专项调研以及在课后与指导老师的思路交流,我们由于改写ROS会涉及到底层通信,其中网络作为系统领域和OS并列的另一大领域,潜在困难会远多于另一个方案,并且ROS的性能/功能瓶颈获取并不明显受到该实验改写方向的影响(相对而言,ROS的通信瓶颈更多的在网络拓扑和网络通信方向,而不是在本机的代码执行效率上) ,故我们选择了将用Rust改写Linux作为了最终选题。就这一选题方向我们小组也做了大量的调研,如其目前实现面临的困难(如在同一宏内核中Rust语言与C语言共存所可能带来的风险等,由于具体部分在立项依据以及困难与挑战部分均有详细阐述,在此不再过多赘述)并且作为进一步的拓展部分,我们还调研了Q-Learning这一机器学习算法的应用,可以将其作为Rust改写Linux存储管理调用部分的拓展工作。 潘铂凯、王翔辉、刘宇恒着重调研选题一
胡揚嘉、金培晟着重调研选题二
可行性分析部分的调研以及初步调研报告编写阶段 3.24-3.30 在这一阶段中,我们总结此前做过的一系列调研与讨论工作,通过具体分工进行初步调研报告的编写,并且我们对在接下来的可行性验证工作以及正式实验工作必然会用到的语言——Rust进行了初步的集体学习,为了接下来小组实验的顺利进行,这一步的工作是有效且必要的。 潘铂凯:立项依据、调研过程
王翔辉:相关工作
胡揚嘉:项目背景、遇到的困难以及(可能的)解决方式
金培晟:前瞻性分析、重要性分析
刘宇恒:总结归纳、整理排版
可行性分析专项调研阶段 3.31-4.5 在这一阶段中,我们小组将就用Rust改写Linux这一过程中具体会遇到的种种问题进行可行性的专项分析,我们希望通过实机测试为主、资料调研为辅的形式给出更为实际具体、更有说服力的可行性分析,其中我们就RUST改写Linux具体安全性与性能提升方面以及RUST改写具体实现方式、RUST与C语言环境的兼容性、RUST与C语言函数之间的相互调用进行了专项调研,并且我们根据具体的Linux6.8.4源代码进行了改写模块的初步筛选与分析。 潘铂凯、王翔辉、胡揚嘉:合作探究如何将RUST放入C语言环境,与编译相关的问题,如何用Rust调用C语言库等关于Rust改写方向的问题
刘宇恒、金培晟:合作探究Rust改写Linux的性能提高以及安全性影响的检测与分析
可行性分析最终调研与报告编写阶段 4.6-4.10 在这一阶段中,我们将继续对该项目的可行性进行分析,通过进一步已有改写部分代码的比对与测试,结合我们对于RUST改写优势的理解,筛选出最终希望改写的Linux模块,以获得最佳的改写效果。并且,我们将在这一阶段完成可行性调研的报告,确定最终立项。 潘铂凯:模块分析与筛选部分初步汇总整理
胡揚嘉:RUST改写Linux的具体技术支持部分汇总整理
刘宇恒、金培晟:进行并行代码等测试代码的分析比对,RUST改写Linux的具体理论支持部分汇总整理
王翔辉:创新点总结分析,各模块的梳理补充,整理排版
可行性报告收尾与中期汇报筹备阶段 4.11-4.21 在这一阶段中,我们结合此前的大量调查和Linux源代码分析,并已经通过小组讨论确定了最终的改写模块——bpf-trace模块(kernal/trace/bpf-trace),因此我们将在完成性能测试报告部分的同时重点结合此模块进行可行性报告的收尾。此外,我们小组还将尝试实现对Linux中的一个小模块的Rust改写和编译,这将为我们的可行性报告提供强有力的事实依据。最后,我们还将筹划将在下一周到来的中期汇报,结合调研报告和可行性报告,完成相应的ppt以及讲解思路整理。 潘铂凯:可行性报告模块选择部分的总结以及创新点编写,完成可行性报告的最终汇总
胡揚嘉、金培晟、王翔辉:合作实现用Rust改写Linux中的一个小模块并实现编译,完成相关过程的实验梳理总结
刘宇恒:完成中期汇报展示所用的ppt以及讲解思路整理
学期中任务处理以及总结改进阶段 4.22-5.4 在这一阶段中,由于学期中繁多的任务(OSH实验、CODH实验、CODH调研报告...)以及部分组员面临着期中考试的压力(量子物理期中...),我们小组经过讨论后决定设置该缓冲阶段,使得小组成员们有余力来处理这些繁重的任务。当然,在这次讨论中我们总结了此前工作的经验与不足,并且对可行性分析报告进行了更进一步技术支持的补充。(实现了对Linux中一个小模块的Rust改写和编译以及相关的技术分析) 缓冲阶段,故不做任务分配要求,学有余力的小组成员可以进一步学习Rust语言以及Linux改写相关的知识
正式改写阶段 5.5-6.28 在这一阶段中,在处理完此前存在的诸多事项后,我们小组正式开始了对bpf-trace模块的改写,我们计划实时上传自己的改写工作到各自的改写文件夹中,并且通过公共交流栏的探讨稳步推进改写工作,由于其是该项目的核心部分,这一阶段预计将持续很长时间,但是在这个过程中,我们仍会根据目前小组的改写进度进行不定期的小组讨论,并且进行汇总更新,及时梳理总结改写经验并且集中解决问题 不再具体分工,但会根据Main Rewrite Work_Summary中各成员的贡献度进行提醒督促
改写中期讨论(第一次) 5.21 在本次讨论中,我们小组集中讨论解决了结构体的改写、部分函数改写及引用、函数模块之间的调用等问题,并且对进一步的工作进行了规划与分工。此外,本次讨论中还分析了未来可能遇到的几个风险挑战以及在测试编译上可能出现的巨大难题,因为交叉编译以及难以找到相关的Linux测试环境,预计到时会遇到很大的阻碍,我们小组将在这一过程中修找解决方法 不再具体分工,但会根据Main Rewrite Work_Summary中各成员的贡献度进行提醒督促
改写中期讨论(第二次) 6.5 在本次讨论中,我们小组相互交换了在此前改写中得到了一些经验,并且一起分析处理了一下如特殊类型的指针、变量类型处理等比较棘手的问题,并且对后期将要进行的代码汇总工作进行了一定程度的规划,由于改写工作量很大(原C语言3500line,Rust改写后预计5000line),我们小组决定在原有项目栏督促的基础上,由组长在小组交流群中统一分配规划进度,保证改写项目的顺利完成 仍然不进行具体分工,但会根据Main Rewrite Work_Summary中各成员的贡献度进行提醒督促,并且在交流群中统一进行改写行数方面的分配
Rust改写代码汇总查错阶段 6.29-7.1 从这一阶段开始,我们小组将在研讨室中进行全天性的工作,在这一阶段中我们小组汇总了先前分工完成的各部分改写代码,进行全面的查错修改,并且包括统一修改结构体定义和应用、统一添加函数库等相关工作,保证改写项目的正确性和健壮性 在研讨室中集体合作,灵活分工,不再具体安排
功能测试阶段 7.2-7.3 在这一阶段中,我们小组将运用在上一阶段中经过一系列查错修改以及模块完善所得到的最终改写代码,尝试对其进行相关的功能测试,并且将在下一阶段中生成与之相关的报告 在研讨室中集体合作,灵活分工,不再具体安排
各项报告生成阶段 7.4 在这一阶段中,我们小组将从代码正确性和健壮性分析报告、代码安全性分析报告、代码功能测试报告三个方向对此前的工作进行整体的分析分析整理,并且通过具体代码的分析以及实际具体的功能测试等各个方面分析、测试所改写的Rust代码的完成度和优良特性 胡揚嘉、刘宇恒:代码正确性和健壮性分析报告
潘铂凯:代码安全性分析报告
王翔辉、金培晟:代码功能测试报告
期末汇报筹备阶段 7.5-7.6 在这一阶段中,我们小组将综合上一阶段中完成的各部分报告,并且加之以此前收集调研的各种信息,进行期末汇报的筹备(演讲稿撰写,ppt制作,演讲练习)。此外,在进行期末汇报筹备的同时,我们也将同步进行项目最终报告的初步撰写,为期末汇报的ppt制作提供一些更有条理的信息支持 金培晟、胡揚嘉、王翔辉:期末汇报筹备
潘铂凯、刘宇恒:项目最终报告初步撰写
当前阶段:最终报告撰写阶段 7.7-7.14 在最后的这个阶段中,我们小组将结合我们此前的成果、各部分报告以及期末汇报,完成最终报告的撰写,以全面的展示我们小组工作各个方面所取得的成果,实现该项目的结项 潘铂凯:背景与调研/改写代码的安全性提升分析/总结、不足与展望/最终报告汇总与整理
金培晟:项目整体介绍/改写代码的功能测试展示
刘宇恒:技术路线/改写代码的整体分析以及部分模块展示分析

联系方式

如有任何关于项目的询问或讨论,欢迎通过 issueQQ群:881491834 联系我们小组。

祝编码愉快!

mkdir 团队

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages