参加课程设计的同学,需要每周(一般是周六上午)交流一次,主要交流内容是同学和老师/助教在本周的进展情况介绍,问题,解决方案、计划和建议等方面讨论,帮助各位同学顺利完成基本实验和大实验。
在第四周末检查5个实验的完成情况和对操作系统的掌握情况
- OS实验指导(代码/指导/测试/测例等):https://github.com/learningos/ 中的 u/rCore-Tutorial-*-2024S
一人一队,鼓励各队之间多合作,形成共赢。每周交流一次,在交流前,需要完成周进展纪要文档。在第十六周末检查大实验的最终完成情况,并鼓励参加全国大学生操作系统比赛(可以是暑期课程内容,以最终系里公布情况为准) 对大实验最终完成情况的检查内容包括:每周进展纪要,代码仓库的更新情况,代码展示,总结报告,总结slide等
- 支持Linux App(如healer, syzkaller, ConfFuzz, DDS等,不用都支持)的组件化宏内核框架和kernel直接相关内核模块改进和优化
- 支持Linux App(如healer, syzkaller, ConfFuzz, DDS等,不用都支持)的基于异步协程的组件化宏内核框架和kernel直接相关内核模块改进和优化
- 兼容redox/seL4/zircon等的组件化微内核框架和kernel直接相关内核模块改进和优化
- 支持ARM or x64的组件化hypervisor框架和hypervisor直接相关内核模块改进和优化
- 支持Rust STD库的组件化unikernel框架和kernel直接相关内核模块改进和优化
- 扩展Verus安全验证的lab1-5的rCore-Tutorial内核
- 扩展Prusti安全验证的lab1-5的rCore-Tutorial微内核
- 扩展Verus安全验证的Rust-based seL4组件化微内核
- 扩展Prusti安全验证的Rust-based seL4组件化微内核
- 扩展Verus安全验证的Rust-based hypervisor的信息不干扰(参考asplos24-dai.pdf)
- 扩展Prusti安全验证的Rust-based hypervisor的信息不干扰(参考asplos24-dai.pdf)
- 基于OS无关内核组件设计,实现对AI加速单元:如Intel NPU、瑞芯微RK3588 NPU,k230 NPU等)的内核驱动支持
- 基于OS无关内核组件设计,实现并扩展 x64/arm/rv64/loongarch的HAL(硬件抽象层)
- 基于OS无关内核组件设计,实现并扩展实现支持OS在用户态运行的HAL(zCore有这样的libos HAL实现)
- 基于OS无关内核组件设计,实现并扩展对starfive星光二代开发板的多种外设驱动支持
- 基于OS无关内核组件设计,实现并扩展对树莓派4开发板的多种外设驱动支持
- 基于OS无关内核组件设计,实现并扩展对通用PC计算机的多种外设驱动支持
- 基于OS无关内核组件设计,实现并扩展对virtio spec的多种virtio外设驱动支持
- 基于OS相关/无关内核组件设计,实现并协程/线程/进程/扩展调度(linux支持的各种调度算法等)/内存分配(minmalloc等)/虚存管理/文件系统(ext4等)/网络协议栈/同步互斥/中断处理/驱动 的内核组件设计/优化/完善
- 扩展带Verus(或Prusti/Kani等)安全验证属性的OSkernel相关/无关的内核组件(如上所示的各种内核组件)
- 支持用户态中断的新型操作系统内核设计(在研的学术科研项目)
- 使用最新的LLM/AI技术进行设计OS kernel等(也可以是设计CPU/Compiler等探索)相关的研究
- 采用智能翻译等完成rCore Tutorial <--> uCoreTutorial,即实现两种OS的相互翻译
- 采用MoE/Multi-Agent Collaboration或最新的LLM API/talk等自动化完成一个教学型的OS Kernel/Compiler
- 使用和扩展模糊测试(Fuzzing)/符号执行(symbolic execution)框架或工具,通过模糊测试/符号执行的方法,查找课程测试用例 r/ucore tuturial os kernel, 全国OS比赛内核赛道二等奖以上的os kernel的bug(让系统崩溃,异常退出等)。
注:上述内容绝大部分都有前期工作可以借鉴,也有同学/工程师在做,在下面的参考资源中大部分有提及,并可在前期的基础上进一步改进完善,可进一步联系助教和老师了解相关题目的细节。同学们也可提出自己的题目,并与老师交流,得到老师同意后可开展。
上面有2023春季学期操作系统课程大实验的参加者和做的题目。 每位同学做的是某个操作系统的某个组成部分或一个比较完整的系统软件,如操作系统/hypervisor等。题目来于自科研项目,开源项目或自己的想法(需要与老师交流并得到老师的认可)等。
- https://github.com/rcore-os/arceos 源代码仓库
- https://oslearning365.github.io/arceos-tutorial-book/ 还未完成,仅供参考
- http://record-1257797626.cos.ap-beijing.myqcloud.com/cicvedu/100476113/1708953075907.mp4 该视频在第27分钟开始讲解了arceos的基本概念和编译运行等。
- healer:基于Rust编写的fuzzer
- syzkaller
- ConfFuzz - Fuzzing for Interface Vulnerabilities
- GUSTAVE - Embedded OS kernel fuzzer
- tsffs: A snapshotting, coverage-guided fuzzer for software (UEFI, Kernel, firmware, BIOS) built on SIMICS
- Hydra: An Extensible Fuzzing Framework for Finding Semantic Bugs in File Systems
这是部分可供参考的OS&Hypervisor
- unikernel形态的组件化内核ArceOS
- 基于ArceOS的宏内核形态的组件化内核Starry kernel(支持RISC-V/x64/ARM/LoongArch)
- 宏内核形态的组件化内核Byteos kernel(支持RISC-V/x64) 2023OS比赛一等奖
- 宏内核形态的组件化内核Alien(支持RISC-V星光二代开发板) 2023OS比赛一等奖
- 宏内核形态的组件化内核UMI (支持RISC-V华山派开发板) 2023OS比赛特等奖
- 基于ArceOS的微内核形态的组件化内核os kernel
- 基于ArceOS的Hypervisor形态的组件化hypervisor
- Rust-base seL4微内核操作系统
这是部分与OS无关的kernel components,有一些不一定特别完善,供参考
- 基于C的ext4 crate
- 基于Rust的ext4 crate
- Rust-based tcpip stack: smoltcp
- C-based tcpip stack:lwip
- virtio drivers
- e1000 NIC driver
- Cadence Macb ethernet driver on Sifive fu740 board
- RISC-V星光二代开发板的网卡驱动
- RISC-V星光二代开发板的SD卡驱动
- nvme driver
- isomorphic_drivers
- os scheduler
- os memory malloc subsystem