公告

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

文档 架构 系统调用闸门

系统调用闸门

这是整个设计里最关键的一处,也是“兼容是一等能力”这句话的落地方式:三套 ABI 共享同一内核服务面(POSIX 风格服务 + FujoOS 扩展),差别只在编号映射。

Linux ELF 原生 · 零垫片 Windows PE32+ ntdll 垫片 macOS Mach-O BSD 表 + mach_msg ABI 选择器 内核服务面 POSIX 风格服务 + FujoOS 扩展
琥珀 = 需要垫片的路径 钢青 = 直接映射

三条路为什么不一样

ABI 路径 为什么
Linux x86_64 原始 syscall 号 → 服务表,第一公民 编号稳定且公开,glibc 直接 syscall,不需要用户态垫片,跑原生速度。
Darwin x86_64 BSD 空间(0x2000000|nr)+ Mach trap 空间 需要一层垫片把 mach_msg 映射到本项目的 IPC 端口——好在端口本身就是幂等的 mach port 语义,映射不别扭。
Windows ntdll 垫片,再由 kernel32 / ws2_32 等 shim DLL 转调 Windows 的 syscall 编号不透明、随版本变化,因此不能直接映射;必须停在 ntdll 这一层做转换。
FujoOS 原生 fujo syscall 号(扩展指令集 / 栅栏 / 能力) 三套 ABI 之外的扩展面。FUAI 的 0x81xx–0x83xx、网络的 0x8A04–06 都在这条线上。
诚实边界: “Linux 二进制原生运行”指的是被这台机器接受的那部分系统调用,不是整个 Linux 平台。命名表与实现面的差额在兼容层一节逐条列出,没有藏起来。
延伸阅读: 实现面清单在 兼容 · Linux ABI,编号表在 参考 · 系统调用