Runtime 架构
Zava Runtime 是静态 x86-64 映像。CLI、HTTP、WebSocket、计时器和信号通过同一个 有界主循环调度,没有后台线程池。
+--------------------+
stdin/signals -->| CLI + main loop |<-- timer
HTTP/WS -------->| poll (19 entries) |
+---------+----------+
|
+----------+------------+-------------+-----------+
| | | | |
identity memory/journal fs network skills
| | |
+--------- communication --+
|
syscall layer
Linux / Windows
九个子系统
| 子系统 | 关键入口 | 冻结边界 |
|---|---|---|
| 身份 | runtime/identity/identity.asm |
UUID 16 字节,目录私有 |
| 记忆 | runtime/memory/journal.asm |
CRC、追加、fsync |
| 文件 | runtime/fs/fs_resolve_path.asm |
白名单、selector、fd 表 |
| 网络 | runtime/net/net_init.asm |
DNS 校验、16 socket 槽 |
| 技能 | runtime/skills/skill_init.asm |
descriptor 160 字节 |
| 通信 | runtime/comm/shm_init.asm |
1 MiB、0600、CRC |
| CLI | runtime/cli/argv_parse.asm |
输入 4096 字节、固定命令 |
| HTTP | runtime/http/http_server.asm |
64 KiB、精确路由 |
| 主循环 | runtime/main_loop.asm |
19 pollfd、50 ms tick |
启动顺序
runtime/runtime.asm 依次加载身份、journal、文件、共享内存、网络、技能、信号和
HTTP,最后进入 runtime_main_loop。任一步失败都必须关闭此前已打开的资源。
syscall 抽象
runtime/syscall/syscall_table.asm 声明 20 个统一接口:open/read/write/close、
mmap/munmap、socket/connect/send/recv/bind/listen/accept/poll、fsync/unlink/mkdir/
stat/rename/gettime。Linux 直接使用 syscall;Windows adapter 调用 Kernel32/Winsock,
但上层返回码保持一致。
退出与崩溃
SIGINT/SIGTERM 只设置标志;主循环在安全点停止监听、排空连接、保存 CLI 历史、 刷新审计、关闭共享内存和 journal。SIGSEGV 走一次性崩溃报告并以 139 退出。