littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于C语言的ARM64开源操作系统OpenOS

项目简介

OpenOS是面向ARM64架构的开源操作系统项目,目标是深入研究探索ARM64、Linux内核及操作系统原理等嵌入式工程师必备知识。此项目从0到1逐步实现操作系统,通过Unit Test验证功能模块,代码经Linux CheckPatch.pl脚本检查。

项目的主要特性和功能

  • ARM64架构探索:专注ARM64架构,助于深入了解ARM64指令集与相关硬件特性。
  • Linux内核开发:以Linux内核为基础,探索实践内核开发关键部分,如中断处理、进程管理、内存管理等。
  • 操作系统原理实践:实现OpenOS可帮助学习者深入理解操作系统核心概念和原理,如进程调度、内存管理、文件系统等。
  • 编译和构建工具链:包含构建开发环境所需工具链和脚本,支持QEMU等模拟器环境,便于模拟测试和调试。

安装使用步骤

假设用户已下载本项目的源码文件。

1. 获取源码

bash

2. 构建开发环境

2.1 构建OpenOS编译环境

bash cd OpenOS/ make setenv

2.2 手动安装QEMU

bash cd ~ cd qemu-patch-raspberry4 mkdir build cd build ../configure make -j8 sudo make install

2.3 测试QEMU

bash qemu-system-aarch64 -machine help

2.4 测试OpenOS

bash make clean make menuconfig make make run

TODO List

Part1

  • [ ] 1. 打印"Hello, World!"
  • [ ] 2. 切换异常等级
  • [ ] 3. 实现简易的printk打印函数
  • [ ] 4. 中断实验
  • [ ] 5. 进程创建实验

Part2

  • [ ] 1. 进程调度实验
  • [ ] 2. 中断注册
  • [ ] 3. 让进程运行在用户态
  • [ ] 4. 添加系统调用
  • [ ] 5. 实现一个简单的物理内存页面分配器
  • [ ] 6. 实现一个简单的小块内存分配器
  • [ ] 7. 建立恒等映射页表
  • [ ] 8. 实现简单的虚拟内存管理
  • [ ] 9. 实现缺页异常机制
  • [ ] 10. 实现panic功能和打印函数调用栈
  • [ ] 11. 实现用户空间的内存分配函数
  • [ ] 12. 写时复制功能的实现
  • [ ] 13. 进程生命周期管理

Part3

  • [ ] 1. 信号量
  • [ ] 2. 软中断机制
  • [ ] 3. 编写SD卡的驱动
  • [ ] 4. 设计和实现虚拟文件系统层
  • [ ] 5. 实现ext2文件系统
  • [ ] 6. 实现execv系统调用
  • [ ] 7. 实现简单的shell界面
  • [ ] 8. 添加多核SMP的支持

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】