Add LICENSE
Pantheon authored
eb7ae88b

Pantheon

项目简介

Pantheon是一个基于 RISCV-64 硬件平台实现的采用无栈协程架构、支持多核CPU的宏内核操作系统。

完成情况

初赛阶段满分:

决赛第一阶段,截至7.31晚11:20总分排名第一: 其中iperf、ltp单个测试排名第一

项目结构

Pantheon
├─ cargo-config                                                                                 
├─ docs                                                                                                                                                                      
├─ pantheon                                                                                     
│  ├─ kernel                                                                                    
│  │  ├─ cargo-config                                                                           
│  │  ├─ src                                                                                    
│  │  │  ├─ devices                                                                             
│  │  │  ├─ drivers                                                                             
│  │  │  ├─ fs                                                                                  
│  │  │  ├─ io                                                                                  
│  │  │  ├─ ipc                                                                                 
│  │  │  ├─ kmm                                                                                 
│  │  │  ├─ knet                                                                                
│  │  │  ├─ platform                                                                            
│  │  │  ├─ syscall                                                                             
│  │  │  ├─ task                                                                                
│  │  │  ├─ trap                                                                                                                                                    
│  │  │  ├─ entry.rs                                                                            
│  │  │  ├─ impls.rs                                                                            
│  │  │  ├─ linker.ld                                                                           
│  │  │  ├─ main.rs                                                                             
│  │  │  └─ panic.rs                                                                            
│  │  ├─ Cargo.toml                                                                             
│  │  ├─ Makefile                                                                               
│  │  └─ build.rs                                                                               
│  ├─ lib                                                                                       
│  │  ├─ arch                                                                                                                                                          
│  │  ├─ config                                                                                                                                                       
│  │  ├─ executor                                                                                                                                                    
│  │  ├─ fat32                                                                                                                                                       
│  │  ├─ hart                                                                                                                                                       
│  │  ├─ kalloc                                                                                                                                                      
│  │  ├─ klog                                                                                                                                                         
│  │  ├─ kmem                                                                                                                                                         
│  │  ├─ kpath                                                                                                                                                        
│  │  ├─ ksync                                                                                                                                                      
│  │  ├─ ktime                                                                                                                                                        
│  │  ├─ lwext4_rust                                                                                                                                                    
│  │  ├─ nix                                                                                                                                                         
│  │  ├─ task                                                                                                                                                          
│  │  ├─ trap                                                                                                                                                      
│  │  ├─ utils                                                                                                                                                    
│  │  └─ vfs                                                                                                                                                          
│  ├─ user                                                                                      
│  │  ├─ apps                                                                                   
│  │  │  ├─ initproc                                                                                                                                              
│  │  │  ├─ runtests                                                                                                                                               
│  │  │  ├─ shell                                                                                                                                                 
│  │  │  ├─ step1                                                                                                                                                   
│  │  │  ├─ Makefile                                                                            
│  │  │  └─ linker.ld                                                                           
│  │  └─ libd                                                                                                                                                             
│  └─ jh7110-visionfive-v2.dtb                                                                  
├─ part                                                                                                                                                                        
├─ Cargo.lock                                                                                   
├─ Cargo.toml                                                                                   
├─ Makefile                                                                                     
├─ README.md                                                                                    
├─ qemu.dtb                                                                                     
├─ qemu.dts                                                                                     
├─ rust-toolchain.toml                                                                          
└─ rustfmt.toml                                                                                 

项目整体架构

如图所示,Pantheon 系统基于从低到高搭建内核的思想进行架构开发,概括分为三层:Base Layer层、Kernel Layer层、App Layer层。

内核构建

  • 在项目根目录下构建os内核
make all
  • 运行os内核
make run
  • 清理内核映像
make clean

项目分工

初赛阶段:

  • 李梁锋 :负责进程模块和地址空间的设计与构建、编写测试环境

  • 张锦轩 :负责完善地址空间与文件系统,代码审查与调试,修复内核问题

  • 周家正 :负责文件系统模块的构建以及地址空间的完善

决赛第一阶段:

  • 李梁锋 :完善进程模块和信号模块,负责代码的调试和运行

  • 张锦轩 :负责网络模块的构建,代码审查与调试,修复内核问题

  • 周家正 :负责文件系统模块的完善和板卡驱动的适配

指导老师

章复嘉,邬惠峰

项目文档

初赛文档

TODO

决赛第一阶段文档

与参考作品对比与优势

在Pantheon的开发过程中,主要参考了往届作品BTD OS的基础架构和设计理念,并在其基础上进行了创新和优化,通过深入分析和优化关键模块,实现了在进程管理、信号系统、内存管理、文件系统、网络模块以及IO模块等方面的显著提升。下图是具体的区别和这些创新所带来的优势:

额外的,本系统在开发过程中还参考了其他的优秀的开源作品,由于仅参考了部分模块设计理念,总结如下:

  1. 网络模块:参考开源优秀作品DragonOS,定义了统一的网络地址结构体,同时定义一个统一的内核Endpoint,用于对接收到各类Endpoint进行统一的转换和处理,方便内核的其他模块进行处理。
  2. 无栈协程基础模块:参考开源优秀作品TitanixOS,定义了全局的内核异步协程调度器,任务添加器spawn_task,和全局定时器队列全局管理内核定时任务。