Skip to content

NPUcoreLA为2024年全国大学生计算机系统能力大赛-操作系统设计赛-OS内核实现赛道的参赛作品。

License

Notifications You must be signed in to change notification settings

Baozixu99/NPUcoreLA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPUcoreLA

NPUcoreLA来自于2023年操作系统大赛功能赛二等奖作品NPUcore+LA,NPUcore+LA支持在QEMU-2K0500,以及龙芯2K0500上运行,为了满足大赛要求,我们对NPUcore+LA进行了适配工作(适配qemu-2k1000工作),NPUcoreLA能够成功运行在QEMU-2K1000以及龙芯2K1000上。在初次提交测评时,NPUcoreLA得到了79分。经过修复部分测试用例后,我们最终满分通过了初赛的测试。目前,NPUcoreLA在QEMU-2K1000上已支持lua、busybox、lmbench以及部分系统调用测试用例。我们计划进一步添加对2K1000实机开发板的更多测试用例支持,同时探索支持ext4文件系统的过程。

在NPUcore+LA的基础上,我们做的主要工作内容如下:

  • 适配龙芯2K1000星云板:NPUcoreLA能够在QEMU-2K1000以及龙芯2K1000上运行。
  • 修复测试用例:将测评分数从79分提升到满分。
  • 修复NPUcoreLA中的bug:包括修复sbrk、pipe、openat系统调用等。
  • 模块化内核结构:拆解arch/register模块,便于后续模块化内核的工作。
  • 重构核心系统调用:如sbrk、mmap、munmap、exec、getpid、fork、clone、open、write、fstat、link等系统调用。
  • 支持新的用户程序:如打印三级页表结构,打印TCb信息。
  • 增加新的系统调用支持:statx、getrandom、dup2等系统调用
  • 探索ext4实现(没有实现ext4):详细分析文档位于/docs中。

NPUcoreLA系统架构图(蓝色部分为增量)

NPUcoreLA系统架构图(蓝色部分为增量)

基础环境配置

rustc --version
rustc 1.77.0-nightly (bf3c6c5be 2024-02-01)

Loong Arch GCC 12:百度网盘链接: https://pan.baidu.com/s/1xHriNdgcNzzn-X9U73sHlw 提取码: 912v

Loong Arch GCC 13: https://github.com/LoongsonLab/oscomp-toolchains-for-oskernel

QEMU版本:qemu-2K1000

GDB:loongarch64-unknown-linux-gnu-gdb

安装编译所需的依赖包:

sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
              gawk build-essential bison flex texinfo gperf libtool patchutils bc \
              zlib1g-dev libexpat-dev pkg-config  libglib2.0-dev libpixman-1-dev libsdl2-dev \
              git tmux python3 python3-pip ninja-build expect make cmake

环境准备

make qemu-download

运行方式

make all
make run

其他

make clean: 清理已经编译的项目(包括用户程序, 系统和FAT镜像)

相关文档

目录结构

NPUcoreLA
├── Makefile            # 顶级Makefile,用于编译和构建整个项目
├── docs                # 相关文件
├── easy-fs-fuse        # 包含文件系统和操作系统内核镜像  
├── os                  # 内核核心代码存放目录  
│   ├── Makefile        # 内核的构建和运行脚本  
│   ├── buildfs.sh      # 脚本,用于构建文件系统  
│   ├── run_script      # 脚本,用于uboot加载内核  
│   ├── src             # 内核源代码目录  
│   │   ├── arch        # 包含了与平台相关的汇编代码和包装函数  
│   │   ├── console.rs  # 控制台日志消息发送的源代码  
│   │   ├── drivers     # 设备驱动程序目录  
│   │   ├── fs          # 文件系统源代码目录  
│   │   ├── linker.ld   # 定义了内存布局和各个段的起始地址  
│   │   ├── load_img.S  # 用于将文件系统镜像插入到.data段  
│   │   ├── main.rs     # 内核的入口函数源代码  
│   │   ├── mm          # 内存管理源代码目录  
│   │   ├── syscal      # 系统调用源代码目录  
│   │   ├── task        # 进程管理源代码目录  
│   │   └── timer.rs    # 时钟中断管理和计时器源代码   
│   └── target          # 内核构建输出的目标文件存放目录  
├── user                # 用户空间程序存放目录  
└── util                # 工具目录  
    ├── mkimage         # 用于创建镜像文件  
    └── qemu-2k1000     # QEMU模拟器配置

About

NPUcoreLA为2024年全国大学生计算机系统能力大赛-操作系统设计赛-OS内核实现赛道的参赛作品。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published