首页 > 系统相关 >Linux内存从0到1学习笔记(8.19 ION (一))

Linux内存从0到1学习笔记(8.19 ION (一))

时间:2024-07-19 22:28:12浏览次数:15  
标签:dma ION 8.19 内存 Linux Android buf 共享

一,ION简介

ION(Interprocess Communication Over Non-Contiguous Memory)即“跨进程非连续内存通信”。是Android系统中负责内存管理的关键子系统,由 Google 在 Android 4.0 ICS 中引入,旨在解决当时 Android 设备中存在的多样化内存管理机制所带来的问题,也就是用归一化的思想来解决不同 Android 设备上内存管理接口分散的问题。

举个例子,在使用 NVIDIA Tegra 的 Android 设备上,有 "NVMAP";在使用 TI OMAP 的 Android 设备上,有 "CMEM";而在使用 Qualcomm MSM 的 Android 设备上,则有 "PMEM"。这三家 SoC 供应商都在向 ION 过渡。

前面我们讨论过dam_buf,那么我们知道dma_buf 是一个通用的缓冲区共享机制,允许不同设备驱动程序共享物理内存缓冲区,而无需复制数据。它通过文件描述符(file descriptor, FD)来引用缓冲区,支持跨设备和跨进程的内存共享。

而ION内存管理器使用 dma_buf 机制来实现其内存共享功能。具体来说,ION 分配的内存可以通过 dma_buf 导出,从而被其他驱动程序和用户空间进程访问。

二,ION与DMABUF对比

ION 和 DMABUF 共享一些共同的概念。dma_buf 概念类似于 ion_buffer,而 dma_buf_attachment 的作用类似于 ion_handle。ION 和 DMABUF 都使用匿名文件描述符作为可以传递的对象,以提供对共享缓冲区的引用计数访问。另一方面,ION 侧重于从预设内存池中分配和释放内存,以一种

标签:dma,ION,8.19,内存,Linux,Android,buf,共享
From: https://blog.csdn.net/huangyabin001/article/details/140479572

相关文章

  • Carousel of Combinations
    由圆排列的公式,不难有\(C(n,k)=(_k^n)\times\frac{k!}{k}\)于是答案为\(\sum_{i=1}^{n}\sum_{j=1}^{i}((_j^i)\cdot(j-1)!)mod\spacej\)显然交换求和次序,有\(\sum_{i=1}^{n}\sum_{j=i}^{n}((_i^j)\cdot(i-1)!)mod\spacei\)由威尔逊定理可将\(i\)限定在质数和\(4\)之中,再由......
  • 攻防世界Web_python_template_injection(新手模式)
    二、Web_python_template_injection1.基本知识点模版引擎模版引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,这大大提升了开发效率,良好的设计也使得代码重用变得更加容易,但是模板引擎也拓宽了我们的攻击面,注入到模板中的代码可能会引发RCE或者XSS。在Jinja2......
  • CF466E Information Graph 题解
    题目链接LuoguCodeforces题意简述某公司中有\(n\)名员工。为方便起见,将这些员工从1至\(n\)编号。起初,员工之间相互独立。接下来,会有以下\(m\)次操作:员工\(y\)成为员工\(x\)的上司。保证此前\(x\)没有上司。员工\(x\)拿到一份文件并签字,随后交给他的上司......
  • (ECCV2024论文解读)GPSFormer: A Global Perception and Local Structure Fitting-based
    目录摘要1、引言2、方法2.1 背景3.2 全局感知模块2.3 局部结构拟合卷积泰勒级数局部结构拟合卷积显式结构引入2.4 GPSFormer点云分类部件分割任务3、实验3.13D形状分类ScanObjectNN数据集上的形状分类ModelNet40数据集上的形状分类3.2部件分割3.3小样本分类3.4消融研究全局感......
  • P1182 数列分段 Section II
    传送锚点:数列分段SectionII-洛谷题目描述对于给定的一个长度为\(N\)的正整数数列\(A_{1\simN}\),现要将其分成\(M\)(\(M\leqN\))段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列\(4\2\4\5\1\)要分成\(3\)段。将其如下分段:\([4\2][4\5][1......
  • 【发现】Rust-for-Linux_的成败得失
    https://www.usenix.org/system/files/atc24-li-hongyu.pdfRFL(RustforLinux)从2013年开始筹备进入Linux内核,自从2022年以来,合并了20K行代码到Linux主线,成为了Linux除了ebpf和io_uring之外最活跃的子系统。本文主要回答了3个问题:RFL现状如何:RFL的代码主......
  • Linux中进程间通信--匿名管道和命名管道
        本篇将会进入Linux进程中进程间通信,本篇简要的介绍了Linux中进程为什么需要通信,进程间通信的常用方式。然后详细的介绍了Linux进程间的管道通信方式,管道通信分为匿名管道和命名管道,本篇分别介绍了其实现的原理,以及使用Linux中的系统调用,用代码实现了这两......
  • Linux驱动开发-06蜂鸣器和多组GPIO控制
    一、控制蜂鸣器1.1控制原理 我们可以看到SNVS_TAMPER1是这个端口在控制着蜂鸣器,同时这是一个PNP型的三极管,在端口输出为低电平时,蜂鸣器响,在高电平时,蜂鸣器不响 1.2在Linux中端口号的控制        gpiochipX:当前SoC所包含的GPIO控制器,我们知道I.MX6UL/I.MX6ULL......
  • Linux配置jdk环境变量
     首先再官网下载jdk1.8下载地址:JavaDownloads|Oraclehttps://www.oracle.com/java/technologies/downloads/ 然后通过Mobaxtrem将文件拖到linux操作系统中,我的是放在这个位置中的 解压tar-zxvfjdk-8u291-linux-x64.tar.gz 然后我们现在去配置环境变量:我们首......
  • 微云verification-activation code
    1.进入微云新建一个文件夹2.新建一个文件,随便命名,如"激活码集合"3.分享链接图中框起来的就是验证码了4.特征字举例这里采用代码展示总结思路如果要使其过期,只需要将文件改个名字即可,或者不包含"激活码集合"全部代码展示效果展示文件名包含"激活码集合"文......