教育背景
专业课程:Java 程序设计、C 语言程序设计、Java 开发高级、数据库应用、网页设计基础
工作经历
主要从事 Rust 编写操作系统的工作,工作内容包括宏内核和微内核,以及操作系统模块化的相关内容。核心工作围绕 Rust 生态的微内核、操作系统模块化开发、硬件抽象层、多架构支持、seL4 研究以及开发环境优化展开。不仅涉及底层操作系统内核的开发,还包括架构移植、用户态兼容性研究、模块化拆分与仓库管理等多个方面。
个人荣誉
专业技能
关键词:Rust、C/C++、操作系统、Linux、Python、JavaScript、TypeScript、Java、html
我对计算机底层编码和运行原理的研究感兴趣,关注如何充分发挥硬件性能,并熟练使用 Linux 进行开发。大学及此前学习过硬件开发与基础电子设计,也涉及网站开发,熟悉 C/C++、JavaScript、TypeScript、Java 等语言。从大三开始接触 Rust,并学习使用 Rust 编写操作系统,此后,我持续从事这一方向的工作。同时,我对新技术保持浓厚兴趣,正在尝试深入学习 FPGA。
项目经验
我主要使用 Rust 编写操作系统内核及其相关模块,涉及宏内核和微内核的设计与实现。参与或主导的项目包括 ArceOS、seL4、reL4、ByteOS、ByteOS-Microkernel、rCore-Tutorial-v3 等内核,以及 PolyHAL 这一支持 LoongArch64、AArch64、RISC-V64、x86_64 四种架构的硬件抽象层。此外,我还开发了 lose-net-stack 这样的小型网络协议栈,并研究如何在微内核之上运行 Linux 程序,构建了 rel4-linux-kit 以支持 Linux 进程的运行。
我主要参与电子信息和机器人竞赛,喜欢折腾开发板和电子模块,动手实践各种硬件技术。偶尔会开发网站和小工具,不仅用于个人学习,也通过接单或项目赚取外快。大学期间就读软件工程,主修 Java,主要学习课程相关的信息。利用闲暇时间编写并开源了一个轻量级 ORM 框架 yfSql,使小型项目能够更方便地操作数据库。
开源仓库
rel4-linux-kit 是一套在 sel4/rel4 之上运行 linux 程序的套件,可以在 sel4/rel4 之上运行一个或多个传统的操作系统内核。提供了很多 sel4/rel4 的封装,也提供一套机制让传统的宏内核程序将系统调用转换为 IPC。 同时提供很多基础服务,可以通过 IPC 进行调用,例如 ext4, fat32, uart, block device 等。
polyhal 是一个支持 x86_64、aarch64、riscv64、loongarch64 的硬件抽象层,可以用于快速构建裸机程序。能够支持不同裸机程序或操作系统运行。
ByteOS-V2 支持 x86_64、aarch64、riscv64、loongarch64 的操作系统宏内核,基于 lose-net-stack 支持网络,能够运行网络程序,支持 fat32、 ext4、ramfs 文件系统,能够运行在虚拟机、华山派 cv1811h、vision five2,loongson 2k1000 等开发板上,也能运行在 x86_64 物理机上,支持 sdmmc、virtio、nvme 等驱动,能够运行大量 linux 程序,busybox、lua、lmbench、iozone等。
byteosc 将 Byteos 进行 c 语言重写,早期使用 CMake 工具,后来转换为 xmake 工具,支持 ext4 文件系统,支持 aarch64、riscv64 文件系统。
一个精简的微内核,支持 x86_64、aarch64、riscv64、loongarch64 四种架构,能够运行 block 和 fs 服务,能够运行简单的 shell 程序。
lose-net-stack 一个使用 rust 编写的精简网络协议栈, 支持 TCP、UDP、IP 协议。支持 ipv4 地址和 arp 协议。能够运行一个 http-server 且在局域网能够访问到。
在 riscv64 架构的支持运行部分 linux 程序的操作系统宏内核,支持 fat32,ramfs 文件系统,能够在 k210 开发板上运行,可以运行 busybox、lua、lmbench 等 linux 程序。在 2022 “全国大学生计算机系统能力大赛操作系统设计大赛”OS内核实现赛全国二等奖。
一个独立的 JDBC ORM 框架,快速操作数据库,利用 sql 语句生成数据库操作。方便小型项目快速完成与数据库的对接和操作。主要通过 Java 的反射机制来获取 sql 语句并生成代码。支持 Mysql 和 sqlite。
将聚水潭网站的货物信息抓取到本地,并通过 html + typescript 开发 UI 来显示过滤后的数据,利用 electron 在多种平台上运行。
社区贡献
linkme 是一个使用 rust 编写的帮助收集静态对象并快速遍历的库,允许在多个 crate 或模块中定义静态项,并在一个统一的地方遍历所有的静态项。在当时的版本的裸机平台由于 rust 对于 llvm 的标签支持不完善,无法顺利收集到所有的信息。在我使用的时候发现了解决方案,并为其修复了裸机平台的支持。
ArceOS 是使用 Rust 编写的一个模块化 Unikernel。在其开发的早期,我为其添加了 sqlite3 支持和简单的 fs 支持。
rel4 是一个使用 rust 重写的 sel4 内核,保持了与 sel4 的全兼容,我为其优化了代码,并将其迁移到 aarch64 架构下。能够在 aarch64 下运行。
ArceOS 是使用 Rust 编写的一个模块化 Unikernel。我 为其添加 loongarch64 的支持