-
bourbaki0404 authored154458c8
Forked from
BOURBAKI04 / YuanShen OS
Up to date with the upstream repository.
README.md 4.30 KiB
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
文件系统
网络
新增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命令进行操作。