前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Android匿名共享内存

Android匿名共享内存

作者头像
老马的编程之旅
发布2022-06-22 15:55:28
发布2022-06-22 15:55:28
8080
举报
文章被收录于专栏:深入理解Android深入理解Android

ashmem的使用流程如下:

1.ashmem_create_region创建匿名共享内存区域,本质是调用open系统调用 2.ioctl设置共享内存的名字和大小,设置的名字为/dev/ashmem/,名字的存在就为了能够让其他人找到目标 3.mmap映射文件中的虚拟内存以及物理内存 4.直接对着这一块地址区域读写。 其中ioctl必须设置名字和大小,不然没办法进行映射,因为在映射之前进行了校验。

那么ashmem和Binder有什么区别呢? Binder的mmap时候已经通过伙伴系统绑定了物理页和虚拟内存之间的联系,而Ashmem则是通过缺页中断,调用相关的函数才进行绑定。换句话说Ashmem是按需加载,而Binder则是一开始就通过mmap就分配好。

Ashmem就是打通一块大的内存通道方便进程之间通信大数据。而Binder更加倾向小规模的指令,并且这种指令有明确的方向和顺序,保证每一个指令的可靠性。Binder为了保证每一个指令的可靠做了极其复杂的数据结构进行管理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档