Skip to content

Ya0rk/myOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,080 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Del0n1x

项目简介

github仓库链接: 欢迎向我们提出issue.

Del0n1x 是一个使用 Rust 语言编写的同时适配 RISC-V64 和 LoongArch64 的跨平台操作系统,目标是实现一个 Linux 兼容的多核操作系统,支持进程调度、文件系统、网络等功能。 实现了对 RISC-V 和 LoongArch架构的统一支持,同一份内核代码可以在不同平台上编译运行,同时也适配了riscv星光二代板,龙芯星云板也能正常启动。Del0n1x也支持busybox、sh、 git、vi和llama2.c等现实应用。

模块 完成情况
HAL模块 实现自己的HAL代码库,支持 RISCV64 和 LoongArch64 双架构
进程管理 无栈协程调度,支持全局统一的executor调度器; 实现多线程的资源回收; 统一进程和线程的数据结构
文件系统 实现dentry构建目录树; 实现页缓存和dentry缓存加快读写
内存管理 实现基本的内存管理功能; 实现CoW、懒分配内存优化
时钟模块 实现时间轮混合最小堆的数据结构管理方式; 支持定时器唤醒机制
IPC系统 支持处理用户自定义信号和sigreturn机制; 实现支持读者写者同步的管道机制; 支持 System V 共享内存
网络模块 初步完成网络模块相关代码,通过了netperf网络测例
中断模块 支持外部中断,支持上板的串口中断处理

参赛成绩

8月20日决赛现场赛中,Del0n1x以145分的总分位列第8:

现场赛测例完成情况如下表:

平台 测例 完成情况
RV Qemu git ✅Task0 ✅Task1 ❌Task2
vim ✅Task0 ❌Task1
gcc ✅Task0 ✅Task1
rustc ✅Task0 ❌Task1
LA Qemu git ✅Task0 ✅Task1 ❌Task2
vim ✅Task0 ❌Task1
gcc ✅Task0 ✅Task1
rustc ❌Task0 ❌Task1
星光二代板 git ✅Task0 ✅Task1 ❌Task2
vim ✅Task0 ❌Task1
gcc ✅Task0 ✅Task1
rustc ✅Task0 ❌Task1
龙芯2K1000 测例运行失败

其中,RV Qemu、LA Qemu 平台使用finet_qemu分支进行测试,星光二代板平台使用finet_vf2分支进行测试。在finet_lagcc分支中,实现了 LA Qemu 平台下gcc Task1(编译、运行)测例的稳定运行。

截止8月17日决赛结束前,Del0n1x的排名如下(决赛测例满分):

截至6月30日初赛结束前,Del0n1x的排名如下图:

目录架构

os
├── linker                  # 程序链接脚本
├── src
│   ├── boards              # 架构相关的参数
│   ├── driver              # 块设备驱动
│   ├── fs                  # 文件系统
│   ├── hal                 # 硬件抽象层
│   ├── ipc                 # 进程间通信相关的部分代码
│   ├── mm                  # 内存页表
│   ├── net                 # 网络
│   ├── signal              # 信号
│   ├── task                # TCB
│   ├── utils               # 一些工具
│   ├── sync                # 同步相关
│   ├── syscall             # 系统调用
│   ├── test                # 测试模块
│   ├── entry_la.asm        # 龙芯入口初始化汇编函数
│   ├── entry.asm           # riscv入口初始化函数
│   ├── console.rs
│   ├── lang_items.rs
│   ├── Makefile
│   └── main.rs
user                        # 用户程序
├── src
│   ├── bin
│   │   ├── autorun.rs      # 自动测试
│   │   ├── gbshell.rs      # glibc的busybox shell
│   │   ├── huge_write.rs   # 测试文件系统写入速度
│   │   ├── initproc.rs     # 调用user_shell,进入自己实现的终端
│   │   ├── mbshell.rs      # musl的busybox shell
│   │   └── user_shell.rs
doc                         # 设计文档
vendor                      # 第三方依赖
report                      # 过程文档
bootloader                  # 引导加载程序

运行项目

进入cd os文件,然后执行make run ARCH=xxx OVERWRITE=true

指令说明:

  • 第一次运行需要在项目根目录准备sdcard-rv.imgsdcard-la.img(可以从官方的github测试仓库下载并编译)
  • ARCH: 内核架构,如果不加该参数默认是riscv;如果需要龙芯,则:ARCH = loongarch64
  • OVERWRITE:Del0n1x实现了真正的向镜像img读和写,为了避免破坏镜像,该参数回复制一份img用于挂载

项目调试

riscv64

进入cd os文件,然后执行make gdbserver,另外打开一个终端,执行make gdbclient.

loongarch64

进入cd os文件,然后执行make gdbserver ARCH=loongarch64,另外打开一个终端,执行make LAgdbclient.

项目成员

未来计划

  • 完善net模块,支持网络上板。
  • 完善loop设备,实现功能更加完善的mount机制。
  • 支持更多现实应用。

参考

工具链

cargo:

❯ cargo version
cargo 1.86.0-nightly (088d49608 2025-01-10)2025-01-10

Rust工具链:

loongarch64-unknown-linux-gnu
loongarch64-unknown-none
riscv64gc-unknown-linux-musl
riscv64gc-unknown-none-elf

qemu:

❯ qemu-system-riscv64 --version
QEMU emulator version 9.2.1
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
❯ qemu-system-loongarch64 --version
QEMU emulator version 9.2.1
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

riscv64-unknown-elf-gdb:

❯ riscv64-unknown-elf-gdb --version
GNU gdb (GDB) 16.2
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

loongarch64-unknown-linux-gnu-gdb:

❯ loongarch64-unknown-linux-gnu-gdb --version
GNU gdb (GDB) 16.2
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

其余工具链可以通过官方链接中的Dockerfile下载.

About

No description, website, or topics provided.

Resources

License

Stars

5 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors