自研操作系统内核
1、立项背景和目标
SparrowOS 是一个不依赖现成内核、不套用 Linux 代码的 x86-64 宏内核,从 UEFI 固件交接开始逐层自建。立项初衷是摆脱“调库式”的操作系统学习:不使用 libc/STL,不借用现成引导器与驱动框架,把引导、页表、内存、调度、驱动、调试全部亲手实现,让每一行代码都可解释、可观测、可复现;并以多核调度、NVMe 存储等现代先进计算机气氛底层能力为切入点,理解云计算基础设施。目标分三段:先打通真机启动与中断/调度运行时;再补齐 NVMe、键鼠、显示等设备与内核 Shell,使内核能在真实硬件上“自诊断”;最终接入文件系统与用户态,演进为可持续验证的操作系统实验平台。
2、软件功能、核心功能模块
- 引导与内存:init.elf 在 UEFI 阶段完成硬件探测、页表构建与 kernel.elf 加载,内核运行于高半区;实现四级页表、伙伴系统 BCB、空闲页分配器 FPA、kpoolmemmgr 池分配器、地址空间管理与 TLB shootdown。
- 调度与并发:per-CPU 调度器、任务池、内核线程、block_queue 阻塞队列(句柄化登记、出锁后批量唤醒)以及自旋锁/读写锁体系。
- 平台与中断:ACPI 表解析、LAPIC/IOAPIC、AP 多核启动、HPET/TSC/RTC 计时、异常与中断分发框架。
- 设备驱动:PCIe ECAM 枚举、NVMe(SQ/CQ、PRP、读写与完成中断)、DMAR/VT-d、i8042 键鼠、UART 串口、GOP 文本控制台与内嵌字库;NVMe 读写与 VT-d 关闭已真机验证。
- 观测与交互:printk 日志栈、KURD 五层错误模型、panic 取证、内核符号回溯;kshell_v2 将 Shell 核心与前端解耦,30 余条命令可运行在“键盘+屏幕”和“魔法断点+gdb(CI)”两种前端上。
- 规划中:RavenFS 文件系统(用户态原型已完成并通过用例)、用户态与网络通道。
3、业务流程、功能路径描述
启动路径:UEFI → init.elf 枚举 ACPI/PCIe/内存资源 → 建立页表 → 加载 kernel.elf 至高半区 → BSP 初始化内存、中断与调度 → 启动 AP → 探测 NVMe/DMAR/i8042/GOP → 创建内核线程并进入 kshell 会话。
命令路径:按键 → i8042 中断 → 输入事件环 → 前端行编辑 → kshell_v2 分词并在命令红黑树中查找 → 执行处理器把业务日志写入切片 → 前端渲染并归档到会话环;CI 前端只替换输入输出手法,不改动命令逻辑。
存储路径:块请求进入 block_queue 阻塞 → 提交 NVMe SQ → 完成中断 → 消费 CQ → 唤醒等待任务。
云计算