参加课程设计的同学,需要每周(一般是周六上午)交流一次,主要交流内容是同学和老师/助教在本周的进展情况介绍,问题,解决方案、计划和建议等方面讨论,帮助各位同学顺利完成基本实验和大实验。
在第四周末检查5个实验的完成情况和对操作系统的掌握情况
- OS实验指导(代码/指导/测试/测例等):https://github.com/learningos/ 中的 u/rCore-Tutorial-*-2025S
一人一队,鼓励各队之间多合作,形成共赢。每周交流一次,在交流前,需要完成周进展纪要文档。在第十六周末检查大实验的最终完成情况,并鼓励参加全国大学生操作系统比赛(可以是暑期课程内容,以最终系里公布情况为准) 对大实验最终完成情况的检查内容包括:每周进展纪要,代码仓库的更新情况,代码展示,总结报告,总结slide等
-
组件化OS的组件和架构设计
- 宏内核: 支持Linux App
- 组件化宏内核框架和kernel直接相关内核模块改进和优化
- 微内核
- 兼容seL4等的组件化微内核框架和kernel直接相关内核模块改进和优化
- 虚拟机监控器 (Hypervisor)
- 支持件化 hypervisor 框架和 hypervisor 直接相关内核模块改进和优化
- Hypervisor 与 宏内核/微内核架构的结合
- OS相关/无关内核组件优化
- 支持用户态中断的新型操作系统内核设计(在研的学术科研项目)
- 实现并协程/线程/进程/扩展调度(linux支持的各种调度算法等)/内存分配(minmalloc等)/虚存管理/文件系统(ext4等)/网络协议栈/同步互斥/中断处理/驱动 的内核组件设计/优化/完善
- 支持Rust STD库的组件化unikernel框架和kernel直接相关内核模块改进和优化
- 宏内核: 支持Linux App
-
智能设备和驱动实现相关 ( 基于OS内核组件设计)
-
用starry组件化宏内核和Hypervisor代替Linux,支持基于飞腾派的智能微小机器人/智能无人微小车等
-
实现并扩展 x64/arm/rv64/loongarch的HAL(硬件抽象层)
-
实现并扩展实现支持OS在用户态运行的HAL(zCore有这样的libos HAL实现)
-
实现并扩展外设驱动支持
-
实现并扩展对virtio spec的多种virtio外设驱动支持
-
注:基于树莓派5的ArmPi Pro麦轮智能小车资料 链接: https://pan.baidu.com/s/1U3p5a0DNoDlw3jEr1MgmeA?pwd=xk78 提取码:xk78
-
注:基于树莓派5的ArmPi Pro麦轮智能小车视频 链接: https://cloud.tsinghua.edu.cn/f/e30f90abd1a04594ae44/
-
-
内核正确性研究
- 形式化验证相关
- 扩展带Verus(或Prusti/Kani等)安全验证属性的OSkernel相关/无关的内核组件(如上所示的各种内核组件)
- 扩展Verus安全验证的lab1-5的rCore-Tutorial内核
- 扩展Verus安全验证的Rust-based seL4组件化微内核
- 扩展Verus安全验证的Rust-based hypervisor的信息不干扰(参考asplos24-dai.pdf)
- Fuzzing 相关
- 使用和扩展模糊测试(Fuzzing)/符号执行(symbolic execution)框架或工具,通过模糊测试/符号执行的方法,查找课程测试用例 r/ucore tuturial os kernel, 全国OS比赛内核赛道二等奖以上的os kernel的bug(让系统崩溃,异常退出等)
- 不同架构系统(宏内核、微内核、Hypervisor 等)的整体/部分功能模块的 fuzzing
- 形式化验证相关
-
AI for Sys 相关
- 与字节跳动等合作,采用LLM+程序分析等技术支持C OS kernel自动翻译为 Rust OS Kernel。
- 使用最新的LLM/AI技术进行设计OS kernel等(也可以是设计CPU/Compiler等探索)相关的研究
- 采用MoE/Multi-Agent Collaboration或最新的LLM API/talk等自动化完成一个教学型的OS Kernel/Compiler
- C-based OS to Rust-based OS
- 通过大模型、静态源代码分析,语义解析,代码生成等,完成rCore Tutorial <--> uCoreTutorial,即实现两种OS的相互翻译
-
内存/存储相关:端侧(电脑、手机等)LLM推理的内存/存储管理优化(在研的学术科研项目)
- 端侧设备的内存分配与释放优化
- 针对端侧设备的计算能力和内存限制,研究页表级的内存管理策略,以优化 LLM 推理时的内存占用和访问效率。
- 探索按需页调度、TLB(转换后备缓冲区)优化、动态大页管理等技术,以减少内存碎片、降低页表遍历开销,并提升推理任务的整体性能。
- 端侧设备的内存带宽优化与管理
- 端侧设备的内存带宽通常受限,尤其在多个任务并行处理时,带宽瓶颈尤为突出。
- 研究如何通过硬件优化(如多通道内存管理)和操作系统层面的调度策略(如带宽感知的任务调度)来优化内存带宽利用,提高推理任务在端侧设备上的性能。
- 端侧设备的跨层存储管理与优化
- 端侧设备通常依赖多种存储介质(如内存、闪存等)来处理数据。
- 针对边缘计算环境中存储层次结构的特性,设计并优化跨层存储管理策略,使得内存、存储介质(如NVM、SSD等)和计算资源能够高效协同工作,从而提高推理过程中的数据存取速度和整体性能。
- 多任务推理在端侧设备中的内存隔离与共享
- 端侧设备在未来将会运行多个AI推理任务,内存隔离与共享成为关键问题。
- 设计适用于端侧设备的内存管理方案,以确保多个推理任务间的内存隔离,避免相互干扰。
- 同时,在合理情况下支持内存共享,以提高设备资源的利用率,避免内存竞争带来的性能下降。
- 端侧设备的内存分配与释放优化
-
资源调度相关:LLM推理中的资源调度优化(在研的学术科研项目)
- 推理任务的多级调度系统设计
- 设计一个多级调度系统,将推理任务分为不同的优先级,并根据资源的可用性动态调度任务。
- 优先级可以基于推理任务的计算密集度、内存需求、带宽需求等因素进行设定。
- 系统应支持动态调整优先级,确保高优先级任务能够获得必要的资源,以提高推理效率和响应速度。
- 基于计算和内存需求的联合调度策略
- 研究如何在AI推理过程中实现计算资源和内存资源的联合调度。
- 考虑到推理任务通常涉及大量的计算和内存访问,设计一个协调机制,使得计算任务和内存任务能够高效配合,以避免因资源竞争导致的性能下降。
- 可以结合计算密集型和内存密集型任务的特点,合理分配资源。
- 基于异构硬件的资源调度策略
- 针对不同类型的AI推理任务,设计一个针对异构计算资源(如CPU和GPU等)的动态调度框架。
- 系统需要根据推理任务的特点(如是否需要高并行计算、对低延迟的需求等)选择最合适的计算单元执行任务,最大化硬件资源的利用率并减少计算瓶颈。
- 内存带宽敏感的任务调度与资源分配
- 在AI推理过程中,尤其是涉及大规模数据交换时,带宽限制可能成为性能瓶颈。
- 研究内存带宽敏感的调度算法,在内存带宽受限时,通过调度机制合理分配内存带宽资源。
- 该调度策略可以包括任务合并、数据压缩等方法,优化带宽资源的使用。
- 推理任务的多级调度系统设计
注:上述内容绝大部分都有前期工作可以借鉴,都可以是2025全国大学生OS比赛的内容,也有同学/工程师在做,在下面的参考资源中大部分有提及,并可在前期的基础上进一步改进完善,可进一步联系助教和老师了解相关题目的细节。同学们也可提出自己的题目,并与老师交流,得到老师同意后可开展。
- https://github.com/LearningOS/osbiglab-2024s-verifyingkernel
- https://github.com/LearningOS/osbiglab-2024s-fuzzingkernel
- https://github.com/LearningOS/osbiglab-2024s-fuzzingfilesystem
上面有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的基本概念和编译运行等。
- 2024 秋冬季开源操作系统训练营-项目基础阶段-组件化操作系统的设计与实现
- 支持Linux APP的组件化OS内核开发
- 参考文档: Starry-Tutorial-Book
- 文档内容为 Starry 为 OS 比赛进行的环境适配修改,参考上述操作可以在本地和OS比赛完成对初赛测例的批量测试、运行
- 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