多实例通信
通信子系统用命名共享内存、无锁序列队列和有界屏障连接多个 Zava 实例。Linux 对象
名前缀为 /dev/shm/zava_,Windows 前缀为 Local\Zava_。
四个 Runtime adapter
| Opcode | 名称 | 边界 |
|---|---|---|
0x9A |
SPAWN_PROC |
镜像与 argv 均不超过 4096 字节 |
0x9B |
SEND_MSG |
类型 1..9、payload 不超过 4096 字节、每秒 100 条 |
0x9C |
RECV_MSG |
来源 UUID 过滤、容量检查、超时 |
0x9D |
BARRIER_RUNTIME |
最多 1024 参与者、有界等待 |
消息形状
00 magic "MSG_"
04 sender_uuid[16]
14 type:u16
16 flags:u16
18 payload_len:u32
1C crc32:u32
20 payload[payload_len]
接收方必须验证 magic、消息类型、payload 长度、CRC 和来源 UUID。
共享队列
队列容量为 1024 槽,每槽 64 字节;大 payload 使用 4096 字节 block。producer 与 consumer 使用单调序列,崩溃恢复必须保留 generation,禁止把旧 ready 位当成新消息。
隔离
- Linux 创建权限必须为
0600,并使用O_EXCL/O_NOFOLLOW/O_CLOEXEC。 - 共享段总大小不得超过 1 MiB。
- Windows SOCKET 与 HANDLE 必须分表登记,禁止类型混用。
- 测试实例必须使用唯一共享内存名称。