Cloud stacks must isolate application components, while permitting efficient data sharing between components deployed on the same physical host. Traditionally, the MMU enforces isolation and permits sharing at page granularity. MMU approaches, however, lead to cloud stacks with large TCBs in kernel space, and page granularity requires inefficient OS interfaces for data sharing. Forthcoming CPUs with hardware support for memory capabilities offer new opportunities to implement isolation and sharing at a finer granularity. We describe cVMs, a new VM-like abstraction that uses memory capabilities to isolate application components while supporting efficient data sharing, all without mandating application code to be capability-aware. cVMs share a single virtual address space safely, each having only capabilities to access its own memory. A cVM may include a library OS, thus minimizing its dependency on the cloud environment. cVMs efficiently exchange data through two capability-based primitives assisted by a small trusted monitor: (i) an asynchronous read-write interface to buffers shared between cVMs; and (ii) a call interface to transfer control between cVMs. Using these two primitives, we build more expressive mechanisms for efficient cross-cVM communication. Our prototype implementation using CHERI RISC-V capabilities shows that cVMs isolate services (Redis and Python) with low overhead while improving data sharing.
翻译:云层层必须分离应用组件, 同时允许在同一物理主机上部署的部件之间高效共享数据。 传统上, MMU强制实施隔离, 允许在页面颗粒上共享数据。 但是, MMU 方法导致在内层空间与大型 TCB 共享云层堆叠, 而页面颗粒化则需要低效的OS界面来共享数据。 即将到来的具有记忆能力硬件支持的CPU为在微小颗粒度上实施隔离和共享提供了新的机会。 我们描述的是CVMS, 这是一种类似于VM的新型抽象, 使用存储能力来隔离应用应用程序组件, 同时支持高效的数据共享。 cVMS 共享一个单一的虚拟地址空间, 每一个都只有访问自身记忆的能力。 CVMS可能包括一个图书馆OS, 从而最大限度地减少其对云层环境的依赖性。 cVMS 高效地交换数据, 通过一个小信任的监视器协助两个基于能力的基于能力的原始原始原始设备 。 (i) 一个与低缓冲的读写界面连接, ;以及 (ii) 一个呼叫界面, 将连接到传输系统, 共享我们的两个原始数据共享系统。