简洁事务型文件系统
本项目要求实现一个基于乒乓日志(Ping-Pong Log)的事务型文件系统。 本项目要求: i. 设计并实现自己的乒乓日志文件系统在持久存储介质上的布局。 ii. 在Linux或其它OS上实现基于i布局的文件系统原型。 iii. 使用Ping-Pong日志技术,实现掉电后的快速回滚。
2021全国大学生操作系统比赛的“OS功能设计”赛道
- 以小组为单位参赛,最多三人一个小组,且小组成员是来自同一所高校的本科生(2021年春季学期或之后本科毕业的大一~大四的学生)
- 如学生参加了多个项目,参赛学生选择一个自己参加的项目参与评奖
- 请遵循“2021全国大学生操作系统比赛”的章程和技术方案要求
李航,自主可控实验室负责人,隶属西安电子科技大学计算机网络与信息安全国家级实验教学示范中心。
-
github https://github.com/lhlab
-
email funfind@qq.com
难度依据实现的程度共分3级:
i. 容易
实现仅支持单进程对文件系统的操作,并支持乒乓日志和掉电回滚
ii. 中等
实现支持乒乓日志、掉电回滚,还支持单个事务的回滚和提交。并且支持多个进程对文件系统进行操作
iii. 难
针对嵌入式实时应用环境,提出自己的非严格ACID模型(需要证明该非严格ACID模型的合理性),并实现支持该ACID模型的文件系统。该文件系统的实现要求:支持乒乓日志、掉电回滚,单个事务的回滚和提交、支持多个进程对文件系统进行操作。并且,有相应的提高文件系统cache命中率的优化算法,以及提高transaction I/O性能的算法。
i. 面向嵌入式实时领域。
ii. 支持乒乓日志和掉电回滚。
iii. 难度由低到高,提供三种不同层次的实现级别。最高难度要求提供理论模型和实现优化。
iv. 不限操作系统平台。 但需要能够在QEMU仿真器上运行,建议硬件平台是RISC-V。
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
- 木兰 PSL v2 (LICENSE-MULAN or https://opensource.org/licenses/MulanPSL-2.0)
目标共分三级,同学可以依据自身情况,选择合适级别的目标
i. 一级目标
实现仅支持单进程对文件系统的操作,并支持乒乓日志和掉电回滚。需要提供完善的qemu虚拟机镜像,以及可复现的测试用例。
ii. 二级目标
达到第一级目标的基础上,支持多进程对文件系统的操作,并允许单个事务的回滚和提交。因为此时允许多进程对文件系统进行访问,那么,此时,加锁的设计很关键。需要开发者仔细考虑,什么样的并发锁协议适合嵌入式实时领域下的需求。这需要在最后的作品中说明。
iii. 三级目标
达到第二级目标的基础上,要提出自己的适用于嵌入式实时领域中文件系统的ACID模型,这要求开发者具有一定的理论抽象能力。需要注意的是:开发者必须能够将该模型与实际的实现相对应,即实际代码中必须能够反映该ACID模型的特征。此外,需要从提高文件系统cache命中率和提高transaction I/O性能两个角度对文件系统进行优化。