# whu_os_lab **Repository Path**: kalinplus/whu_os_lab ## Basic Information - **Project Name**: whu_os_lab - **Description**: whu 2024 fall 操作系统实践 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-09-20 - **Last Updated**: 2025-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WHU OS Lab - RISC-V 操作系统内核实现 一个基于RISC-V架构的完整操作系统内核实现,从底层启动到文件系统的完整教学操作系统,参考 xv6 实现。 ## 项目概述 本项目实现了一个功能完整的RISC-V操作系统内核,包含: - **完整的启动流程** - 从汇编入口到C语言运行环境 - **中断处理系统** - 完整的中断向量和处理机制 - **进程管理系统** - 进程创建、调度和上下文切换 - **系统调用接口** - 用户态与内核态交互桥梁 - **磁盘文件系统** - 基于日志的文件系统实现 - **ELF程序加载** - 支持可执行文件的加载和执行 - **内核日志系统** - 结构化的调试和分析工具 ## 系统架构 ### 核心模块 | 模块 | 功能描述 | 实现文件 | |------|----------|----------| | **启动引导** | 系统启动和硬件初始化 | `kernel/boot/` | | **中断处理** | 中断向量表和分发机制 | `kernel/trap/` | | **内存管理** | 物理内存分配和虚拟内存 | `kernel/mem/` | | **进程管理** | 进程生命周期和调度 | `kernel/proc/` | | **系统调用** | 内核服务接口 | `kernel/syscall/` | | **文件系统** | 磁盘文件存储和管理 | `kernel/fs/` | | **设备驱动** | 硬件设备接口 | `kernel/dev/` | | **运行库** | 内核基础库函数 | `kernel/lib/` | ## 快速开始 ### 环境要求 - RISC-V交叉编译工具链 - QEMU模拟器 - GNU Make ### 编译系统 ```bash # 构建完整系统 make build # 清理编译文件 make clean # (可选)格式化文件系统镜像 make mkfs ``` ### 运行系统 ```bash # 启动QEMU运行系统 make qemu # 启动QEMU并启用GDB调试 make qemu-gdb ``` ### 系统测试 系统启动后会自动运行文件系统测试程序,验证以下功能: - 文件创建和写入 - 文件读取和验证 - 目录操作 - 用户进程执行 - 系统调用接口 - 内核日志系统 ## 项目结构 ``` code/ ├── include/ # 头文件定义 ├── kernel/ # 内核实现 │ ├── boot/ # 启动代码 │ ├── trap/ # 中断处理 │ ├── mem/ # 内存管理 │ ├── proc/ # 进程管理 │ ├── syscall/ # 系统调用 │ ├── fs/ # 文件系统 │ ├── dev/ # 设备驱动 │ └── lib/ # 内核库 ├── user/ # 用户程序 ├── mkfs/ # 文件系统工具 └── Makefile # 构建脚本 ``` ## 系统特性 ### 启动系统 - RISC-V汇编启动代码 - C语言运行环境建立 - 硬件设备初始化 - 内存管理系统启动 ### 中断处理 - 完整的中断向量表 - 时钟中断处理 - 系统调用入口 - 异常处理机制 ### 进程管理 - 多进程创建和管理 - 时间片轮转调度 - 进程上下文切换 - 进程间通信机制 ### 系统调用 - 统一的系统调用接口 - 进程控制类系统调用 - 文件操作类系统调用 - 日志系统调用接口 ### 文件系统 - 磁盘布局和管理 - inode和目录系统 - 基于日志的数据保护 - 块缓存优化 ### 程序加载 - ELF文件格式解析 - 用户进程内存映射 - 可执行文件加载 - 用户栈管理 ### 日志系统 - 8级日志过滤 - 环形缓冲区存储 - 实时控制台输出 - 用户态访问接口 ## 开发工具 ### 调试支持 ```bash # GDB调试 make qemu-gdb gdb-multiarch kernel.elf # 常用GDB命令 (gdb) target remote localhost:1234 (gdb) break kernel_main (gdb) continue ``` ### 系统监控 - 内核日志实时输出 - 进程状态监控 - 文件系统状态查看 - 内存使用统计 ## 📚 参考资料 - [RISC-V非特权指令集](https://riscv.org/specifications/) - [RISC-V特权指令集](https://riscv.org/specifications/privileged/) - [xv6操作系统](https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf) - [ELF文件格式规范](https://refspecs.linuxfoundation.org/elf/elf.pdf)