在计算机领域,IOMMU(Input/Output Memory Management Unit)是一个内存管理单元(Memory Management Unit),它的作用是连接DMA-capable I/O总线(Direct Memory Access-capable I/O Bus)和主存(main memory)。传统的内存管理单元会把CPU访问的虚拟地址转化成实际的物理地址。而IOMMU则是把设备(device)访问的虚拟地址转化成物理地址。为了防止设备错误地访问内存,有些IOMMU还提供了访问内存保护机制。参考下图:

IOMMU的一个重要用途是在虚拟化技术(virtualization):虚拟机上运行的操作系统(guest OS)通常不知道它所访问的host-physical内存地址。如果要进行DMA操作,就有可能破坏内存,因为实际的硬件(hardware)不知道guest-physical和host-physical内存地址之间的映射关系。IOMMU根据guest-physical和host-physical内存地址之间的转换表(translation table),re-mapping硬件访问的地址,就可以解决这个问题。

另外,在AMD的VIRTUALIZING IO THROUGH THE IO MEMORY MANAGEMENT UNIT (IOMMU)文档中,也有一个更全面的总结图:

原文链接:https://nanxiao.me/iommu-introduction/

linux用户态驱动--IOMMU(三)相关推荐

  1. linux用户态驱动--VFIO(一)

    序言 设备驱动可以运行在内核态,也可以运行在用户态,不管用户态驱动还是内核态驱动,他们都有各自的缺点.内核态驱动的问题是:系统调用开销大:学习曲线陡峭:接口稳定性差:调试困难:bug致命:编程语言选择 ...

  2. linux用户态驱动--VIFIO、IOMMU、UIO(二)

    1.UIO的出现,允许将驱动程序用到用户态空间里实现,但UIO有它的不足之处,如不支持DMA.中断等: 2.随着虚拟化的出现,IOMMU也随之出现,IOMMU为每个直通的设备分配独立的页表,因此不同的 ...

  3. linux用户层驱动--VFIO(五)

    概述 VFIO是一套用户态驱动框架,它提供两种基本服务: 向用户态提供访问硬件设备的接口 向用户态提供配置IOMMU的接口 VFIO由平台无关的接口层与平台相关的实现层组成.接口层将服务抽象为IOCT ...

  4. Linux用户态与内核态通信的几种方式(待完善)

    文章目录 1. 内核启动参数 2.模块参数与sysfs 3.sysctl 4.系统调用 5.netlink 6. procfs(/proc) 7.seq_file 8.debugfs 9.relayf ...

  5. linux 用户态与内核态通信方式简介

    我们平常在写代码时,一般是在用户空间,通过系统调用函数来访问内核空间,这是最常用的一种用户态和内核态通信的方式.(关于 Linux 用户态和内核态可以参考 xx) 除此之外,还有以下四种方式: pro ...

  6. linux用户层驱动--VFIO(四)

    VFIO--将设备暴露到用户态 在开始之前我们先要说一个东西就是 DMA,直接让设备访问内存,可以不通过 CPU 搬运数据. 这是一个比较简单的体系结构图,设备 和 CPU 通过存储控制器访问存储器. ...

  7. JVM内存划分、Linux用户态、内核态简介

    JVM内存划分 1.在Java运行的时候 JVM虚拟机拿到自己能支配的内存 将内存进行分割2.本地方法栈存储是C++ native方法3.程序计数器指向程序当前运行的位置4.方法区存储元数据信息在jd ...

  8. Linux 用户态与内核态的交互——netlink 篇

    [size=4]Linux 用户态与内核态的交互 --netlink 篇[/size] 作者:Kendo 2006-9-3 这是一篇学习笔记,主要是对<Linux 系统内核空间与用户空间通信的实 ...

  9. [中英对照]User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序...

    如对Linux用户态驱动程序开发有兴趣,请阅读本文,否则请飘过. User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序 ...

最新文章

  1. oracle手动启动服务
  2. 获香港证监会颁发牌照的弘量研究,正用智能投顾帮助金融机构降低成本,提升资产管理能力 By 藤子2017年10月09日 17:16 撰文 | 藤子 2015 年,雷春然和黄耀东都是在香港科技大学的
  3. Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群
  4. GeosparkViz 可视化
  5. C语言typedef小结1(转载自百度百科)
  6. [设计模式] - Proxy代理模式
  7. 【算法】验证哥德巴赫猜想
  8. python中关于sklearn 0.18的错误—— cannot import name comb
  9. Cache之全相连映射
  10. 微服务面试题 - Spring Cloud
  11. 【学习总结匈牙利算法到KM算法】
  12. 闪耀光栅 (DMD) 的衍射效应
  13. 并网光伏发电系统(simulink仿真)
  14. 计算机一级怎么截图保存到桌面,电脑怎么截图?截屏?(四种方法),划重点了...
  15. 【Web3】什么是Web3?一个新的去中心化网络,或是最新的营销流行语
  16. 雅利安人覆灭了世界三大文明,为何单单在商朝被斩首两万?
  17. 敏捷开发绩效管理之九:阿米巴经营之软件团队经营什么(上)
  18. Python快速爬虫技巧
  19. ThinkSNS/ThinkSNS后台应用管理
  20. 生命不息,折腾不止:Jetson Nano填坑之硬件篇

热门文章

  1. python入门要什么基础-python需要什么基础
  2. python的软件叫什么-django中的app是指什么
  3. python安装哪个版本-python到底安装哪个版本
  4. 学python那本书比较好-Python初学者最应该读的8本书
  5. python零基础怎么学-零基础如何入门Python
  6. python切片语法-Python切片详解
  7. 在windows上的git bash中安装tree 和 linux tree命令使用
  8. python管理包管理工具pip和conda使用,及使用pip和conda创建虚拟环境
  9. 如何用python和pip安装在txt文件中配置好版本的库包
  10. mysql读写分离和组复制_数据库主从复制,读写分离,负载均衡,分库分表分别表达的什么概念?...