103d619e

FTL OS

FTL OS(faster than light)是2022全国大学生计算机系统能力大赛内核实现赛道的参赛操作系统,来自哈尔滨工业大学(深圳)。FTL OS使用rust语言开发,基于rust async无栈协程进行上下文切换。FTL OS追求极致的性能与高可扩展性,支持qemu平台与Hifive Unmatched平台运行。

osISAcompetition

如何运行

qemu运行

qemu运行FTL OS必须在kernel文件夹中进行:

cd code/kernel

安装必要的rust riscv工具链:

make env

生成FAT32标准的文件系统,此命令只需要执行一次:

make fs-img

生成磁盘后就可以运行FTL OS了:

make run

fs-img中已经加载了决赛第一阶段的测试用例,如果想运行,请在进入OS的shell后输入:

run_all_case

shell将读取两个测试脚本并运行测试用例,下面是默认状态下的输出:

Rust user shell
>> run_all_case
========== START entry-static.exe argv ==========
Pass!
========== END entry-static.exe argv ==========
...

Hifive Unmatched的评测机模式运行

请直接在项目根目录下运行:

make all

此命令将激活feature:submithifive,初始化完成后依次运行所有的测试程序。文件系统将假设SD卡使用FAT32文件系统且只有一个分区。此模式使用离线编译,请确保本地已经按照大赛标准安装了rust依赖库,或使用qemu方式编译一次来下载相关的库。

Hifive Unmatched普通模式运行

请直接在项目根目录下运行:

make native

此命令仅激活feature:hifive,初始化完成后依次运行所有的测试程序。此模式用于本地调试,FTL OS没有读取SD卡分区表而是用magic number定位文件系统。如果文件系统初始化失败很可能是使用了错误的超级块号,请手动在这里修改BPB_CID为正确的超级块块号,SD卡分区表的读取将在未来加入。

项目人员

所有成员都来自哈尔滨工业大学(深圳)。

叶自立(队长):内核设计,异步、多核、文件系统设计。

樊博:linux实现研究,操作系统测试。

李羿廷:SD卡驱动实现,信号系统。

项目结构

doc:项目文档,包含项目文档文档目录内核设计

code:项目代码,各个文件夹的描述如下:

文件夹 描述
bootloader rust-sbi二进制文件
dependencies 项目依赖的外部库
disk 决赛第一阶段的发布版本,会被写入磁盘
easy-fs rCore-tutorial-v3的ext2文件系统,已弃用
easy-fs-fuse 通过easy-fs生成fs.img磁盘文件供qemu使用,已弃用
fat32 FTL OS的FAT32异步多核文件系统
fat32-fuse 通过fat32生成fat32.img磁盘文件供qemu使用
ftl-util FTL OS所有模块的基础库
init 这里的所有文件都会被写入磁盘
kernel FTL OS内核
testsuits-for-oskernel 初赛测试程序
libc-test 决赛第一阶段的测试程序源代码
user 修改自rCore-tutorial-v3,包含shell与测试程序
vfs FTL OS的异步多核虚拟文件系统

决赛

FTL OS已经在决赛第一阶段的评测中通过了全部测试点。