程序聚合 软件案例 自研操作系统内核

自研操作系统内核

2026-10-22 13:39:53
行业:云计算
载体:操作系统
技术:Assembly language、C++、CMake

业务和功能介绍


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 → 唤醒等待任务。

项目实现

1、整体架构和设计思路,不同模块使用的技术栈
两阶段镜像+宏内核模块化:init.elf 在 UEFI 阶段探测硬件、建页表、加载 kernel.elf,kernel.elf 在高半区运行。内核按 arch/memory/scheduler/drivers/log/shell 拆 OBJECT 库,只经显式接口与 KURD 通信;并发以 per-CPU 为边界,GS 存私有数据,跨核走 IPI/RPC。可观测性优先:printk 唯一出口+符号回溯+panic 取证+首爆探针。技术栈:NASM+UEFI、C++23 freestanding、位图/红黑树、汇编上下文切换、MMIO/ECAM、CMake/Ninja、QEMU/KVM+GDB。
2、“我”的负责模块和结果
作为唯一开发者,我负责架构、内核模块与工具链:引导/页表、BCB/FPA/kpoolmemmgr、per-CPU 调度器与 block_queue、PCIe/NVMe/DMAR/i8042、日志与 kshell_v2、CI 与测试工具。结果:13个月 416次提交、约6.1万行;30余条命令;NVMe/VT-d/DMAR 真机验证;18套测试/回放程序;自建 TCG 批量复现与 GDB 魔法断点 CI。
3、“我”遇到的难点、坑,和解决方案
- 真机 NVMe 首笔 DMA 报 Received Master Abort,QEMU不复现。排除 MMIO/ECAM 后怀疑 IOMMU,用 kshell 在线改写 VT-d 使能位,DMA 当场复活,证实固件 Kernel DMA Protection 强制开启;DMAR 驱动收敛为“映射寄存器+关闭 DMA remapping”。
- WRAITH 双调度竞态是第二场硬仗:SMP+TCG 下 NVMe 并行初始化时随机踩坏内核栈,只在宿主负载抖动时现形(空载 0/60,12路负载2/20),同一bug可降级、HANG、PANIC,甚至异常入口自噬成 #PF→#DF 风暴。为抓它,我搭了整套 CI 管线:tcg-trace 批量连跑(SMP6、超时/体积帽、自动分类)+首爆冻结+QEMU vmcore 转储+离线符号化+IRQ-safe 日志环,累计 200余组复现实验;再用逐执行 trace 观测效应过强、忙等 bisect 压没复现率等实验排除死路,并指挥 AI subagent 做两份静态审查,对“谁能写别人栈”火力覆盖式排查,把候选从 A–F 挤到“跨核同栈并发写”:阻塞者“先发布、后切走”、唤醒不看谁在跑、sched 跨核偷取无 owner 校验。修F1–F5(handoff 登记/wake_pending、调度门、锁内快照、退出栈保护)后,同配方 A/Bbug复现率降到0

示例图片视频


PS
24小时内活跃
方向: 后端-C++、操作系统-操作系统、
交付率:100.00%
相似推荐
陪诊服务预约小程序
立项背景和目标:随着老龄化加深及异地就医人群扩大,独自就诊困难的家庭催生了大量陪诊需求。传统陪诊依赖线下中介,存在信息不透明、服务无标准、资金无保障三大痛点。本项目旨在搭建线上陪诊服务预约平台,连接患者家属与经过资质认证的陪诊师,实现服务标准化、过程可视化、资金托管化。 功能与核心模块: 患者小程序端:服务分类(全程陪诊/代问诊/代办取药/报告代取)、按医院科室时间预约下单、陪诊师展示与筛选、在线支付与资金托管、电子服务协议签署、服务评价 陪诊师端:资质认证上传、订单抢单与接单、日程管理、收入结算 管理后台:陪诊师资质审核、医院科室库维护、订单调度、客服工单、财务对账、优惠券与分销营销 业务流程:家属选择服务→填写就诊信息→支付(资金托管)→平台派单/陪诊师接单→服务前提醒→陪诊师到院按节点服务→家属实时查看服务进度→确认完成→评价→平台向陪诊师结算佣金。
嗨活力健身小程序
嗨活力健身小程序是面向女子健身场馆的生活服务类小程序,基于 uni-app+Vue3 开发,用于满足用户线上看课、预约购课、会员核销、训练记录管理需求。核心包含团课预约、减脂营、专题小团课、券码核销模块;支持按日期筛选课程、查看课程详情、购买单次课程、开通会员;配套训练日历、体重记录、训练打卡、数据排行功能,打通用户从选课、付费预约到课后记录的完整流程,帮助场馆线上引流,降低线下接待压力,提升用户复购。
烘焙电商小程序-东哥面包+
1. 会员体系(核心) 静默登录:小程序启动即通过 wx.login + 后端换取 openId/token,无需用户操作(app.js) 注册/绑定:手机号快速绑定(微信授权免验证码)、自主注册生成电子会员卡号、绑定实体 IC 卡(短信验证码) 会员卡:查看卡号、余额,会员身份标记(isVip)、个人资料(昵称/头像/生日)维护 注销退款:用户可申请注销会员卡并退款(refund-apply 页面 + RefundApply 接口) 2. 付款码(线下消费) 生成消费条码 + 二维码(wxbarcode 渲染),供门店扫码扣款 30 秒倒计时自动刷新付款码;进入页面自动将屏幕调至最亮(方便收银台扫码),离开恢复 3. 充值 微信余额充值(PaymentRequestSec 拉起微信支付) 充值方案从后端系统配置动态获取(GetConfigByKey) 支持扫门店码/店员码进入时携带场景参数,充值时归属对应门店 4. 蛋糕预订商城 商品分类(左侧标签)+ 产品列表 + 商品详情 多规格选择(spec-popup 组件:尺寸/口味等)、定制提货日期(pickDate) 购物车(cart 组件 + 步进器 stepper)、立即购买、订单预览、创建订单 优惠券:下单时查询可用券(GetMyTickets)、领券、券包列表、券规则详情 5. 订单中心 订单列表、订单详情、退货申请(Refund)、取消/退款流程 6. 门店与定位 获取用户定位(gcj02),按距离展示就近门店列表 门店选择、门店详情(电话/导航)、扫门店场景码识别门店
外贸网站平台
独立官网,作为工厂对外唯一品牌阵地;通过 Google SEO、技术内容营销、图纸案例沉淀,持续获取海外精准 B 端询盘;脱离第三方平台流量绑架,沉淀自有客户资产;区分于低价内卷同行,主打高精度、可接复杂 5 轴件、图纸友好、快速报价**的差异化定位;长期支撑外贸冷启动,零投流获客。线上站点只是获客入口,整套流程是【谷歌搜索 → 网站访问 → 提交图纸询盘 → 内部评估报价 → 商务确认 → 生产质检 → 出货交付 → 复购 / 转介绍】。
日历项目-小智ToDo
日历产品整体规划与商业化(C端工具,可迁移至B端/工具类产品) 背景与问题 独立负责日历产品PC端与App端整体规划与迭代。用户侧存在任务杂乱、优先级不清、时间利用率低、周报复盘耗时等问题;产品侧需要从基础日程记录工具升级为一站式时间管理工具,并跑通会员商业化。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服