Forked from BOURBAKI04 / YuanShen OS
Up to date with the upstream repository.

YuanShen OS - 模块实验创新方向

Overview

YuanShen OS基于xv6-riscv 2024, 我们在开发过程中逐步对xv6的部分模块进行重构优化和改进, 且提供了更为丰富的功能。

项目目录结构:

├── kernel
│   ├── buddy           # 伙伴系统
│   ├── semaphore       # sempahore
│   ├── CFS             # CFS调度器
│   ├── FS              # 文件系统
│   ├── include         # 头文件目录
│   ├── network         # e1000 网卡和 UDP-IP 协议
│   ├── signal          # 简单 SIGNAL 支持
│   ├── slub            # SLUB 分配器
│   ├── vma             # VMA
│   └── virtualMemory   # 虚拟内存
├── mkfs                # 文件系统创建工具
└── user                # 用户态程序

队员全部来自杭州电子科技大学,组员以及分工如下:

徐薪雨:队长,负责进程管理,内存管理

高坚:组员,负责文件系统

陈亭材:组员,负责搜集资料,系统调用整理

以下是我们的队伍信息:

队伍编号: project2608132

队伍名称: BOURBAKI04

指导老师: 杭州电子科技大学 周旭 贾刚勇

比赛方向: 模块实验创新方向

我们所有的工作,资料与代码的引用以及内核开发日志皆已以pdf文档的形式保存在./doc目录,可供查阅。以下部分是对我们工作的概观:

Extensions

进程管理

1. 简单SIGNAL系统
2. 抢占式调度用户级多线程
3. CFS调度器
4. 同步原语: semaphore

内存管理

1. 伙伴系统物理内存分配器
2. SLUB分配器,支持细粒度内存管理
3. 基于VMA的进程地址空间管理
4. Copy-On-Write Fork
5. 进程内核页表
6. Lazy Allocation
7. 文件内存映射mmap
8. 修改exec支持Demand Paging

文件系统

1. 二级间接索引块
2. 符号链接文件

网络

1. e1000以太网卡驱动
2. 简单的UDP-IP协议支持

内核开发日志

新增22个系统调用

实用工具:
sys_getcwd          22          打印当前工作目录的路径
sys_nanosleep       23          精细化的sleep
sys_trace           24          打印运行时系统调用的调试信息
sys_sysinfo         25          打印内核剩余内存大小和进程数量

SIGNAL与用户级多线程:
sys_sigalarm        26          设置virtual timer的时间间隔与对应的signal handler
sys_sigreturn       27          用于signal handler的收尾

UDP-IP协议栈:
sys_bind            28          绑定某个UDP端口
sys_unbind          29          解除UDP端口绑定
sys_send            30          向指定的IP地址和端口发送UDP报文
sys_recv            31          从端口缓冲区读取一个UDP报文

CFS调度器:
sys_set_priority    32          设置进程的nice值
sys_get_priority    33          读取进程的nice值
sys_get_vruntime    34          获取进程的虚拟运行时间
sys_get_runtime     35          获取进程运行的实际总时长

同步原语:
sys_get_semaphore   36          分配一个semaphore
sys_free_semaphore  37          将sempahore回收
sys_semaphore_P     38          信号量的P操作
sys_semaphore_V     39          信号量的V操作

文件系统:
sys_symlink         40          添加软链接

虚拟内存:
sys_mmap            41          内存映射文件
sys_munmap          42          取消文件的内存映射
sys_print_vma       43          打印进程的地址空间布局

Quickstart

注意:以下所有指令皆在项目根目录下执行

  • 使用make qemu编译项目并运行。
  • 使用make clean清除编译产物。
  • 开机后可以使用shell命令进行操作。