1 前言
在学习 rcore 之后,为了更加了解其中的细节,萌生了自己写一个操作系统练练手的想法。这个操作系统只是用于个人学习所用,所有设计都是简化处理。
项目架构
1.1 详细设计文档
2 项目结构
按照初步的设想,需要实现操作系统几大基础功能
- 系统调用
- 任务调度
- 内存及 MMU 管理
- 进程管理
- 进程间通信
整个操作系统按照微内核设计,驱动,文件系统,网络栈均放在用户层。因此在用户层还需要实现
- 块设备驱动
- sd 卡驱动
- 网卡驱动
- 文件系统接入
- 网络协议栈移植
本操作系统计划支持以下架构和 bsp
- riscv
- qemu
- k210
- armv8
- qemu
- 树莓派
3 快速开始
3.1 安装环境
为了方便体验,可以使用 docker 进行运行开发,请预先安装 docker
如果不想在 docker 中进行开发,环境安装请参考 https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter0/5setup-devel-env.html
3.2 运行 Forfun OS
请确认已安装 docker
make docker_start
make docker_into
# default run on riscv64 qemu
make run
# 运行正常,会进入 shell
# 运行 hello_world
>> hello_world
hello world!
# 停止内核,目前必须用 kill 才可以停止
make kill
3.3 可以运行的用户程序
- hello_world
- loop_test
- sleep_test
4 后续计划
加粗的任务应该会完成,剩余的看情况
4.1 移植
- 移植到 k210 开发板
- 移植到树莓派
4.2 内核优化
- 线程功能
- 多核管理
- 中断处理
- client - service IPC 实现 select 功能,监听多个 channel
4.3 用户程序
- 用户程序堆优化,从固定堆大小到可动态伸缩
- 优化 Shell
- 开发更多内核 feature 测试程序
- 开发一个类 systemd manager
4.4 驱动
- sd card 驱动
- 网络驱动和协议栈
结语
本操作系统主要参考 rcore-os 的设计和实现。当然有一些部分是不一样,比如内存管理,微内核架构等等。但总的来说,还属于拾人牙慧之作。
计划是完成上述加粗的任务项,剩下的也很有意思,但是可能没有那么多时间了。
同时在实现的过程中会实时更新一些博客,记录具体功能的设计及实现,供自己以后参考。
另外,本人水平有限,对于操作系统开发更是所知不多,如果您发现博客中有错漏之处,还请不吝赐教。
欢迎在 Github 中提 issue,PR,issue 甚至可以只是一条评论,这只是一个玩具项目,所以请放轻松😊