• RainBowOS's avatar
    19 · e1a82882
    RainBowOS authored
    e1a82882
Forked from RainBowOS / OSKernel2024-RBOS
Up to date with the upstream repository.

logo

参赛信息

  • 队伍名:RainBowOS
  • 队伍编号:T202410336994342
  • 队伍成员:
    • 祖启松
    • 陈泓睿
    • 周定淏
  • 指导老师:
    • 周旭
    • 叶可卉

项目运行

RBOS是一个基于用c语言和汇编语言编写的 MIT 6.828 (6.S081) (6.1810) xv6-labs-2022 实验的RISC-V架构的操作系统内核。

xv6 是由麻省理工学院 (MIT) 开发的一个简化版的 Unix 操作系统,旨在作为教学工具帮助学生理解操作系统的基本原理。

因其简易的结构,我们可以方便地在其基础上开发我们想要的功能。

环境配置

以WSL Ubuntu 22.04为例,需要安装的C 开发环境涉及的软件:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

安装依赖包,获取 QEMU 源代码并手动编译:

# 安装编译所需的依赖包
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 libslirp-dev \
              git tmux python3 python3-pip ninja-build
# 下载源码包
wget https://download.qemu.org/qemu-9.0.0.tar.xz
# 解压
tar xvJf qemu-9.0.0.tar.xz
# 编译安装并配置 RISC-V 支持
cd qemu-9.0.0
sudo apt install ninja-build #还需要安装ninja
./configure --target-list=riscv64-softmmu,riscv64-linux-user  # 在第九章的实验中,可以有图形界面和网络。如果要支持图形界面,可添加 " --enable-sdl" 参数;如果要支持网络,可添加 " --enable-slirp" 参数
make -j$(nproc)

进入项目目录

make qemu

启动系统

初始界面

项目完成情况

  • 信号

  • 信号量

  • 消息

  • 进程调度

  • 用户线程

  • 内存管理-伙伴系统

  • 内存共享

  • 其他系统调用

// System call numbers
#define SYS_fork    1
#define SYS_exit    2
#define SYS_wait    3
#define SYS_pipe    4
#define SYS_read    5
#define SYS_kill    6
#define SYS_exec    7
#define SYS_fstat   8
#define SYS_chdir   9
#define SYS_dup    10
#define SYS_getpid 11
#define SYS_sbrk   12
#define SYS_sleep  13
#define SYS_uptime 14
#define SYS_open   15
#define SYS_write  16
#define SYS_mknod  17
#define SYS_unlink 18
#define SYS_link   19
#define SYS_mkdir  20
#define SYS_close  21
#define SYS_ps     22 //新增
#define SYS_trace  23
#define SYS_sysinfo 24
#define SYS_halt   25
#define SYS_proctime 26
#define SYS_showpri 27
#define SYS_setpri 28
#define SYS_setsched 29
#define SYS__exit   30
#define SYS_nanosleep 31
#define SYS_pause  32
#define SYS_signal 33
#define SYS_kills  34
#define SYS_sigreturn 35
#define SYS_sem_init  36
#define SYS_sem_wait  37
#define SYS_sem_signal  38
#define SYS_shmem_create 39
#define SYS_shmem_attach 40
#define SYS_shmem_detach 41
#define SYS_shmem_free   42
#define SYS_msgsend 43
#define SYS_msgrecv 44
#define SYS_getppid 45
#define SYS_reboot  46
#define SYS_test    47
#define SYS_find    48
#define SYS_search  49

参赛文档

设计文档

学习笔记

代码参考

xv6-labs-2020实验

linux2.6版本源码

华东师范大学2024年作品843

南京航空航天大学2024年作品GalaxyOS