公告

FujoOS公布日延期,以仓库发布为准

文档 架构 分层与内核形态

分层与内核形态

结构上分四层。真正需要解释的不是“有几层”,而是分界线画在哪、以及为什么画在那里。

内容
应用层 .run 容器(FUJR):原生 FujoOS 程序,以及 Windows / Linux / macOS 二进制
兼容层(用户态) PE / ELF / Mach-O 加载器;API 垫片(kernel32/ntdll、libc、Foundation);Mach trap 垫片;IR 解释器与预翻译
系统服务(Ring3) srv_fs · srv_net · srv_disp · srv_aud · srv_input · srv_pkg · srv_font
内核(Ring0) 调度 · 虚拟内存 · IPC · 系统调用闸门 · 驱动框架
硬件 x86_64(当前)→ arm64(长期)

为什么是混合内核

Ring0 只保留 CPU 相关与空间管理;设备驱动、VFS、网络栈全部下沉到用户态服务——服务进程 + 共享内存 + IRQ fd 硬中断注入。这是 NT / WSL2 式的工程折中:绝大多数“与硬件无关”的代码因此处在可崩溃、可重启、可热升级的环境里。

代价是 IPC 与共享内存的复杂度,以及内核态到用户态的一次往返。收益是一条清晰的边界:Ring0 里的代码必须无懈可击,而它的面积被压到了很小。这条边界与 FUAI 的能力域是同一个思路——把“必须绝对可靠”的部分划小。

调度与内存的两个取舍

调度器 参考 Linux EEVDF 的虚拟时间公平性来保证交互延迟,同时保留 NT 式优先级与“游戏模式”动态提频。取的是两家的长处:公平性保证桌面不卡,优先级保证游戏模式能抢到时间片。
内存 4 KiB 页加 2 MiB 大页,物理内存以 2 MiB 伙伴系统管理;用户空间共享内存经 fujo-map 零拷贝成对映射,配合 GPU 栅栏同步。细节见 内存与地址空间