-
RainBowOS authorede1a82882
Forked from
RainBowOS / OSKernel2024-RBOS
Up to date with the upstream repository.
参赛信息
- 队伍名: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