whu-oslab 是基于 xv6 架构设计,并针对 2025年全国大学生计算机系统能力培养大赛 (OSComp) 进行改造与优化的 RISC-V (rv64) 操作系统内核。
主要特性:
- 核心架构: 基于 RISC-V 64位架构,支持 Sv39 分页机制与 M/S/U 特权级切换。
- 文件系统: 移除了原版简易文件系统,完全重写并适配了 FAT32 文件系统,支持长文件名 (LFN)、多簇读写与 Buffer Cache 高速缓存。
- 进程管理: 实现了完善的进程生命周期管理,支持
fork/exec/wait原语,以及管道 (pipe) 等 IPC 机制。 - 内存管理: 采用物理页帧分配与缺页异常处理相结合的策略,支持
brk/mmap等系统调用。
截至目前,本项目已通过所有基础功能测试用例 (Pass All Tests),涵盖:
- 基础系统调用 (fork, exec, wait, exit, getpid, etc.)
- 文件系统操作 (open, read, write, mkdir, mount, etc.)
- 内存管理 (brk, mmap, munmap)
- 进程间通信 (pipe)
- 时间与杂项 (gettimeofday, times, uname)
详细的实现细节与设计思路请参阅 design.md。
推荐使用 Docker 容器以获得统一的开发环境。我们已配置 VSCode 调试支持 (Launch Configuration),可直接在 IDE 中进行源码级调试。
获取镜像:
docker pull docker.educg.net/cg/os-contest:2024p8.3启动容器:
docker container run -it --name oslab --rm \
-p 127.0.0.1:26000:26000 \
--mount type=bind,src=.,dst=/riscv-os \
-w /riscv-os \
docker.educg.net/cg/os-contest:2024p8.3 /bin/bash进入容器后:
# 编译并运行 (QEMU)
make qemu方式一:命令行 GDB
- 启动 QEMU 并在 26000 端口等待:
make qemu-gdb
- 新开一个终端连接:
riscv64-unknown-elf-gdb kernel-qemu -ex "target remote localhost:26000"
方式二:VSCode 调试器 (推荐)
- 在 VSCode 中按
F5(启动 "GDB Remote" 配置),即可直接连接容器进行断点调试。
- 设计与分析文档 (design.md): 项目的核心文档,包含系统架构图、各模块详细设计(内存、进程、FS)、遇到的重难点问题及解决方案。
- 原始设计文档(.md): 项目的初始文档,描述了本项目在未移植支持到比赛内核时的设计。
本项目的设计展示与功能演示视频已上传至百度网盘:
- xv6-riscv: 基础内核架构参考。
- RISC-V Privileged Specification: RISC-V 特权级指令集规范。
- Microsoft FAT32 Specification: FAT32 文件系统标准文档。