Skip to content

Kindin-X/MindOS

Repository files navigation

MindOS

基于 Rust 开发的 RISC-V 64 位操作系统内核,集成 C++ 计算图引擎、GPU 图形子系统与自定义网络协议栈。

核心特性

  • Neuro-Vana-CPU 计算图引擎 — C++ 实现的张量运算与自动求导引擎,支持 LSTM、MLP 等神经网络结构,通过 /dev/graph 设备节点暴露给用户态,配套零拷贝大页 IPC
  • GPU 图形子系统 — VirtIO GPU 驱动,支持 framebuffer 渲染与 SDL 显示,已实现俄罗斯方块、贪吃蛇等图形应用
  • 自定义网络协议栈(lose-net-stack) — 支持 TCP/UDP 套接字通信
  • 功能丰富的 Shell — 支持管道(|)、I/O 重定向(< > >>)、后台执行(&)、命令行编辑、ANSI 彩色输出
  • 进程与线程管理 — fork/exec/waitpid 进程模型,线程创建与同步原语
  • 文件系统 — 基于 easy-fs 的简易文件系统,通过 VirtIO Block 设备挂载
  • 内存管理 — 页表管理、大页分配(2MB)、写时复制(COW)、mmap 共享内存

快速开始

推荐使用 Docker 运行,避免宿主机 Rust nightly、Cargo 镜像、QEMU、RISC-V 交叉编译器版本不一致:

./scripts/docker-mindos.sh run

图形界面:

# 先无头回归(无需显示器)
./scripts/docker-mindos.sh test-gui-clear

# 再启动 SDL 窗口
./scripts/docker-mindos.sh run-gui

调试:

./scripts/docker-mindos.sh debug

完整说明见 Docker 使用说明

环境要求

  • Rust nightly(riscv64gc-unknown-none-elf target)
  • QEMU(qemu-system-riscv64
  • riscv64-linux-gnu-g++(用于编译计算图引擎的 C++ 代码)

构建与运行

# 编译内核与用户程序,生成文件系统镜像
cd os && make build

# 命令行模式运行
make run

# 图形界面模式运行
make run-gui

调试

# 启动 QEMU 等待 GDB 连接
make gdbserver

# 另开终端连接 GDB
make gdbclient

项目结构

rcore_workspace/
├── os/                  # 内核代码(Rust)
│   └── src/
│       ├── trap/        # 中断/异常处理
│       ├── task/        # 进程/线程管理
│       ├── mm/          # 内存管理
│       ├── syscall/     # 系统调用
│       ├── fs/          # 文件系统
│       ├── drivers/     # 设备驱动(GPU、VirtIO、PLIC)
│       ├── device/      # 字符设备(/dev/graph)
│       └── net/         # 网络子系统
├── user/                # 用户态程序(Rust)
│   └── src/
│       ├── bin/         # 可执行程序与测试
│       ├── app/         # Shell 与应用库
│       └── syscall.rs   # 系统调用封装
├── neuro-engine/        # C++ 计算图引擎(Neuro-Vana-CPU)
├── easy-fs/             # 简易文件系统实现
├── easy-fs-fuse/        # 文件系统镜像打包工具
├── lose-net-stack/      # 自定义网络协议栈
├── virtio-drivers/      # VirtIO 设备驱动(vendored)
└── riscv/               # RISC-V 寄存器/指令封装(vendored)

许可证

本项目使用 MIT 许可证。详见 LICENSE 文件。

项目中的第三方组件遵循各自的许可证:

  • virtio-drivers/ — MIT (rCore Developers)
  • riscv/ — MPL 2.0
  • qemu-7.2.0/ — GPL 2.0 / LGPL 2.1

提交说明

提交流程如下:

评测系统会启动一个基础镜像 在里面对上交代码执行make all,预期得到两个elf文件,分别为针对RISC-V架构的kernel-rv 和 LoongArch 架构的 kernel-la,这一步可以有一个disk.img作为自己的文件系统镜像

接下来是对内核的要求,评测时会挂载一个EXT4格式的"硬盘"镜像,内核在启动后需要识别并读取里面的内容,然后依次(串行)执行里面每一个*_testcode.sh的脚本,或者依次执行里面的elf测试文件。(修改main函数)

测试通过捕获屏幕输出记分,所以运行测试的输出要严格遵守题目要求

运行结束后需要主动关机,否则会持续计时

另有两点说明,对于第三方工具,需要以源码形式提交并和内核一并编译,clone项目时,.开头的文件会被忽略,如果需要包括进去需要改名,然后再makefile里改回去

运行测试方法 ./scripts/docker-mindos.sh test /path/to/test-fs.img

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors