关于 HopeOS
类型
UEFI 操作系统(x86-64)
目标
学习操作系统内部原理
用户态
ring 3 + Linux 风格 syscall ABI
开发
部分由 AI 辅助编写
HopeOS 是一个从零手写、基于 UEFI 启动的 x86-64 操作系统。它现在已具备内核线程调度、中断与定时器、图形桌面、虚拟文件系统,以及 ring 3 用户态与一套 Linux 风格的 POSIX 系统调用。项目的核心目标不是做一个玩具,而是借此搞清楚一台计算机到底是怎么跑起来的——跑起 Minecraft 只是极远期的趣味终态,学习的过程才是重点。
已经实现的
内存管理
隐式空闲链表堆分配器(mm.c),8 MiB 堆。
中断 / 定时器
自接管 GDT/TSS、256 项 IDT、8259 重映射、PIT 100 Hz、ExitBootServices。
抢占式调度器
内核线程,16 上限,100 Hz 时间片,带栈金丝雀保护。
UEFI 引导链
boot/ 引导加载器加载 KERNEL.EFI。
GUI 桌面
离屏双缓冲 + 脏矩形合成,渲染窗口更高效。
PS/2 键鼠输入
键盘 / 鼠标输入解码与事件路由到活动窗口。
VFS + ramfs
文件系统接入内核,文件可读写。
ring 3 用户态 + 系统调用
分页基础设施、DPL3 描述符、0x80 syscall 门;hello 程序在 ring 3 打印并验证抢占。
POSIX 内核
每进程 fd/cwd、文件 I/O syscall、最小 libc、用户态 shell(fork/execve/重定向)、fork+COW 页表、宿主单测全绿。
开发路线
进行中
按需缺页(demand paging)
在已有 COW + 可返回 #PF 基础上,补齐真正的按需分页。
计划中
可写、持久化文件系统
把 ramfs 内容持久化到磁盘镜像。
计划中
用户态 libc 完善 + 工具链
补齐 malloc / 信号 / stdio 缓冲,可承载第三方程序。
计划中
设备驱动
先网络,再 GPU / 存储(AHCI、NVMe、USB)。
远期
兼容 BusyBox
PIE 加载 + auxv + arch_prctl + mmap/brk + 信号,分 A~E 阶段推进。
极远
承载 JVM → 跑 Minecraft
需要足够 POSIX + GPU 图形,属于极远远期终态,学习旅程本身才是重点。
在线体验
下面是一个纯前端的 HopeOS 模拟器(启动自检 → 桌面 → 终端),可直接在浏览器里操作。 点击「开始」打开开始菜单,或在终端里输入
help 查看命令。 (这是网页演示,并非真实运行的内核。)