This talk presents a new solution for fine-grained memory protection called Mondriaan Memory Protection (MMP). MMP supports multiple protection domains sharing the same address space. Each domain has its own permissions table which supports (32-bit) word-level protection for arbitrary runs of words at any word boundary. Space overheads are reduced with a compressed permissions table structure, and run-time overheads are reduced by using two-levels of hardware permissions caching. Even under heavy use, space overhead is less than 9% and memory reference overhead is less than 8%. MMP works with linear addresses and so is compatible with existing instruction sets and operating systems.
The talk will cover the obvious and non-obvious data structures that are required for MMP's good performance. The talk will also discuss extensions to MMP which allow a true zero-copy networking implementation underneath an unmodified read system call interface, and present preliminary data on using MMP to enforce module boundaries in the Linux kernel.