内核管什么
内核不是一份功能清单。它管的是几件不能出错、也不能绕过的事:谁能用 CPU、谁占哪块内存、谁可以发系统调用、出了错留给谁看。其余的功能都长在这几件事上面。
| 管的事 | 怎么管 |
|---|---|
| 机器怎么起来 | 可从三种方式引导——GRUB multiboot、直接把镜像交给虚拟机、或从一张可引导 ISO。起来之后自己认出显示、键鼠、磁盘、网卡。 |
| 内存与处理器 | 4 KiB 页配 2 MiB 大页;抢占式多任务,每个进程有自己的地址空间。一个程序越界,被终止的是它自己,不是整台机器。 |
| 系统调用门 | 三套 ABI 共用同一个内核服务面,只在编号上做映射:Linux 程序直接调、不需要翻译;Windows 与 macOS 各经自己的一层薄垫片。 |
| 存储 | 内核只管块设备怎么读写,文件语义整个交给用户态的文件服务。自己的文件系统能在真实 SATA 盘上落盘、重启后读回。 |
| 出错之后 | 可能失败的路径必须留痕,且痕迹写在可以带外读出的地方——机器死了,账还在。这条纪律是整个项目判据的地基。 |
| 在系统里编译 | 系统自带一套小工具链——汇编器、链接器、一个 C 子集编译器。它编译并运行过自己的 hello 克隆,不用离开这台机器。 |
一件被刻意排除在外的事:
内核里没有推理。模型跑在宿主机上,内核只负责把它的建议送进来、把结果记下来、把不该做的挡回去。所以「内核里的 AI」这句话,准确说法是「内核为 AI 开了一道受管制的门」。
分层:Ring 0 只留两件事
越靠近硬件的代码越难改、越难重启。所以这套系统把「与硬件无关」的部分尽量往上推:驱动、文件系统、网络栈全在用户态。内核那一层只留下 CPU 调度与空间管理。
为什么把驱动挪出去
—— 驱动是系统里最容易出错、也最爱改的一层。放进内核意味着一次写错就带走整台机器;放进用户态,它崩溃可以被重启,还可以单独升级。
硬件的门只开一处
—— 直接读写端口的指令只允许出现在驱动层。别处想碰硬件,必须经过它。规则靠评审和门禁一起守,不靠自觉。
验证读数:每个数字对着一份字节
这些读数不是对着一句「当前版本」说的,是对着一份可以被人取到、也可以被人复跑的字节快照说的。写下来是为了让复核的人拿着同一个东西重跑一遍,而不是听一句「测过了」。
| 项 | 读数 |
|---|---|
并行开发门禁 tools/parallel_gate.py |
VERDICT: OK (8/8) |
| 全量回归(79 例) | 78 PASS · 0 FAIL · 1 FLAKY |
| 镜像预算余量(镜像末 0x2A6950) | 562,864 B ⇒ T = 156.3 波 |
| 池账本 Σ(r+h) = 80,312 B,B = 102,400 B | slack 22,088 B ⇒ T = 308.3 波 |
| 全新克隆可构建(从 index 抽树冷编) | 0 error(预算断言 6/6) |
「T」是把当前余量除以每波的平均增长算出来的——它回答的是「照这个速度还能写多少波」,不是一个性能指标。完整口径写在 路线图 里。
已知边界(诚实记)
- 真机只覆盖一部分 —— 磁盘持久化与 ISO 引导链已经在真机上跑通;视频输出与 USB 驱动还没有。
- 回归里有一例不稳定 —— 它是已知的「连续两个用例抢同一个串口」竞态,重跑即过,归因是环境噪声而不是内核回归。但它是 79 例里唯一不是全绿的一格,所以写在这里。
- 余量的算法有两种读法 —— 历史序列混了内存池迁移前后的两种布局;按同一种布局算,每波增长约 1,148 B,对应约 490 波。两种读法都远高于 50 波的门槛,不影响任何结论。
口径检查:
这一层有了一个可引用的快照,不等于内核已经发布。它是给复核者用的参照物,不是一次对外发布——发布与外部审计仍未达。
从哪儿接着看
内核这一层是地基。上面还站着另外两条线:一条是安全体系,讲 AI 的动作怎么被管住;一条是语言线,讲写系统用的那门语言。三条线在同一个项目里,各自说清自己做到哪儿。