## 目标 将 ArceOS 移植到 reL4 之上作为用户态程序,由于 ArceOS 是 Unikernel,内核和程序直接绑在一起,通过函数调用,所以在完成基本功能的时候不需要对调用指令进行修改。在完成基本任务的时候,应该能够让 ArceOS 的所有测例都能以 seL4 的用户态进程的形式运行,并且尽量保证 ArceOS 的结构和模块名称兼容。 ## 阶段基本任务 - [ ] 为 ArceOS 的 HAL 添加 seL4 用户态的支持 - [ ] 修改 ArceOS 的编译系统能够和 rel4-linux-kit 的编译系统整合 - [ ] PerCPU 部分的支持需要进行梳理和修改 - [ ] 对 HAL 模块进行修改,剔除特权指令的存在 - [ ] ArceOS 中页表进行修改,和 seL4/reL4 Capability 进行整合 - [ ] 添加基于 Cap 的中断机制支持 - [ ] 由于 ArceOS 中存在 TLS 的使用,而 rust-sel4 中也存在 TLS 的使用,且 ArceOS 可能会随意切换 TLS,需要进行梳理 - [ ] 移除调度器相关代码 - [ ] ArceOS 自己掌控调度,能够保证发生中断的时候内核 TLS 和状态是对应的,但是运行在 seL4/reL4 来说需要特别的设计让中断发生的时候切换 ArceOS 的状态到对应的 TLS 和内核状态 - [ ] 将内存管理方式从直接内存管理转换为 Cap Untyped 管理 - [ ] 对 ArceOS 内存申请和映射部分进行梳理,申请内存按照 Cap 的方式进行,确保没有 “凭空”产生的 - [ ] 对其他模块进行梳理,保证不出现资源或 Cap 冲突、访问特权指令等情况 ## 阶段进阶任务 - [ ] 将 ArceOS 中的模块进行修改,能够拆分成多个独立的进程运行,模块之间通过 IPC 通信 - [ ] 支持多种架构和平台
目标
将 ArceOS 移植到 reL4 之上作为用户态程序,由于 ArceOS 是 Unikernel,内核和程序直接绑在一起,通过函数调用,所以在完成基本功能的时候不需要对调用指令进行修改。在完成基本任务的时候,应该能够让 ArceOS 的所有测例都能以 seL4 的用户态进程的形式运行,并且尽量保证 ArceOS 的结构和模块名称兼容。
阶段基本任务
阶段进阶任务