跳转至

多实例通信

通信子系统用命名共享内存、无锁序列队列和有界屏障连接多个 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 必须分表登记,禁止类型混用。
  • 测试实例必须使用唯一共享内存名称。