扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共3页)
转译和保护
有了IOMMU,每个设备可以分配到一个保护域。这个保护域定义了I/O页的转译将被用于域中的每个设备,并且明确了每个I/O页的读取权限。对于虚拟化来说,VMM可以指定所有设备分配到相同保护域中的一个特定客户操作系统,这将创建一系列为运行在特定客户操作系统中运行所有设备使用的地址转译和访问限制。
IOMMU将页转译缓存在一个TLB(Translation Lookaside Buffer)中。你需要键入保护域和设备请求地址才能进入TLB。因为保护域是缓存密钥的一部分,所以域中的所有设备共享TLB中的缓存地址。
IOMMU决定一台设备属于哪个保护域,然后使用这个域和设备请求地址查看TLB。TLB入口包括读写权限标记以及用于转译的目标系统地址,因此如果缓存中出现一个登入的话,许可标记将被用于决定是否允许该访问。
对于不在缓存中的地址来说(针对特定域),IOMMU会继续查看设备相关的I/O页表格。I/O页表格入口也包括连接到系统地址的许可信息。
因此,所有地址转译最重要么是一次成功的查看,这种情况下,适当的权限标记会告诉IOMMU允许还是阻隔访问,要么最终是一次失败的查看。然后,VMM使用IOMMU能够控制哪些系统页对每个设备(或者保护域中的设备组)是可见的,并明确指定每个域中每个页的读写访问权限。这些是通过控制IOMMU用来查看地址的I/O页表格实现的。
IOMMU提供的转译和保护双重功能提供了一种完全从用户代码、无需内核模式驱动程序操作设备的方式。IOMMU可以被用于限制用户流程分配的内存设备DMA,而不是使用可靠驱动程序控制对系统内存的访问。设备内存访问仍然是受特权代码保护的,但它是创建I/O页表格(而不是驱动程序)的特权代码。
中断处理程序仍需要在内核模式下运行。利用IOMMU的一种方式是创建一个有限制的、包括中断处理程序的内核模式驱动程序,或者从用户代码控制设备。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者