QSOE Development Blog
QSOE Dev,关于软件开发、编程与技术项目的博客。
文章
QSOE:受 QNX 启发的双内核架构操作系统
一个免费的类QNX操作系统(2003)
作者回顾2003年发起的RadiOS项目,这是一个兼容QNX的微内核操作系统。如今该理念演变为QSOE,支持64位RISC-V架构,可在真实硬件上运行。 文章展示了从汇编语言到现代RISC-V架构的技术演进历程,体现了长期技术追求的延续性。
QSOE/L:首次从真实存储启动引发的死锁排查
作者在将 QSOE/L 移植到真实 NVMe 存储时遇到启动死锁。通过对比 QEMU 和另一版本 QSOE/N 的行为差异,排除了常见的指令缓存一致性 Bug。 最终定位到 taskman 进程在等待文件系统响应时,因同步机制循环依赖导致死锁。文章详细展示了利用硬件差异进行故障排除的工程思路。
QSOE/L:在 seL4 上运行相同的用户空间
作者展示了如何在 seL4 微内核上构建兼容 QNX 的用户空间,重点解决了 IPC 限制、能力泄漏和 SMP 同步等底层工程难题。 通过重构任务管理器和内存回收机制,实现了进程的稳定创建与销毁,并在 QEMU 中完成了从启动到 Shell 交互的全流程验证。
QSOE/N 第三部分:在 HiFive Unmatched 真机上首次启动
作者记录了将自研微内核 QSOE/N 从 QEMU 模拟器移植到 SiFive HiFive Unmatched 真机的过程。文章详细分析了五个主要障碍,包括镜像头格式、PCI 兼容性、物理内存管理及 CPU 拓扑识别等问题。 重点解决了 RISC-V 架构特有的指令缓存一致性(fence.i)和线程调度问题。最终成功在真机上获得交互式 Shell,并提到…
QSOE/N 第二部分:从微内核到完整操作系统
作者详细记录了将 Skimmer 微内核扩展为完整操作系统 QSOE/N 的过程,实现了进程管理、C 库及驱动。核心创新在于将 POSIX 文件描述符直接映射为内核连接 ID,使读写操作无需经过 taskman 系统进程,从而优化了性能。 文章还深入剖析了多进程地址空间切换、同步对象 Bug 修复以及 POSIX 兼容性测试套件的实现细节。这是系列文章的第…
QSOE/N 第一部分:证明核心(Skimmer v0.1–v0.5)
作者从零开始为64位RISC-V编写微内核Skimmer,结合DragonFly BSD并发模型与QNX IPC设计。通过v0.1到v0.5迭代,解决了SMP竞争、中断处理和同步IPC等核心问题。 文章详细记录了从基础引导到复杂压力测试的全过程,包括具体的Bug修复和调试方法论,证明了内核核心的稳定性。
QSOE操作系统的诞生始末
作者讲述开发类QNX操作系统QSOE的起源。因争取QNX源码开源未果,决定基于形式化验证微内核seL4进行移植,并随后开发了自定义内核Skimmer以支持多核并发。 项目采用双内核架构,用户态代码完全共享。文中详细记录了从构思、命名到技术选型及早期实现的完整过程,包含大量底层系统设计细节。