1/3 Dune

在CPU虚拟化的硬件支持下,运行Dune的系统允许应用程序在用户态进行CPU特权操作。Dune由一个内核模块与一个在用户态下运行的程序库组成。

可以把Dune简单理解为把应用程序运行在一个虚拟CPU上,但应用程序仍与宿主系统的进程共享其他硬件资源。Dune进程有独立的虚拟内存空间,但是可以通过CR3寄存器访问宿主系统的内存空间,从而实现与宿主系统的进程共享物理内存。

利用Dune可以完成的跨级操作有:异常中断,虚拟内存管理,和内核态。在用户态处理异常避免了权限切换的开销,而且Dune进程可以在用户态控制TLB,批量更新虚拟内存的页缓存,从而提高内存页的命中率。此外,Dune允许在用户态的异常处理函数中检查或跟踪系统调用,利用内核态权限实现沙盒机制,提高系统的安全性。

Dune进程的威胁模型与普通进程无异,因为Dune进程尽管拥有内核特权,但只能改变虚拟CPU的状态。对于外部,Dune无法完成普通进程不能完成的操作。