Skip to content

OSH-2024/mustrust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mustrust

你好,这里是中国科学技术大学2024春季学期操作系统原理与设计(H)课程的大作业仓库之一!

我们的目标是用Rust重写FreeRTOS并使其支持MMU!

团队成员

  • 阎昶澍 - 组长
  • 周翟恩和 - 组员
  • 薄震宇 - 组员
  • 郭东昊 - 组员
  • 王劲博 - 组员
  • Saint XK - 技术顾问

关于项目

FreeRTOS(Free Real-Time Operating System)是一个开源的实时操作系统内核,专为嵌入式系统和实时应用设计。它提供了一套轻量级的多任务调度、内存管理、任务通信和同步机制等功能,适用于各种嵌入式平台和设备。作为一个轻量级的操作系统,功能包括:任务管理时间管理信号量消息队列、内存管理、记录功能、软件定时器协程等,可基本满足较小系统的需要。

为了兼顾跨平台性和可移植性,以及对嵌入式系统资源的高效利用,FreeRTOS 使用 C 语言编写。但是使用 C 语言编写的 FreeRTOS 也存在一些缺点:

  1. 内存管理复杂性: C 语言本身对内存管理需要程序员手动管理,包括动态内存分配和释放。在 FreeRTOS 中,需要开发人员自行管理任务堆栈、消息队列、内核对象等资源,容易出现内存泄漏、内存溢出等问题。
  2. 指针操作风险: C 语言中的指针操作是一种强大但也容易出错的特性。在 FreeRTOS 中,对指针的不正确使用可能导致数据错误、内存破坏等问题,需要开发人员具备丰富的 C 语言编程经验和技能。
  3. 安全性风险: C 语言在内存管理、指针操作等方面容易引入安全性风险,如缓冲区溢出、空指针引用等问题。这些问题在嵌入式系统中可能导致系统崩溃或安全漏洞,需要谨慎处理。

我们的目标是使用以兼顾高安全性与高效率著称的Rust语言来改写FreeRTOS的核心代码。

此外,作为世界上最流行的实时操作系统,为了追求轻量级和高效性能,FreeRTOS却并不支持MMU。因此我们在改写的同时令其支持MMU功能,以提供虚拟内存支持、内存保护与隔离、内存共享、动态内存管理、多进程支持,增强系统的安全性、稳定性和扩展性。

项目进度

项目阶段 阶段时间 阶段简介/成果 分工安排
选题阶段 2.27 - 3.11 讨论一系列方向包括但不限于用Rust重写Linux内核部分代码,优化WSL,优化安卓手机杀后台情况,优化Windows内存管理,但因方向不明确,任务量过大或是已经有前人做过均被否决,但是确定了Rust改写这一主题。最终向老师求助,确定了用Rust改写FreeRTOS并使其支持MMU这一项目。
调研阶段 3.12 - 4.13 小组成员自行调研。4.1日小组成员讨论调研结果,初步完成调研报告,但较为粗糙。此后小组成员分工完善调研报告并完成可行性报告,具体分工见分工安排。 阎昶澍:负责可行性报告大部分内容
郭东昊:完善调研报告背景与结论部分
薄震宇:完善调研报告Rust部分及可行性报告技术依据和创新部分,整合调研报告
周翟恩和:完善调研报告及可行性报告MMU部分
王劲博:完善调研报告FreeRTOS部分
中期汇报 4.14 - 4.20 小组成员为中期汇报做准备,分工完成中期汇报PPT 王劲博:FreeRTOS部分
薄震宇:Rust介绍及技术依据部分
郭东昊:Rust与C的相互调研
周翟恩和:MMU部分
王劲博,阎昶澍:整合
小组讨论 5.3 5月3日小组成员进行了长时间讨论,总结了前半学期的工作进展并对以后的工作做了初步安排,会上确定了以下几点内容:
1. 在QEMU上试运行FreeRTOS 小步快跑学习Rust
2. 增加会议次数,尽量一周一次 联系咨询去年的队伍成员如何在QEMU上运行FreeRTOS
3. 读FreeRTOS源码
4. 轮流维护github仓库
薄震宇 - 郭东昊 - 王劲博 - 周翟恩和 - 阎昶澍
5. 小组成员分工阅读知乎文章(https://zhuanlan.zhihu.com/p/491470061)并于下周会议汇报进展。
知乎文章阅读分工:
3-6:周翟恩和

7-12:王劲博

13-18:阎昶澍

19-23:薄震宇

郭东昊负责进一步学习rust和c的交叉编译
小组讨论 5.12 组员学习了FFI,bindgen等工具的使用,完成了Rust与C的交叉编译 接下来的计划:将Demo中的main改写为rust,并成功编译
小组讨论 5.14 组员认真学习了往年的相关实验并与学长取得联系,发现往年的实验还有许多问题需要解决:
1. 改写代码的测试问题:去年的实验只为改写的代码专门编写了测试程序,并没有把所有的代码整合到一起运行,这不是我们的目标。
2. 交叉编译与上板:我们发现上板时为no-std环境,不支持std库。
更为深入的研究之后,我们发现实验的难度比我们想象的要大,并不是只需要完成MMU的部分。
先研究Rust与C的交叉编译,并在QEMU模拟器上运行,然后再上板,最后解决MMU的问题。
改写与交叉编译 5.14-7.5 组员进行对FreeRTOS源码的改写并研究如何进行交叉编译以在QEMU模拟器上运行 阎昶澍:改写与交叉编译
薄震宇:改写
郭东昊:改写
周翟恩和:改写
期末汇报 7.5-7.14 组员制作期末汇报的PPT与总结报告 阎昶澍:参与完成交叉编译与上板部分
薄震宇:参与完成大纲,引言与Rust改写部分
郭东昊:参与完成大纲,引言与Rust改写部分
周翟恩和:参与完成引言,Rust改写与MMU部分
王劲博:参与完成MMU部分

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published